A proxy for MCP servers that lets you add custom tools, hide existing ones, and aggregate multiple upstream servers
Project description
mcp-remixer
A proxy for MCP servers that lets you add custom tools, hide existing ones, and aggregate multiple upstream servers into a single interface.
Features
- Aggregate multiple MCP servers - Combine multiple MCP servers into one
- Automatic tool name resolution - Handles conflicting tool names across upstream stream (e.g.,
server_a.searchvsserver_b.search) - Add custom tools - Write Python functions that become MCP tools
- Hide tools - Filter out tools you don't want exposed
- Chain tools - Custom tools can call upstream tools
- Graceful degradation - Optional upstreams won't block startup
- Environment variable support - Use
.envfiles and${VAR}expansion - Audit logging - Log all MCP transactions to JSON files for compliance and debugging
Installation
# Clone the repository
git clone https://github.com/DavidJBianco/MCP-Remixer.git
cd MCP-Remixer
# Install dependencies
uv sync
Quick Example
# mcp-remixer.yaml
upstreams:
filesystem:
transport: stdio
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/docs"]
hidden:
tools:
- "write_file" # Hide this tool from clients
custom_tools:
- "./tools/my_tools.py"
# Optional: Enable audit logging
audit:
enabled: true
log_file: ./audit.jsonl
truncate: true # Truncate large fields (recommended)
max_content_length: 1024 # Per-field limit in bytes
# tools/my_tools.py
from mcp_remixer import tool, UpstreamClient
@tool(description="Read and summarize a file")
async def summarize_file(path: str, upstream: UpstreamClient):
result = await upstream.call_tool("read_file", {"path": path})
content = result.content[0].text
return f"Summary: {content[:100]}..."
uv run mcp-remixer --config mcp-remixer.yaml
Documentation
- Quick Start Guide - Get running in 5 minutes
- Configuration Reference - All config options explained
- Custom Tools Guide - Writing your own tools
Using with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"my-remix": {
"command": "uv",
"args": ["run", "--directory", "/path/to/MCP-Remixer", "mcp-remixer", "--config", "/path/to/mcp-remixer.yaml"]
}
}
}
Architecture
┌─────────────────────────────────────────────────────────────┐
│ MCP Client (Claude) │
└─────────────────────────────┬───────────────────────────────┘
│ stdio
┌─────────────────────────────▼───────────────────────────────┐
│ mcp-remixer │
│ • Merge tools from upstreams │
│ • Apply prefixes / resolve collisions │
│ • Filter hidden tools │
│ • Register custom tools │
│ • Route tool calls to correct destination │
└─────────────────────────────────────────────────────────────┘
│ stdio │ sse/http │ http
┌───────▼───────┐ ┌─────────▼────────┐ ┌────────▼────────┐
│ filesystem │ │ remote_api │ │ cloud_service │
│ server │ │ server │ │ server │
└───────────────┘ └──────────────────┘ └─────────────────┘
Development
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=mcp_remixer --cov-report=html
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_davidjbianco_mcp_remixer-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_davidjbianco_mcp_remixer-0.1.0.tar.gz
- Upload date:
- Size: 125.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77bf1cbd8053aa2d6b5d3c22f6dd9be08936fae196e3e8f07e1f029f91154acd
|
|
| MD5 |
5215ff84b7334cd5d459b65a51f4cb9f
|
|
| BLAKE2b-256 |
47899b7a2e961c2adfbf7929dd14d01b5dad02be179d83d82243bfdc50cb0e74
|
File details
Details for the file iflow_mcp_davidjbianco_mcp_remixer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_davidjbianco_mcp_remixer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bba4574d03e7f77d19feea62e3bdc5b49aff159bacae4b4990523ec5c69caa4
|
|
| MD5 |
6347a569deb90918e356a6ca0c8133e2
|
|
| BLAKE2b-256 |
7435835b64e6998299a761927008f464111aedc959e629202e7a33d2ec6171b9
|