Universal MCP server proxy that enables parallel tool execution for servers that don't support it natively.
Many MCP servers handle tool calls sequentially, which can be slow when you need to run multiple tools in parallel. Tool Rave acts as a proxy that:
- Caches handshakes - Stores the initial handshake sequence to replay for each tool call
- Caches discovery - Stores responses to
tools/list,prompts/list, andresources/listcalls - Spawns parallel workers - Creates fresh server processes for each
tools/callrequest - Manages worker pool - Configurable number of concurrent workers (default: 8)
Install using uv:
uv tool install tool-rave-mcpOr install from source:
git clone <repo-url>
cd tool-rave-mcp
uv sync
uv run toolrave --helpInstead of running your MCP server directly:
# Before
python your_mcp_server.py
# After
toolrave python your_mcp_server.pyWorks with any command and arguments:
toolrave python server.py --config config.json --verbose
toolrave uv run --script mcp_server.py
toolrave ./my_server --port 8080Configure via environment variables:
| Variable | Default | Description |
|---|---|---|
TOOLRAVE_MAX_WORKERS |
8 |
Maximum number of parallel workers |
TOOLRAVE_ENABLE_LOGGING |
false |
Enable detailed logging |
TOOLRAVE_LOG_DIR |
~/.toolrave/logs |
Directory for log files |
Example:
export TOOLRAVE_MAX_WORKERS=16
export TOOLRAVE_ENABLE_LOGGING=true
toolrave python server.pyClaude Code Example:
claude mcp add zen -s user -- ~/Projects/zen-mcp-server/.zen_venv/bin/python ~/Projects/zen-mcp-server/server.py
becomes
claude mcp add zen -s user -- toolrave ~/Projects/zen-mcp-server/.zen_venv/bin/python ~/Projects/zen-mcp-server/server.py
- Client connects → Tool Rave spawns server, handles handshake, caches response
- Client requests tools/list → Tool Rave spawns server, caches tools list
- Client calls tool → Tool Rave spawns fresh server, replays handshake, forwards call
- Multiple tool calls → Each gets its own server process running in parallel
This enables true parallel execution even for MCP servers that were designed to handle one request at a time.
# Install dependencies
uv sync
# Run linting
uv run ruff check .
uv run ruff format .
# Type checking
uv run pyright
# Run tests
uv run pytestMIT