MCP Router
Una puerta de enlace unificada para enrutar solicitudes a múltiples servidores del Protocolo de Contexto de Modelo.
Documentación
MCP Anywhere
Una pasarela unificada para servidores del Protocolo de Contexto de Modelos (MCP) que permite el descubrimiento, la configuración y el acceso a herramientas de repositorios de GitHub a través de un único punto final.
https://github.com/user-attachments/assets/f011f8bf-6c99-4a8a-8236-f8eb0a3fb9e4
Versión actual: 0.8.0
Nota: Este proyecto está en versión beta. Las API y las funciones están sujetas a cambios.
Descripción general
MCP Anywhere proporciona:
- Descubrimiento automático de herramientas desde repositorios de GitHub
- Gestión centralizada de claves API y credenciales
- Habilitación selectiva de herramientas y control de acceso
- Punto final unificado para todas las herramientas MCP
- Aislamiento basado en Docker para una ejecución segura
Documentación
📚 La documentación completa está disponible en mcpanywhere.com
- Guía de inicio - Guía rápida de inicio e instalación
- Guía de implementación - Implementación en producción con Fly.io
Instalación
Instalación local
# Clone repository
git clone https://github.com/locomotive-agency/mcp-anywhere.git
cd mcp-anywhere
# Install with uv (recommended)
uv sync
# Or install with pip
pip install -e .
# Configure environment
cp env.example .env
# Edit .env with required values:
# SECRET_KEY=<secure-random-key>
# ANTHROPIC_API_KEY=<your-api-key>
# Start server
mcp-anywhere serve http
# Or: python -m mcp_anywhere serve http
# Access at http://localhost:8000
Implementación en producción (Fly.io)
# Install Fly CLI
curl -L https://fly.io/install.sh | sh
# Deploy application
cd mcp-anywhere
fly launch
fly secrets set SECRET_KEY=<secure-random-key>
fly secrets set JWT_SECRET_KEY=<jwt-secret-key>
fly secrets set ANTHROPIC_API_KEY=<your-api-key>
fly secrets set GOOGLE_OAUTH_CLIENT_ID=<google-oauth-client-id>
fly secrets set GOOGLE_OAUTH_CLIENT_SECRET=<google-oauth-client-secret>
fly deploy
# Application available at https://your-app.fly.dev
Para acelerar la implementación en fly.io, puedes configurar la compilación manual y el inicio de los contenedores.
# set the environment variable
REBUILD_CONTAINERS_ON_STARTUP=false
Docker
Implementación de la aplicación como contenedor Docker usando docker compose.
# Configure environment
cp env.example .env
# Edit .env with required values:
# SECRET_KEY=<secure-random-key>
# ANTHROPIC_API_KEY=<your-api-key>
Compilar e implementar la aplicación
$ docker compose -f docker-compose.native.yml up -d --build
Ver los registros para conocer el estado
$ docker logs mcp-anywhere-app
Navega a http://<DOCKER-HOST>:8000/ para usar la aplicación
Interactúa con la máquina mediante CLI, útil para interactuar con la base de datos usando sqlite3
# fetch machine id for your app
$ fly --app mcp-anywhere-app machine list
$ fly console --app mcp-anywhere-app --machine <MACHINE_ID>
Comandos de base de datos de ejemplo, una vez que hayas iniciado sesión en la consola de la máquina
$ sqlite3 /.data/mcp_anywhere.db ".tables"
$ sqlite3 /.data/mcp_anywhere.db "SELECT * FROM users;"
Uso
Añadir herramientas desde GitHub
Usa la interfaz web para añadir repositorios de servidores MCP:
- Servidores MCP oficiales:
https://github.com/modelcontextprotocol/servers - Intérprete de Python:
https://github.com/yzfly/mcp-python-interpreter - Cualquier repositorio MCP compatible
El sistema usa Claude AI para analizar y configurar automáticamente los repositorios.
Configuración
- Claves API: Almacenamiento centralizado de credenciales
- Archivos secretos: Carga y gestión segura de archivos de credenciales (JSON, PEM, certificados)
- Gestión de herramientas: Habilita o deshabilita herramientas específicas
- Configuración de contenedores: Contenedorización automática con Docker
Gestión de archivos secretos
MCP Anywhere admite la carga y gestión segura de archivos de credenciales para servidores MCP:
Tipos de archivo admitidos:
- Archivos de credenciales JSON (.json)
- Certificados y claves PEM (.pem, .key, .crt, .cert)
- Certificados PKCS12/PFX (.p12, .pfx)
- Almacenes de claves Java (.jks, .keystore)
- Archivos de configuración (.yaml, .yml, .xml, .txt)
Características:
- Los archivos se cifran en reposo usando AES-128 (Fernet)
- Tamaño máximo de archivo: 10 MB
- Los archivos se montan como volúmenes de solo lectura en los contenedores
- Las variables de entorno se configuran automáticamente con las rutas de los archivos
- Limpieza automática cuando se eliminan los servidores
Uso mediante la interfaz web:
- Navega a la página de detalles del servidor
- Usa el formulario "Subir archivo secreto"
- Especifica un nombre de variable de entorno (por ejemplo,
GOOGLE_APPLICATION_CREDENTIALS) - Sube el archivo de credenciales
- El archivo se montará automáticamente cuando el contenedor se inicie
Consideraciones de seguridad:
- Los archivos se almacenan cifrados en
DATA_DIR/secrets/<server_id>/ - Cada servidor tiene almacenamiento de secretos aislado
- Los archivos solo se descifran al montarlos en los contenedores
- El acceso al contenedor es de solo lectura
Integración con clientes
Configuración de Claude Desktop:
Primero ejecuta which uv, que imprimirá una ruta al binario de uv. Por ejemplo, en macOS:
/Users/yourname/.local/bin/uv
Luego puedes usar esa ruta en el comando de inicio. Cambia la ruta --directory a la ruta de tu clon de MCP Anywhere.
{
"mcpServers": {
"mcp-anywhere": {
"command": "/Users/yourname/.local/bin/uv",
"args": ["run", "--directory", "/Users/yourname/Projects/mcp-anywhere", "mcp-anywhere", "connect"]
}
}
}
Por último, configura la aplicación MCP Anywhere antes de iniciar Claude Desktop:
uv run mcp-anywhere serve stdio
Opciones de autenticación:
Para Google OAuth (recomendado para equipos):
- Configura las credenciales de Google OAuth en Google Cloud Console
- Configura las variables de entorno:
GOOGLE_OAUTH_CLIENT_ID=your-client-id GOOGLE_OAUTH_CLIENT_SECRET=your-client-secret GOOGLE_OAUTH_REDIRECT_URI=/auth/callback OAUTH_USER_ALLOWED_DOMAIN=company.com # Optional: restrict to your domain - Los usuarios pueden iniciar sesión con Google en
/auth/login
Integración con la API HTTP:
from fastmcp import Client
from fastmcp.client.auth import BearerAuth
async with Client(
"https://your-app.fly.dev/mcp/",
auth=BearerAuth(token="<oauth-token>")
) as client:
tools = await client.list_tools()
Interfaz de línea de comandos:
# For MCP client connection
mcp-anywhere connect
# Or: python -m mcp_anywhere connect
# For STDIO server mode (local Claude Desktop integration)
mcp-anywhere serve stdio
# For HTTP server mode with OAuth (production)
mcp-anywhere serve http --host 0.0.0.0 --port 8000
Características
Autenticación y control de acceso
- Integración con Google OAuth: inicia sesión con Google para una autenticación simplificada
- Control de acceso basado en dominio: restringe el acceso a usuarios de dominios específicos (por ejemplo, @company.com)
- Autenticación web basada en sesiones con gestión segura de cookies
- Tokens JWT para acceso a la API con validación adecuada de alcances
Descubrimiento y gestión de herramientas
- Análisis automático de repositorios usando Claude AI
- Monitoreo de salud de contenedores con remontaje inteligente
- Soporte para tiempos de ejecución npx, uvx y Docker
- Habilitación selectiva de herramientas con controles por servidor
- Gestión mejorada de servidores: inicia, detén y reinicia servidores mediante la interfaz web
- Intérprete de Python preconfigurado con aislamiento de sandbox
Seguridad y autenticación
- Integración con Google OAuth para autenticación simplificada de usuarios
- Control de acceso basado en dominio para seguridad organizacional
- Soporte de OAuth 2.0/2.1 con PKCE (implementación del SDK MCP)
- Autenticación de API basada en JWT
- Aislamiento de contenedores Docker para la ejecución de herramientas
- Autenticación basada en sesiones para la interfaz web
- Almacenamiento cifrado de archivos secretos (AES-128 con Fernet)
Arquitectura de producción
- Arquitectura asíncrona (Starlette/FastAPI)
- Monitoreo de salud con recuperación automática
- Gestión flexible de contenedores con comportamiento de inicio/apagado configurable
- Gestión mejorada del ciclo de vida del servidor con controles de inicio/detención/reinicio
- Proceso de implementación optimizado con CI de GitHub Actions
- Soporte de CLI para acceso directo a herramientas
Arquitectura
Client Application → MCP Anywhere Gateway → Docker Containers → MCP Tools
↓
Web Management Interface
Contribuciones
Áreas para contribuir:
- Revisión de OAuth y soporte de proveedores adicionales
- Eficiencia y latencia de contenedores
- Mejorar las pruebas
- Documentación
Configuración
Variables de entorno requeridas
SECRET_KEY # Session encryption key
ANTHROPIC_API_KEY # Claude API key for repository analysis
Variables de entorno opcionales
JWT_SECRET_KEY # JWT token signing key (defaults to SECRET_KEY)
WEB_PORT # Web interface port (default: 8000)
DATA_DIR # Data storage directory (default: .data)
DOCKER_TIMEOUT # Container operation timeout in seconds (default: 300)
LOG_LEVEL # Logging level (default: INFO)
GITHUB_TOKEN # GitHub token for private repository access
# Container Management
CLEANUP_CONTAINERS_ON_SHUTDOWN # Clean up containers on app shutdown (default: false)
REBUILD_CONTAINERS_ON_STARTUP # Rebuild containers on startup (default: true)
# Google OAuth (optional - enables Google authentication)
GOOGLE_OAUTH_CLIENT_ID # Google OAuth client ID
GOOGLE_OAUTH_CLIENT_SECRET # Google OAuth client secret
GOOGLE_OAUTH_REDIRECT_URI # OAuth redirect URI (e.g., /auth/callback)
OAUTH_USER_ALLOWED_DOMAIN # Restrict access to specific domain (e.g., company.com)
Desarrollo
Configuración de desarrollo
# Install development dependencies
uv sync --group dev
# Run tests
uv run pytest
# Run linting
uv run ruff check src/ tests/
# Run type checking
uv run mypy src/
Pruebas
# Run all tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=mcp_anywhere
uv run mcp-anywhere serve http --host 0.0.0.0 --port 8080
Modo de depuración
LOG_LEVEL=DEBUG mcp-anywhere serve http
Restablecimiento de datos
mcp-anywhere reset --confirm
Soporte
Licencia
Consulta LICENCIA