This Python bridge converts MCP stdio communication to Netdata's MCP over WebSocket.
- Python 3.7+
- websockets library
The easiest way to set up the Python bridge is to use the included build script, which creates a virtual environment (recommended for most Linux distributions where pip is restricted to virtual environments):
# Make the build script executable (if needed)
chmod +x build.sh
# Run the build script
./build.shThe script will:
- Check if Python 3 is installed
- Create a virtual environment in the
venvdirectory if it doesn't exist - Install the required websockets dependency in the virtual environment
- Generate a requirements.txt file for reproducibility
After running the build script:
# Activate the virtual environment
source venv/bin/activate
# Run the bridge
python nd-mcp.py ws://localhost:19999/mcp
# When finished, deactivate the virtual environment
deactivateOr run it directly with the virtual environment's Python:
./venv/bin/python nd-mcp.py ws://localhost:19999/mcpIf your system allows global pip installations:
pip install websocketsThe script can be run directly as an executable (the shebang line will use the system's Python):
./nd-mcp.py ws://<ip>:19999/mcpOr explicitly with Python:
python nd-mcp.py ws://<ip>:19999/mcpWhen using a virtual environment, run it with the environment's Python:
./venv/bin/python nd-mcp.py ws://<ip>:19999/mcpWhere <ip> is either localhost or the IP address where a Netdata instance is listening.
To use this bridge with Claude Desktop:
- In Claude Desktop settings, configure the Custom Command option:
python /path/to/stdio-python/nd-mcp.py ws://localhost:19999/mcp- If your Netdata instance is running on a different machine, replace
localhostwith the appropriate IP address.
The bridge:
- Establishes a WebSocket connection to the specified Netdata MCP endpoint
- Reads from standard input and sends to the WebSocket
- Receives messages from the WebSocket and writes to standard output
- Handles both directions simultaneously
- Automatically reconnects if the connection is lost, with exponential backoff
This bridge implements robust connection handling:
- Automatic Reconnection: If the WebSocket connection is lost, the bridge will automatically attempt to reconnect
- Exponential Backoff: Reconnection attempts use exponential backoff with jitter to avoid overwhelming the server
- Message Queuing: Messages sent while disconnected are queued and delivered once reconnected
- Connection Status Logging: The bridge logs connection status to stderr for monitoring
The reconnection algorithm starts with a 1-second delay and doubles the wait time with each attempt, up to a maximum of 60 seconds. Random jitter is added to prevent connection storms.
- Netdata MCP implements the JSON-RPC 2.0 protocol
- Messages that don't conform to the JSON-RPC 2.0 format are silently ignored
- The bridge passes messages directly without any modification