About As A Proxy
As A Proxy is an MCP server published by 0GiS0 in the Browser category: 🔌 Convierte cualquier MCP Server stdio en un servicio HTTP con FastMCP. Centraliza credenciales y comparte acceso entre múltiples clientes MCP.
The repository has 1 stars and 0 forks, with the last commit 8 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/0GiS0/mcp-server-as-a-proxyThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about As A Proxy
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
🔌 MCP Server Proxy con FastMCP
📝 Artículo relacionado: 🔌 MCP Server como proxy de otro MCP Server
🤔 ¿Qué problema resuelve?
Muchos MCP Servers tienen limitaciones que dificultan su uso en entornos compartidos o remotos:
- ❌ Funcionan via stdio → Solo pueden ejecutarse localmente
- ❌ Requieren credenciales (PAT, API Keys, tokens) → Cada cliente debe configurarlas
- ❌ Necesitan dependencias específicas → Hay que instalarlas en cada máquina
- ❌ No pueden exponerse como servicio remoto
Este proyecto demuestra cómo crear un proxy con FastMCP que resuelve estos problemas:
- ✅ Ejecutar el servidor en una máquina centralizada
- ✅ Acceder desde cualquier cliente MCP via HTTP
- ✅ Compartir el acceso entre múltiples usuarios/agentes
- ✅ Centralizar la autenticación (tokens, PATs, API keys)
- ✅ Desplegar en un servidor o contenedor para acceso remoto
🎯 Caso de ejemplo: Azure DevOps MCP
Este repositorio usa el Azure DevOps MCP Server como ejemplo porque:
- Usa stdio → No puede exponerse directamente como servicio
- Requiere PAT → Necesita un Personal Access Token para autenticarse
- Es muy útil → Permite interactuar con Azure DevOps desde agentes IA
Pero el mismo patrón aplica a cualquier MCP Server que use stdio y/o requiera credenciales.
🏗️ Arquitectura
┌─────────────┐ HTTP/SSE ┌─────────────────┐ stdio ┌──────────────────────┐
│ MCP Client │ ───────────────▶ │ FastMCP Proxy │ ────────────▶ │ MCP Server (stdio) │
│ (Copilot) │ │ (Este Server) │ │ (ej: Azure DevOps) │
└─────────────┘ └─────────────────┘ └──────────────────────┘
│
▼
🔐 Credenciales centralizadas
(PAT, API Keys, Tokens...)
📋 Requisitos
- Python 3.10 o superior
- Node.js 20 o superior (para el ejemplo con Azure DevOps)
- Las credenciales que requiera el MCP Server que quieras proxear
🚀 Instalación
1. Clonar el repositorio
git clone https://github.com/0GiS0/mcp-server-as-a-proxy.git
cd mcp-server-as-a-proxy
2. Instalar dependencias
pip install -e .
3. Configurar variables de entorno
cp .env.example .env
Edita el archivo .env con tus credenciales (ejemplo para Azure DevOps):
AZURE_DEVOPS_ORG=tu-organizacion
ADO_MCP_AUTH_TOKEN=tu-personal-access-token
4. Ejecutar el servidor
python proxy_server.py
El servidor estará disponible en http://localhost:8080/mcp
🔧 Cómo adaptar a otro MCP Server
El código en proxy_server.py se puede adaptar fácilmente para cualquier MCP Server stdio:
from fastmcp import FastMCP
from fastmcp.server.proxy import ProxyClient
from fastmcp.client.transports import StdioTransport
# 1️⃣ Configura el transport para TU MCP Server
transport = StdioTransport(
command="npx", # O python, node, etc.
args=["-y", "@tu-mcp/server"], # Argumentos del servidor
env={
"API_KEY": "tu-api-key", # Variables de entorno necesarias
"OTHER_SECRET": "..."
}
)
# 2️⃣ Crea el proxy
proxy = FastMCP.as_proxy(
ProxyClient(transport),
name="MiMCPProxy"
)
# 3️⃣ Expón via HTTP (Streamable)
if __name__ == "__main__":
proxy.run(transport="http", host="0.0.0.0", port=8080)
🔌 Configuración del Cliente MCP
VS Code (mcp.json)
{
"servers": {
"mi-proxy": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}
Claude Desktop
{
"mcpServers": {
"mi-proxy": {
"url": "http://localhost:8080/mcp",
"transport": "http"
}
}
}
📊 Escalabilidad
NOTA: La arquitectura actual está diseñada para desarrollo y demos. Para producción con múltiples usuarios, consulta el issue #7.
| Escenario | Estado |
|---|---|
| Desarrollo/demos | ✅ Funciona bien |
| Producción (múltiples usuarios) | ⚠️ Requiere configuración adicional |
Opciones para escalar:
- Múltiples instancias + Load Balancer
- Gunicorn con workers:
gunicorn proxy_server:proxy -w 4 -k uvicorn.workers.UvicornWorker - Kubernetes con réplicas
⚠️ Seguridad
IMPORTANTE: Este proxy actualmente no implementa autenticación propia. Para uso en producción, añade una capa de autenticación.
🔐 Autenticación con Microsoft Entra ID
FastMCP incluye un provider nativo para Azure. Documentación completa: FastMCP Azure Integration
from fastmcp.server.auth.providers.azure import AzureProvider
auth_provider = AzureProvider(
client_id="tu-app-client-id",
client_secret="tu-client-secret",
tenant_id="tu-tenant-id",
base_url="http://localhost:8080",
required_scopes=["mcp-access"],
)
proxy = FastMCP.as_proxy(
ProxyClient(transport),
name="MiProxy",
auth=auth_provider # 👈 Añadir autenticación
)
📚 Referencias
🌐 Sígueme en Mis Redes Sociales
Si te ha gustado este proyecto y quieres ver más contenido como este, no olvides suscribirte a mi canal de YouTube y seguirme en mis redes sociales:
📄 Licencia
MIT
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.