Skip to content

[BUG] MCP connector tools bound on Claude desktop but not surfaced on mobile chat surface #472

Description

@jerylcook-nearsight

What happened?

I'm reporting a reproducible bug in the Claude mobile app where MCP tool calls are never invoked. The client successfully completes the handshake but then restarts the session instead of calling tools.


Environment

  • Client: Claude mobile app (iOS/Android)
  • Transport: Streamable HTTP (MCP spec 2025-11-25)
  • Server: Spring AI 2.0.0-RC2, Java, deployed at https://demo.nearsight.ai/mcp
  • Auth: OAuth 2.1 (Bearer token)
  • Claude web (desktop): works correctly — tools are invoked successfully

Behavior Observed

The mobile client repeatedly completes the MCP discovery handshake but never proceeds to tool invocation. Instead it restarts the session every ~25 seconds:

  1. POST /mcp (session=null) → initialize → 200, new session assigned
  2. POST /mcp → notifications/initialized → 202
  3. POST /mcp → resources/list → 200
  4. POST /mcp → tools/list → 200
  5. POST /mcp → prompts/list → 200
  6. ← no tool call ever arrives →
  7. POST /mcp (session=null) → initialize → 200, NEW session (loop repeats)

This loop was observed repeating at least 3 times within a 2-minute window. The user sees "cannot reach server" in the mobile UI.

Additional anomaly: resources/list is sent twice within the same session with the same request id:1, suggesting a client-side retry/state issue during discovery.


What the server logs confirm

  • Auth token is present (Authorization: Bearer) on every single request — this is not an auth issue
  • All server responses are 200/202 — the server is handling everything correctly
  • No tool call (tools/call) POST ever arrives at the server
  • The same behavior reproduces across multiple fresh sessions

Expected Behavior

After completing discovery (tools/list, resources/list, prompts/list), the mobile client should send a tools/call POST when the user invokes a tool, consistent with how the desktop web client behaves.


Impact

MCP tool calls are completely non-functional on Claude mobile for Streamable HTTP connectors. The desktop web client works correctly against the identical server, confirming this is a mobile client regression.

here's the full configuration detail. Please note again that our MCP Server works successfully in Claude UI (Desktop), the ChatGPT UI (Desktop), and the ChatGPT mobile app. the issue is only in Claude Mobile.

Server stack

Spring AI 2.0.0-RC2 (Java), WebMvcStreamableServerTransportProvider
Transport: Streamable HTTP at https://demo.nearsight.ai/mcp
Protocol version negotiated: 2025-11-25
Auth: OAuth 2.1 / Clerk, Bearer JWT (at+jwt), validated via Spring Security resource server
Fronted by Cloudflare → nginx ingress → Spring Boot on LKE
Capabilities advertised: tools, resources, prompts
Mobile client identifies as: Anthropic/ClaudeAI version 1.0.0

What the server observes (every mobile session, reproducible):

initialize (session=null) → 200, new session assigned
notifications/initialized → 202
resources/list → 200
tools/list → 200 (correct tool count parsed; UI shows it)
prompts/list → 200
No tools/call ever arrives
Session restarts ~25–80s later, loop repeats
Auth header is present on every request — not an auth failure. All responses 200/202.

Notable client-side anomaly: tools/list and resources/list are each sent twice within the same session using the same JSON-RPC id (id:1). This duplicate-ID retry appears in every captured mobile session and never on web desktop.

Exact mobile model response to a tool-invocable query ("what are my asset types"):

"I can't pull this from your live NearSight server in this chat — I don't have the MCP tools callable here (they're only available when building an artifact against demo.nearsight.ai/mcp, not in the regular chat tool surface)."

The model then fabricated an asset-type answer from conversation context rather than calling the tool. The same query on web desktop invokes the tool and returns the correct result.

Environment: Native Claude mobile app (not browser). Identical connector, identical server, identical account — only the surface differs.
Please let me know if you need the full server debug logs — I have timestamped traces covering multiple session restart cycles.

What did you expect to happen?

Expected Behavior

After completing discovery (tools/list, resources/list, prompts/list), the mobile client should send a tools/call POST when the user invokes a tool, consistent with how the desktop web client behaves.

Steps to reproduce

nearsight-mobile-mcp-logs.txt

Area

MCP Connector (adding/managing servers)

MCP Server (if applicable)

https://demo.nearsight.ai/mcp

Error messages or logs

Exact mobile model response to a tool-invocable query ("what are my asset types"):

"I can't pull this from your live NearSight server in this chat — I don't have the MCP tools callable here (they're only available when building an artifact against demo.nearsight.ai/mcp, not in the regular chat tool surface)."

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions