/ Annuaire / Playground / mcp-proxy
● Communauté sparfenyuk ⚡ Instantané

mcp-proxy

par sparfenyuk · sparfenyuk/mcp-proxy

Bridgez les MCPs stdio vers SSE/HTTP diffusable et vice versa — un petit outil Python qui rend les transports interopérables.

sparfenyuk/mcp-proxy est un pont de transport. Deux modes : (1) client stdio se connectant à un MCP SSE/HTTP distant — permet à Claude Desktop de communiquer avec un serveur distant ; (2) serveur SSE enveloppant un MCP stdio local — l'expose via HTTP avec CORS, authentification, plusieurs serveurs nommés.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

proxy.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "proxy": {
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ],
      "_inferred": true
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "proxy",
      "command": "uvx",
      "args": [
        "mcp-proxy"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "proxy": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-proxy"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add proxy -- uvx mcp-proxy

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : mcp-proxy

Comment utiliser un serveur MCP SSE distant dans Claude Desktop

👤 Développeurs ayant une passerelle MCP hébergée par l'équipe ⏱ ~10 min beginner

Quand l'utiliser : Votre équipe exécute une passerelle à https://mcp.team.internal mais Claude Desktop ne parle que stdio.

Prérequis
  • uv ou pipx — brew install uv
Déroulement
  1. Installer mcp-proxy
    Exécutez : uv tool install mcp-proxy✓ Copié
    → mcp-proxy sur PATH
  2. Configurer Claude Desktop
    Ajoutez une entrée MCP : command=mcp-proxy, args=['--headers','Authorization','Bearer $TOKEN','https://mcp.team.internal/sse'].✓ Copié
    → Claude Desktop se connecte au redémarrage
  3. Vérifier
    Dans Claude, demandez : quels outils avez-vous ?✓ Copié
    → Outils distants listés

Résultat : Serveur distant utilisable à partir de clients stdio uniquement.

Pièges
  • En-tête d'authentification non détecté — Utilisez la syntaxe --headers exactement ; certains clients altèrent l'interpolation des variables d'environnement — développez le token vous-même
Combiner avec : mcphub

Comment exposer un MCP stdio local via HTTP pour les coéquipiers distants

👤 Développeurs partageant temporairement un outil local ⏱ ~15 min intermediate

Quand l'utiliser : Vous avez créé un MCP stdio personnalisé et un collègue distant souhaite l'essayer.

Déroulement
  1. Exécutez le proxy en mode entrant
    mcp-proxy --sse-host 0.0.0.0 --sse-port 3333 --named-server my-tool 'uvx my-tool-mcp'✓ Copié
    → Point de terminaison SSE à :3333/my-tool/sse
  2. Créez un tunnel
    Utilisez ngrok ou cloudflared pour exposer 3333 sur une URL publique.✓ Copié
    → URL partageable
  3. Le coéquipier se connecte
    Ils ajoutent l'URL à leur client (via mcp-proxy ou directement si leur client prend en charge SSE).✓ Copié
    → Session partagée fonctionnant

Résultat : Partage ad hoc d'outils locaux.

Pièges
  • Pas d'authentification par défaut — Utilisez --bearer-token ou placez-le derrière l'authentification de base Caddy

Comment servir plusieurs MCPs locaux à partir d'un port proxy

👤 Bricoleurs de homelab ⏱ ~15 min intermediate

Quand l'utiliser : Vous souhaitez une passerelle servant les MCPs github, filesystem et postgres.

Déroulement
  1. Commencez par plusieurs arguments --named-server
    mcp-proxy --sse-port 3333 --named-server gh 'uvx mcp-server-github' --named-server fs 'uvx mcp-server-filesystem ~/src'✓ Copié
    → Points de terminaison /gh/sse et /fs/sse
  2. Connectez chacun dans votre client
    Ajoutez chacun en tant que serveur séparé dans votre client MCP.✓ Copié
    → Les outils des deux apparaissent

Résultat : Un processus, plusieurs MCPs.

Pièges
  • Les serveurs nommés partagent le budget de ressources du proxy — Ne mettez pas de MCPs lourds dans le même proxy que des MCPs légers
Combiner avec : mcphub

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

proxy + mcphub

Utilisez mcp-proxy pour exposer les MCPs stdio que MCPHub peut ensuite agréger via HTTP

Bridgez mon MCP stdio github local vers HTTP avec mcp-proxy, puis enregistrez-le dans le groupe 'dev' de MCPHub.✓ Copié
proxy + unla

Utilisez la passerelle orientée vers le public d'Unla au-dessus du pont stdio du dernier kilomètre de mcp-proxy

Bridgez les MCPs stdio avec mcp-proxy et mettez Unla devant pour OAuth + multi-location.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
(proxy) stdio-to-sse remote_url, headers?, bearer? Connecter un client stdio à un serveur SSE distant free
(proxy) sse-to-stdio named_server spec Exposer un MCP stdio via HTTP free

Coût et limites

Coût d'exécution

Quota d'API
Aucun
Tokens par appel
Pas de surcharge mesurable
Monétaire
Gratuit (MIT)
Astuce
Ignorez le proxy quand votre client prend nativement en charge l'autre transport — moins de pièces mobiles.

Sécurité

Permissions, secrets, portée

Portées minimales : Sortie réseau vers l'URL distante (mode sortant) Liaison de port entrant (mode entrant)
Stockage des identifiants : En-têtes/tokens passés via arguments CLI ou env
Sortie de données : Tout ce que le MCP bridgé fait ; le proxy lui-même est transparent
Ne jamais accorder : N'exposez pas le mode entrant sur 0.0.0.0 sans authentification Ne journalisez pas les tokens dans l'historique du shell — utilisez des variables d'environnement

Dépannage

Erreurs courantes et correctifs

Connexion fermée immédiatement

Le chemin d'URL distant est incorrect — les points de terminaison SSE se terminent généralement par /sse.

Vérifier : curl -N <url>
Erreur CORS dans le client du navigateur

Démarrez mcp-proxy avec --allow-origin ou placez-le derrière un proxy inverse avec des en-têtes CORS.

401 même avec --bearer-token

Le serveur distant s'attend au token sur un en-tête différent (p. ex., X-API-Key). Utilisez --headers pour personnaliser.

SSE se déconnecte après 60s

Délai d'inactivité de l'équilibreur de charge. Augmentez-le ou utilisez HTTP diffusable.

Alternatives

mcp-proxy vs autres

AlternativeQuand l'utiliserCompromis
MCPHubVous avez besoin d'agrégation multi-serveur + routage, pas seulement un bridgePlus lourd — UI, DB, OAuth tous regroupés
UnlaVous souhaitez la conversion REST-to-MCP + passerelleEspace de problèmes différent
supergatewayVous préférez un bridge stdio-to-SSE JavaScriptDépendance Node

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills