Skip to content

Bug Report: Failed to Enable CodeRunner in Claude Desktop on macOS #7

@hutho

Description

@hutho

Problem Description:

After following the setup instructions and extensive troubleshooting, the CodeRunner tool fails to
become usable in Claude Desktop. The "Local MCP servers" settings page shows the coderunner server as
"running", but in the chat window's tool selection menu, it appears as "Disabled". Clicking the
disabled tool does not enable it; it simply closes the tool selection pop-up.

Environment Details:

  • Operating System: macOS
  • Python Version: /opt/homebrew/bin/python3 (Homebrew installation)
  • CodeRunner Installation: Cloned from the main branch of https://github.com/instavm/coderunner.
  • Claude Desktop Version: Latest version as of 2025-08-08.
  • Container Engine: Apple's container tool, version 0.3.0.

Troubleshooting Steps Taken:

  1. Cloned the repository from GitHub.
  2. Executed the install.sh script. This installed the Apple container tool, configured system DNS
    for .local, pulled the instavm/coderunner image, and started the container.
  3. Configured Claude Desktop's claude_desktop_config.json to use the provided mcpproxy.py script as
    per the example.
  4. Initial Failure: The server failed with a ModuleNotFoundError: No module named 'fastmcp'.
  5. Resolution: Installed fastmcp and all other dependencies from requirements.txt using the command:

1 /opt/homebrew/bin/python3 -m pip install --user --break-system-packages -r
/Users/hutho/coderunner/requirements.txt
6. Installed Playwright browsers using /opt/homebrew/bin/python3 -m playwright install.
7. Second Failure: The mcpproxy.py script failed to connect to the server, with logs showing Client
failed to connect: Timed out while waiting for response. and BrokenPipeError.
8. Investigation: Discovered that mcpproxy.py was trying to connect to coderunner.local, which
resolved to 192.168.64.2 instead of 127.0.0.1.
9. Resolution Attempt 1: Modified mcpproxy.py to connect directly to 127.0.0.1. This did not resolve
the issue.
10. Resolution Attempt 2: Modified the Claude Desktop config to run server.py directly, bypassing
the proxy.
11. Third Failure: The server.py script crashed with FileNotFoundError: [Errno 2] No such file or
directory: '/app/uploads'.
12. Resolution: Modified server.py to change the SHARED_DIR path from the hardcoded /app/uploads to
a local path (/Users/hutho/coderunner/uploads), which was created manually.
13. Current State: After reverting the Claude Desktop configuration to use the proxy and ensuring
the container is running, the coderunner server now shows as "running" in the Claude Desktop
settings. However, the tool remains "Disabled" and unusable in the chat interface.

Final Configuration and Logs:

claude_desktop_config.json

1 {
2 "mcpServers": {
3 "coderunner": {
4 "command": "/opt/homebrew/bin/python3",
5 "args": ["/Users/hutho/coderunner/examples/claude_desktop/mcpproxy.py"]
6 }
7 }
8 }

mcp-server-coderunner.log (latest entries)
1 2025-08-08T04:10:45.372Z [coderunner] [info] Server started and connected successfully
  { metadata: undefined }
2 2025-08-08T04:10:45.385Z [coderunner] [info] Message from client: {"method":
  "initialize","params":{"protocolVersion":"2025-06-18","capabilities"
  :{},"clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0} {
  metadata: undefined }
3 [08/08/25 05:10:46] INFO     Starting MCP server 'SSE to Stdio    server.py:1445
4                              Proxy' with transport 'stdio'                      
5 2025-08-08T04:10:46.914Z [coderunner] [info] Message from server: {"jsonrpc":"2.0","id"
  :0,"result":{"protocolVersion":"2025-06-18","capabilities":{"experimental":{},"prompts"
  :{"listChanged":false},"resources":{"subscribe":false,"listChanged":false},"tools":{
  "listChanged":true}},"serverInfo":{"name":"SSE to Stdio Proxy","version":"1.12.4"}}} {
  metadata: undefined }
6 2025-08-08T04:10:46.915Z [coderunner] [info] Message from client: {"method":
  "notifications/initialized","jsonrpc":"2.0"} { metadata: undefined }
7 2025-08-08T04:10:46.922Z [coderunner] [info] Message from client: {"method":
  "tools/list","params":{},"jsonrpc":"2.0","id":1} { metadata: undefined }
8 2025-08-08T04:10:46.922Z [coderunner] [info] Message from client: {"method":
  "resources/list","params":{},"jsonrpc":"2.0","id":2} { metadata: undefined }
9 2025-08-08T04:10:46.965Z [coderunner] [info] Message from server: {"jsonrpc":"2.0","id"
  :1,"error":{"code":0,"message":"Client failed to connect: All connection attempts 
  failed"}} { metadata: undefined }

10 2025-08-08T04:10:46.965Z [coderunner] [info] Message from server: {"jsonrpc":"2.0","id"
:2,"error":{"code":0,"message":"Client failed to connect: All connection attempts
failed"}} { metadata: undefined }
11 2025-08-08T04:10:46.971Z [coderunner] [info] Message from client: {"method":
"prompts/list","params":{},"jsonrpc":"2.0","id":3} { metadata: undefined }
12 2025-08-08T04:10:46.977Z [coderunner] [info] Message from server: {"jsonrpc":"2.0","id"
:3,"error":{"code":0,"message":"Client failed to connect: All connection attempts
failed"}} { metadata: undefined }

I hope this detailed report helps in diagnosing the issue. Thank you for your time and effort.

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