MCP Proxy Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides code coverage reporting for the mcp-proxy project as indicated by the codecov badge at the top of the README.

  • Supports running and extending the proxy as a Docker container, with instructions for creating custom Docker images and Docker Compose setup.

  • Allows installation of the proxy via GitHub repository and displays GitHub license information through a badge.

proxy mcp

Acerca de

El mcp-proxy es una herramienta que permite cambiar entre transportes de servidor. Se admiten dos modos:

  1. stdio a SSE
  2. SSE a stdio

1. stdio a SSE

Ejecute un servidor proxy desde stdio que se conecte a un servidor SSE remoto.

Este modo permite que clientes como Claude Desktop se comuniquen con un servidor remoto a través de SSE aunque no sea compatible de forma nativa.

1.1 Configuración

Este modo requiere pasar la URL al punto final SSE del servidor MCP como primer argumento al programa.

Argumentos

NombreRequeridoDescripciónEjemplo
command_or_urlEl punto final SSE del servidor MCP al que conectarsehttp://ejemplo.io/sse
--headersNoEncabezados a utilizar para la conexión SSE del servidor MCPAutorización 'Portador de mi token de acceso secreto'

Variables de entorno

NombreRequeridoDescripciónEjemplo
API_ACCESS_TOKENNoSe puede utilizar en lugar de --headers Authorization 'Bearer <API_ACCESS_TOKEN>'TU_TOKEN

1.2 Ejemplo de uso

Se supone que mcp-proxy debe ser iniciado por el cliente MCP, por lo que la configuración debe realizarse en consecuencia.

Para Claude Desktop, la entrada de configuración puede verse así:

{ "mcpServers": { "mcp-proxy": { "command": "mcp-proxy", "args": ["http://example.io/sse"], "env": { "API_ACCESS_TOKEN": "access-token" } } } }

2. SSE a stdio

Ejecute un servidor proxy que exponga un servidor SSE que se conecta a un servidor stdio local.

Esto permite conexiones remotas al servidor stdio local. El mcp-proxy abre un puerto para escuchar solicitudes SSE y genera un servidor stdio local que gestiona las solicitudes MCP.

2.1 Configuración

Este modo requiere el parámetro --sse-port . El parámetro --sse-host puede especificar la dirección IP del host en el que el servidor SSE escuchará. Se pueden pasar variables de entorno adicionales al servidor stdio local mediante el parámetro --env . Los argumentos de la línea de comandos para el servidor stdio local deben pasarse después del separador -- .

Argumentos

NombreRequeridoDescripciónEjemplo
command_or_urlEl comando para generar el servidor stdio de MCPuvx mcp-server-fetch
--sse-portNo, disponible al azarEl puerto del servidor SSE para escuchar8080
--sse-hostNo, 127.0.0.1 por defectoLa dirección IP del host en la que escuchará el servidor SSE0.0.0.0
--envNoVariables de entorno adicionales para pasar al servidor stdio de MCPFOO=BAR
--pass-environmentNoPasar por todas las variables de entorno al generar el servidor--entorno sin pase
--allow-originNoPasar por todas las variables de entorno al generar el servidor--allow-cors "*"

2.2 Ejemplo de uso

Para iniciar el servidor mcp-proxy que escucha en el puerto 8080 y se conecta al servidor MCP local:

# Start the MCP server behind the proxy mcp-proxy uvx mcp-server-fetch # Start the MCP server behind the proxy with a custom port mcp-proxy --sse-port=8080 uvx mcp-server-fetch # Start the MCP server behind the proxy with a custom host and port mcp-proxy --sse-host=0.0.0.0 --sse-port=8080 uvx mcp-server-fetch # Start the MCP server behind the proxy with a custom user agent # Note that the `--` separator is used to separate the `mcp-proxy` arguments from the `mcp-server-fetch` arguments mcp-proxy --sse-port=8080 -- uvx mcp-server-fetch --user-agent=YourUserAgent

Esto iniciará un servidor MCP al que se puede conectar en http://127.0.0.1:8080/sse

Instalación

Instalación mediante herrería

Para instalar MCP Proxy para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install mcp-proxy --client claude

Instalación mediante PyPI

La versión estable del paquete está disponible en el repositorio de PyPI. Puede instalarla con el siguiente comando:

# Option 1: With uv (recommended) uv tool install mcp-proxy # Option 2: With pipx (alternative) pipx install mcp-proxy

Una vez instalado, puede ejecutar el servidor con el comando mcp-proxy . Consulte las opciones de configuración para cada modo más arriba.

Instalación a través del repositorio de Github (última versión)

La última versión del paquete se puede instalar desde el repositorio git usando el siguiente comando:

uv tool install git+https://github.com/sparfenyuk/mcp-proxy

[!NOTA] Si ya ha instalado el servidor, puede actualizarlo utilizando el comando uv tool upgrade --reinstall .

[!NOTA] Si desea eliminar el servidor, utilice el comando uv tool uninstall mcp-proxy .

Instalación como contenedor

