Skip to main content

MCP Tool Transform Proxy

A Python CLI that proxies remote MCP servers while applying configurable tool transformations (name, description, arguments). Sits transparently between MCP clients (like Claude Desktop) and remote MCP servers.

Installation

pip install mcp-transform-proxy

Quick Start

  1. Create a configuration file:
{
  "mcpServers": {
    "myserver": {
      "url": "https://my-mcp-server.example.com/mcp",
      "tools": {
        "original_tool": {
          "description": "Enhanced description with context about when to use this tool"
        }
      }
    }
  }
}
  1. Run the proxy:
mcp-transform-proxy --config config.json

Configuration

Full Configuration Example

{
  "proxy": {
    "name": "MyToolProxy",
    "transport": "stdio",
    "port": 8080
  },
  "mcpServers": {
    "weather": {
      "url": "https://weather-api.example.com/mcp",
      "transport": "sse",
      "tools": {
        "get_weather": {
          "name": "check_weather",
          "description": "Check current weather. Use when user asks about weather.",
          "arguments": {
            "units": {
              "default": "metric",
              "hide": true
            },
            "location": {
              "name": "city",
              "description": "City name to check"
            }
          }
        },
        "internal_tool": {
          "enabled": false
        }
      }
    }
  }
}

Configuration Reference

Proxy Settings

Field Type Default Description
name string "MCP Transform Proxy" Name of the proxy server
transport "stdio" | "http" "stdio" Transport mode
port integer 8080 HTTP port (only used with http transport)

Server Settings

Field Type Required Description
url string Yes URL of the upstream MCP server
transport "streamable-http" | "sse" No Transport for upstream connection
tools object No Tool transformations (keyed by tool name)

Tool Transformations

Field Type Default Description
name string null Rename the tool
description string null Replace tool description
enabled boolean true Set to false to hide the tool
arguments object {} Argument transformations

Argument Transformations

Field Type Default Description
name string null Rename the argument
description string null Replace argument description
default any null Set a default value
hide boolean false Hide argument from clients

Tool Name Prefixing

FastMCP's composite proxy automatically prefixes tool names with the server name. For example, if you have a server named weather with a tool get_forecast, the prefixed name will be weather_get_forecast.

When configuring tool transforms, use the original tool name (without prefix) in your config - the proxy handles prefixing internally.

CLI Options

Usage: mcp-transform-proxy [OPTIONS]

Options:
  -c, --config PATH      Path to JSON config file (required)
  -t, --transport TEXT   Override transport mode (stdio or http)
  -p, --port INTEGER     Override HTTP port
  --version              Show version
  --help                 Show this message and exit

Container Usage

Running with Podman/Docker

# Pull the image
podman pull quay.io/bbrowning/mcp-transform-proxy:latest

# Run with a config file
podman run -v ./config.json:/config/config.json:ro \
  quay.io/bbrowning/mcp-transform-proxy:latest

# Run in HTTP mode for testing
podman run -p 8080:8080 -v ./config.json:/config/config.json:ro \
  quay.io/bbrowning/mcp-transform-proxy:latest \
  --config /config/config.json --transport http

Building the Container

# Build with podman
make build-container

# Build with docker
make build-container CONTAINER_ENGINE=docker

OpenShift Deployment

See docs/openshift-deployment.md for deploying to OpenShift with Kustomize manifests.

Development

# Clone the repository
git clone https://github.com/bbrowning/mcp-transform-proxy.git
cd mcp-transform-proxy

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run linter
ruff check .

# Run type checker
mypy src

License

MIT

Metadata

Release files for mcp-transform-proxy 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-transform-proxy 0.1.2
File Size Uploaded Provenance
mcp_transform_proxy-0.1.2.tar.gz 133.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-transform-proxy 0.1.2
File Interpreter ABI Platform
mcp_transform_proxy-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 140.6 kB

Release files / mcp_transform_proxy-0.1.2.tar.gz

Download URL mcp_transform_proxy-0.1.2.tar.gz
Size 133.7 kB
Tags Source
SHA-256 checksum
How to use checksums
356f33b9dba356b646bd6fb6d409b2ca3530a5dcdf67e54eaf30287c27abc96e
BLAKE2b-256 checksum
How to use checksums
2bb5d8994c0888fc3d1e8adc805dfcf86994dcafb3fc35073f6b95c75e27ba47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Release files / mcp_transform_proxy-0.1.2-py3-none-any.whl

Download URL mcp_transform_proxy-0.1.2-py3-none-any.whl
Size 7.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b3c8efeff4372b9ea9eb874143148e7ee17e0c4dfde7be3f2a96c003e3f6676
BLAKE2b-256 checksum
How to use checksums
d6507726d6a0be8a05e2293158cf7493d6268d65af8d30b98571a646bcdbe47d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.9

Security for mcp-transform-proxy 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page