-
Notifications
You must be signed in to change notification settings - Fork 7
Description
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:
- Cloned the repository from GitHub.
- 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. - Configured Claude Desktop's claude_desktop_config.json to use the provided mcpproxy.py script as
per the example. - Initial Failure: The server failed with a ModuleNotFoundError: No module named 'fastmcp'.
- 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.