Skip to main content

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.search vs server_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 .env files 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

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_davidjbianco_mcp_remixer-0.1.0.tar.gz (125.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Hashes for iflow_mcp_davidjbianco_mcp_remixer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 77bf1cbd8053aa2d6b5d3c22f6dd9be08936fae196e3e8f07e1f029f91154acd
MD5 5215ff84b7334cd5d459b65a51f4cb9f
BLAKE2b-256 47899b7a2e961c2adfbf7929dd14d01b5dad02be179d83d82243bfdc50cb0e74

See more details on using hashes here.

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

Hashes for iflow_mcp_davidjbianco_mcp_remixer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0bba4574d03e7f77d19feea62e3bdc5b49aff159bacae4b4990523ec5c69caa4
MD5 6347a569deb90918e356a6ca0c8133e2
BLAKE2b-256 7435835b64e6998299a761927008f464111aedc959e629202e7a33d2ec6171b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page