A partir de la versión 0.3.2, es posible extraer y ejecutar la imagen del contenedor correspondiente:

docker run -t ghcr.io/sparfenyuk/mcp-proxy:v0.3.2-alpine --help

Solución de problemas

  • Problema : Claude Desktop no puede iniciar el servidor: código ENOENT en los registrosSolución : Intente usar la ruta completa del binario. Para ello, abra una terminal y ejecute el comando where mcp-proxy (MacOS, Linux) o where.exe mcp-proxy (Windows). A continuación, use la ruta de salida como valor para el atributo 'command':
    "fetch": { "command": "/full/path/to/bin/mcp-proxy", "args": [ "http://localhost:8932/sse" ] }

Ampliación de la imagen del contenedor

Puedes ampliar la imagen del contenedor mcp-proxy para incluir ejecutables adicionales. Por ejemplo, uv no está incluido por defecto, pero puedes crear una imagen personalizada con él:

# file: mcp-proxy.Dockerfile FROM ghcr.io/sparfenyuk/mcp-proxy:latest # Install the 'uv' package RUN python3 -m ensurepip && pip install --no-cache-dir uv ENV PATH="/usr/local/bin:$PATH" \ UV_PYTHON_PREFERENCE=only-system ENTRYPOINT [ "mcp-proxy" ]

Configuración de Docker Compose

Con el Dockerfile personalizado, puedes definir un servicio en tu archivo Docker Compose:

services: mcp-proxy-custom: build: context: . dockerfile: mcp-proxy.Dockerfile network_mode: host restart: unless-stopped ports: - 8096:8096 command: "--pass-environment --sse-port=8096 --sse-host 0.0.0.0 uvx mcp-server-fetch"

[!NOTA] No olvides configurar el argumento --pass-environment ; de lo contrario, obtendrás el error "No se encontró ningún intérprete en las instalaciones administradas ni en la ruta de búsqueda".

Argumentos de la línea de comandos

usage: mcp-proxy [-h] [-H KEY VALUE] [-e KEY VALUE] [--pass-environment | --no-pass-environment] [--sse-port SSE_PORT] [--sse-host SSE_HOST] [--allow-origin ALLOW_ORIGIN [ALLOW_ORIGIN ...]] [command_or_url] [args ...] Start the MCP proxy in one of two possible modes: as an SSE or stdio client. positional arguments: command_or_url Command or URL to connect to. When a URL, will run an SSE client, otherwise will run the given command and connect as a stdio client. See corresponding options for more details. options: -h, --help show this help message and exit SSE client options: -H KEY VALUE, --headers KEY VALUE Headers to pass to the SSE server. Can be used multiple times. stdio client options: args Any extra arguments to the command to spawn the server -e KEY VALUE, --env KEY VALUE Environment variables used when spawning the server. Can be used multiple times. --pass-environment, --no-pass-environment Pass through all environment variables when spawning the server. --debug, --no-debug Enable debug mode with detailed logging output. SSE server options: --sse-port SSE_PORT Port to expose an SSE server on. Default is a random port --sse-host SSE_HOST Host to expose an SSE server on. Default is 127.0.0.1 --allow-origin ALLOW_ORIGIN [ALLOW_ORIGIN ...] Allowed origins for the SSE server. Can be used multiple times. Default is no CORS allowed. Examples: mcp-proxy http://localhost:8080/sse mcp-proxy --headers Authorization 'Bearer YOUR_TOKEN' http://localhost:8080/sse mcp-proxy --sse-port 8080 -- your-command --arg1 value1 --arg2 value2 mcp-proxy your-command --sse-port 8080 -e KEY VALUE -e ANOTHER_KEY ANOTHER_VALUE mcp-proxy your-command --sse-port 8080 --allow-origin='*'

Pruebas

Compruebe el servidor mcp-proxy ejecutándolo con el servidor mcp-server-fetch . Puede usar la herramienta de inspección para probar el servidor de destino.

# Run the stdio server called mcp-server-fetch behind the proxy over SSE mcp-proxy --sse-port=8080 uvx mcp-server-fetch & # Connect to the SSE proxy server spawned above using another instance of mcp-proxy given the URL of the SSE server mcp-proxy http://127.0.0.1:8080/sse # Send CTRL+C to stop the second server # Bring the first server to the foreground fg # Send CTRL+C to stop the first server

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Permite la interacción con servidores MCP remotos utilizando el transporte SSE en lugar de STDIO para mejorar las capacidades de comunicación.

  1. About
    1. 1. stdio to SSE
      1. 1.1 Configuration
      2. 1.2 Example usage
    2. 2. SSE to stdio
      1. 2.1 Configuration
      2. 2.2 Example usage
    3. Installation
      1. Installing via Smithery
      2. Installing via PyPI
      3. Installing via Github repository (latest)
      4. Installing as container
      5. Troubleshooting
    4. Extending the container image
      1. Docker Compose Setup
        1. Command line arguments
          1. Testing
            ID: zcgl7bfx4e