Skip to content

[BUG] "MCP Tools Not Available in Conversation Interface Despite Successful Connection" #2682

@didierphmartin

Description

@didierphmartin

MCP Tools Not Available in Conversation Interface Despite Successful Connection

Bug Description

Claude Desktop successfully connects to MCP server and lists tools via tools/list requests, but the tools never become available in the conversation interface for actual use.

Environment

  • Claude Desktop Version: 0.11.3 (latest as of Dec 2024)
  • OS: macOS (Darwin 24.5.0)
  • MCP Server: Custom PHP-based portfolio management server
  • MCP Protocol Version: 2024-11-05

Expected Behavior

After Claude Desktop successfully connects to MCP server and receives tool definitions, the tools should be available for use in conversations (e.g., when asking "list my portfolios").

Actual Behavior

  • Claude Desktop connects successfully to MCP server ✅
  • tools/list requests return proper tool definitions ✅
  • initialize handshake completes successfully ✅
  • BUT: Tools are never made available in conversation interface ❌
  • Claude responds with "I don't have access to..." instead of using available tools

Debug Evidence

MCP Server Debug Log Shows Successful Connection:

[2025-06-27 23:53:34] MCP DEBUG: Handling method: initialize
[2025-06-27 23:53:34] MCP DEBUG: Sending response | Data: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":false}},"serverInfo":{"name":"simple-portfolio-mcp","version":"1.0.0","description":"Simple Portfolio MCP Server for testing"}}}
[2025-06-27 23:53:34] MCP DEBUG: Handling method: tools/list
[2025-06-27 23:53:34] MCP DEBUG: Sending response | Data: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"list_portfolios","description":"List all available portfolios for the user","inputSchema":{"type":"object","properties":[],"required":[]}},{"name":"get_portfolio_details","description":"Get detailed information about a specific portfolio including assets and performance","inputSchema":{"type":"object","properties":{"portfolio_id":{"type":"integer","description":"The ID of the portfolio to retrieve details for"}},"required":["portfolio_id"]}},{"name":"get_portfolio_performance","description":"Get performance metrics for a portfolio","inputSchema":{"type":"object","properties":{"portfolio_id":{"type":"integer","description":"The ID of the portfolio"},"period":{"type":"string","description":"Time period for performance data","enum":["1d","1w","1m","3m","6m","1y"]}},"required":["portfolio_id"]}}]}}

Claude Desktop Configuration:

{
  "mcpServers": {
    "portfolio": {
      "command": "/usr/local/bin/php",
      "args": [
        "/Users/didierphmartin/Documents/claude_code/PortfolioManagement/backend/portfolio-service/simple_mcp_server.php"
      ]
    }
  }
}

MCP Server Tool Definitions:

{
  "tools": [
    {
      "name": "list_portfolios",
      "description": "List all available portfolios for the user",
      "inputSchema": {
        "type": "object",
        "properties": [],
        "required": []
      }
    },
    {
      "name": "get_portfolio_details", 
      "description": "Get detailed information about a specific portfolio including assets and performance",
      "inputSchema": {
        "type": "object",
        "properties": {
          "portfolio_id": {
            "type": "integer",
            "description": "The ID of the portfolio to retrieve details for"
          }
        },
        "required": ["portfolio_id"]
      }
    },
    {
      "name": "get_portfolio_performance",
      "description": "Get performance metrics for a portfolio", 
      "inputSchema": {
        "type": "object",
        "properties": {
          "portfolio_id": {
            "type": "integer",
            "description": "The ID of the portfolio"
          },
          "period": {
            "type": "string",
            "description": "Time period for performance data",
            "enum": ["1d", "1w", "1m", "3m", "6m", "1y"]
          }
        },
        "required": ["portfolio_id"]
      }
    }
  ]
}

Reproduction Steps

  1. Create MCP server with proper stdio-based communication
  2. Add server to Claude Desktop config at ~/Library/Application Support/Claude/claude_desktop_config.json
  3. Restart Claude Desktop completely
  4. Verify connection (tools/list requests appear in server logs)
  5. Try to use tools in conversation (e.g., "list my portfolios")
  6. Observe that Claude responds with "I don't have access to..." instead of using available tools

Key Observations

  • No tools/call requests: Debug logs show repeated tools/list requests but never any tools/call requests, indicating tools are being discovered but not executed
  • Client Info: "clientInfo":{"name":"claude-ai","version":"0.1.0"} suggests Claude Desktop is connecting properly
  • Protocol Compliance: Server implements MCP 2024-11-05 spec correctly with proper JSON-RPC responses

Potential Related Issues

This may be related to:

Manual Testing Confirms Server Works

Direct testing of MCP server via command line shows it works perfectly:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | php simple_mcp_server.php
# Returns proper tool definitions

Impact

This prevents using custom MCP tools in Claude Desktop conversations, making the MCP integration feature effectively non-functional for custom servers despite proper technical implementation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:mcpbugSomething isn't workinghas reproHas detailed reproduction stepsplatform:macosIssue specifically occurs on macOSstaleIssue is inactive

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions