MCP tool call hangs indefinitely (no permission prompt) for stdio server calling npx-based MCP package

Open 💬 0 comments Opened Jul 2, 2026 by gaelp1986

Description

Calling a tool from a locally-configured stdio MCP server (obsidian-mcp, run via npx obsidian-mcp <vault-path>) hangs indefinitely in an interactive Claude Code session — no permission prompt appears, no error, no timeout (confirmed hung 4+ minutes before giving up).

Environment

  • Claude Code CLI (terminal), macOS (Darwin 25.5.0)
  • MCP server configured in project-scoped ~/.claude.json under mcpServers for the project path
  • Server: obsidian-mcp (npm package), invoked as npx obsidian-mcp "<vault path>", type stdio

Steps to reproduce

  1. Configure obsidian-mcp as a project-scoped stdio MCP server in ~/.claude.json.
  2. Start claude from the project directory. /mcp shows the server as "✔ connected" with all 11 tools registered.
  3. Ask Claude to call one of the tools, e.g. mcp__obsidian-mcp__create-note.
  4. The call never resolves — no permission-approval dialog appears, no error, no completion. Confirmed hung 4+ minutes.

What we ruled out

  • Server health: running npx obsidian-mcp "<vault path>" directly in a plain terminal works perfectly — starts instantly, registers the vault, logs all 11 tools, and idles correctly on stdio.
  • Permissions: the tool is on the project's permission allowlist (.claude/settings.local.jsonpermissions.allow), and /mcp shows the server connected.
  • cwd/config loading: confirmed via pwd and /mcp that the session was in the correct project directory with the server loaded.

Additional context

In a background session (claude --bg / background job), the same tool call instead returns immediately with a "the user doesn't want to proceed with this tool use" rejection — even though no prompt was ever shown and nothing was declined. This suggests permission-required MCP tool calls may not be surfaced correctly to the user in either session type: background sessions appear to auto-deny, while foreground sessions hang forever without ever showing the approval prompt.

View original on GitHub ↗