Skip to content

mcp-remote: Write operations hang intermittently while read operations work fine #1720

@holger539

Description

@holger539

Description

When using mcp-remote as a bridge between Claude Desktop and a local MCP server (Tana Local API at http://localhost:8262/mcp), write operations (import_tana_paste) hang intermittently — the loading spinner runs indefinitely with no error, no timeout, and no result. Read operations (list_workspaces, search_nodes, read_node) on the same server work fine at the same time.

Key evidence: Direct HTTP works, mcp-remote doesn't

  • Claude Code connects directly via HTTP transport to the same Tana Local API → import_tana_paste always works
  • Claude Desktop must go through mcp-remoteimport_tana_paste hangs sporadically

Same server, same operation, same payload size — the only difference is the mcp-remote bridge layer.

Environment

  • mcp-remote 0.1.38 (pinned)
  • macOS (Darwin 25.3.0)
  • Claude Desktop (latest)
  • MCP server: Tana Local API (http://localhost:8262/mcp)

Config

{
  "tana-desktop": {
    "command": "/opt/homebrew/bin/npx",
    "args": ["-y", "mcp-remote@0.1.38", "http://localhost:8262/mcp"],
    "env": {
      "PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    }
  }
}

Reproduction

  • Not reliably reproducible — happens sporadically
  • Small payloads (single node import) also affected
  • Read operations on the same connection continue to work when writes hang
  • Occurs across restarts and reinstalls of Claude Desktop

Workaround

  • Claude Desktop Reload (View → Reload) fixes it temporarily
  • Deleting stale lock files in ~/.mcp-auth/mcp-remote-*/ sometimes helps (lock files with dead PIDs block new connections)
  • Migrating auth cache after silent version updates helps for that specific failure mode

Related issues

This may be related to SSE connection handling in mcp-remote. The connection appears to go stale silently for write operations while maintaining enough state for reads to continue working. No timeout error is ever thrown — the client just waits indefinitely.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions