plugged.in MCP Proxy Server
Un middleware que agrega múltiples servidores del Protocolo de Contexto de Modelo (MCP) en una única interfaz unificada.
Documentación
plugged.in MCP Hub — Proxy · Knowledge · Memory · Tools
El cruce de caminos para los intercambios de datos de IA
Un hub MCP unificado que le da a tu IA Knowledge, Memory y Tools — no solo un proxy. Gestiona y prueba todos los servidores MCP desde una sola conexión mientras impulsas flujos de trabajo conscientes de documentos y aumentados con memoria en todos los clientes.
📋 Descripción general
El plugged.in MCP Proxy Server es un middleware potente que agrega múltiples servidores de Model Context Protocol (MCP) en una única interfaz unificada. Obtiene configuraciones de herramientas, prompts y recursos desde la aplicación plugged.in y enruta inteligentemente las solicitudes a los servidores MCP subyacentes correspondientes.
Este proxy permite una integración perfecta con cualquier cliente MCP (Claude, Cline, Cursor, etc.) mientras proporciona capacidades avanzadas de gestión a través del ecosistema plugged.in.
Pilares del Hub: Knowledge · Memory · Tools · Proxy
Knowledge (RAG v2 / Intercambio de Documentos de IA)
Busca y fundamenta las salidas del modelo con recuperación de documentos unificada y consciente de atribución. Los servidores MCP pueden crear y gestionar documentos en tu biblioteca con control de versiones, controles de visibilidad y atribución de modelos. Usa el RAG integrado para buscar en todas las fuentes conectadas y devolver fragmentos relevantes y metadatos.
Memory (Memoria de IA Persistente)
Memoria de larga duración, con alcance de espacio de trabajo/perfil, que sobrevive a las sesiones. El hub se integra con la memoria persistente de la aplicación plugged.in para que las acciones y conocimientos del agente puedan almacenarse y recuperarse entre tareas. Las herramientas de memoria integradas están en la hoja de ruta para exponer patrones get/put/search de baja fricción bajo el mismo modelo de autenticación.
Tools
Agrega capacidades integradas con servidores MCP posteriores (STDIO, SSE, Streamable HTTP). El descubrimiento de herramientas se almacena en caché y se puede actualizar bajo demanda; el descubrimiento a nivel de hub devuelve un catálogo unificado para cualquier cliente MCP. El hub admite herramientas, recursos, plantillas de recursos y prompts.
Proxy
Una conexión para cada cliente. Ejecútalo como STDIO (predeterminado) o Streamable HTTP con autenticación API opcional y modo sin estado. Funciona con Claude Desktop, Cline, Cursor, MCP Inspector y más; mantén tus configuraciones de cliente existentes mientras centralizas políticas y telemetría.
⭐ Si encuentras útil este proyecto, considera darle una estrella en GitHub. Nos ayuda a llegar a más desarrolladores y nos motiva a seguir mejorando.
✨ Características clave
🚀 Capacidades principales
- AI Playground integrado: Prueba tus MCPs al instante con Claude, Gemini, OpenAI y xAI sin configuración de cliente
- Compatibilidad MCP universal: Funciona con cualquier cliente MCP, incluidos Claude Desktop, Cline y Cursor
- Soporte multi-servidor: Conéctate a servidores MCP STDIO, SSE y Streamable HTTP
- Modos de transporte duales: Ejecuta el proxy como STDIO (predeterminado) o servidor Streamable HTTP
- Búsqueda de documentos unificada: Busca en todos los servidores conectados con capacidades RAG integradas
- Intercambio de Documentos de IA (RAG v2): Los servidores MCP pueden crear y gestionar documentos en tu biblioteca con atribución completa
- Notificaciones desde cualquier modelo: Recibe notificaciones en tiempo real con entrega por correo electrónico opcional
- Capa multi-espacio de trabajo: Cambia entre diferentes conjuntos de configuraciones MCP con un clic
- Proxy impulsado por API: Obtiene capacidades de las APIs de la aplicación plugged.in en lugar del descubrimiento directo
- Soporte MCP completo: Maneja herramientas, recursos, plantillas de recursos y prompts
- Instrucciones personalizadas: Admite instrucciones específicas del servidor formateadas como prompts MCP
🎯 Nuevo en v1.5.0 (RAG v2 - Intercambio de Documentos de IA)
- Creación de Documentos de IA: Los servidores MCP ahora pueden crear documentos directamente en tu biblioteca
- Seguimiento completo de atribución de modelos (qué IA creó/actualizó el documento)
- Historial de versiones con seguimiento de cambios
- Deduplicación de contenido mediante hash SHA-256
- Soporte para múltiples formatos: MD, TXT, JSON, HTML, PDF y más
- Búsqueda avanzada de documentos: Consultas RAG mejoradas con filtrado de IA
- Filtra por modelo de IA, proveedor, rango de fechas, etiquetas y tipo de fuente
- Búsqueda semántica con puntuación de relevancia
- Generación automática de fragmentos con resaltado de palabras clave
- Soporte para filtrar fuentes:
ai_generated,uploadoapi
- Gestión de documentos vía MCP:
- Establece la visibilidad del documento: privado, espacio de trabajo o público
- Relaciones padre-hijo para versiones de documentos
- Organización basada en perfiles junto con alcance basado en proyectos
- Seguimiento de progreso en tiempo real para el procesamiento de documentos
🎯 Características de v1.4.0 (Soporte Registry v2)
- Gestión de tokens OAuth: Manejo perfecto de autenticación OAuth para servidores MCP Streamable HTTP
- Recuperación automática de tokens desde la aplicación plugged.in
- Almacenamiento seguro de tokens y mecanismos de actualización
- Sin necesidad de autenticación del lado del cliente
- Sistema de notificaciones mejorado: Soporte de notificaciones bidireccionales
- Envía notificaciones a la aplicación plugged.in
- Recibe notificaciones de servidores MCP
- Marca notificaciones como leídas/no leídas
- Elimina notificaciones programáticamente
- Analíticas de tendencias: Seguimiento de actividad en tiempo real
- Cada llamada de herramienta se registra y rastrea
- Contribuye a los cálculos de servidores en tendencia
- Métricas de uso e información de popularidad
- Integración con Registry: Soporte completo para características de Registry v2
- Descubrimiento automático de servidores desde el registro
- Seguimiento de instalación y métricas
- Soporte para servidores comunitarios
📦 Características de v1.1.0
- Soporte Streamable HTTP: Soporte completo para servidores MCP posteriores que usan transporte Streamable HTTP
- Modo servidor HTTP: Ejecuta el proxy como servidor HTTP con puertos configurables
- Autenticación flexible: Autenticación opcional con token Bearer para endpoints HTTP
- Gestión de sesiones: Elige entre modos de operación con estado (basado en sesión) o sin estado
🎯 Características principales de v1.0.0
- Notificaciones en tiempo real: Rastrea todas las actividades MCP con soporte integral de notificaciones
- Integración RAG: Soporte para consultas mejoradas con documentos a través de la aplicación plugged.in
- Scripts de inspección: Herramientas de prueba automatizadas para depuración y desarrollo
- Monitoreo de salud: Endpoint de ping integrado para monitoreo de conexión
🔧 Categorías de herramientas
El proxy proporciona dos categorías distintas de herramientas:
🔧 Herramientas estáticas integradas (siempre disponibles)
Estas herramientas están integradas en el proxy y funcionan sin configuración de servidor:
pluggedin_discover_tools- Descubrimiento inteligente con caché para resultados instantáneospluggedin_ask_knowledge_base- Búsqueda RAG en tus documentos con capacidades de filtrado de IApluggedin_send_notification- Envía notificaciones con entrega por correo electrónico opcionalpluggedin_create_document- Crea documentos generados por IA en tu bibliotecapluggedin_list_documents- Lista documentos con opciones de filtradopluggedin_search_documents- Busca documentos específicos por consultapluggedin_get_document- Recupera el contenido completo de un documento específico por IDpluggedin_update_document- Actualiza o agrega contenido a un documento existente
📋 Herramientas de portapapeles (sistema de memoria)
pluggedin_clipboard_set- Establece una entrada de portapapeles por nombre (clave semántica) o índicepluggedin_clipboard_get- Obtiene entradas de portapapeles por nombre, índice o lista todaspluggedin_clipboard_delete- Elimina entradas de portapapeles por nombre, índice o borra todaspluggedin_clipboard_list- Lista todas las entradas de portapapeles con metadatospluggedin_clipboard_push- Inserta un valor con índice de autoincremento (push de pila)pluggedin_clipboard_pop- Extrae la entrada de índice más alto (comportamiento LIFO)
⚡ Herramientas MCP dinámicas (de servidores conectados)
Estas herramientas provienen de tus servidores MCP configurados y se pueden activar/desactivar:
- Herramientas de base de datos (PostgreSQL, SQLite, etc.)
- Herramientas de sistema de archivos
- Herramientas de integración de API
- Herramientas personalizadas de cualquier servidor MCP
La herramienta de descubrimiento muestra inteligentemente ambas categorías, dando a los modelos de IA acceso inmediato a todas las capacidades disponibles.
🚀 Uso de la herramienta de descubrimiento
# Quick discovery - returns cached data instantly
pluggedin_discover_tools()
# Force refresh - shows current tools + runs background discovery
pluggedin_discover_tools({"force_refresh": true})
# Discover specific server
pluggedin_discover_tools({"server_uuid": "uuid-here"})
Ejemplo de respuesta:
## 🔧 Static Built-in Tools (Always Available):
1. **pluggedin_discover_tools** - Smart discovery with caching
2. **pluggedin_rag_query** - RAG v2 search across documents with AI filtering
3. **pluggedin_send_notification** - Send notifications
4. **pluggedin_create_document** - (Coming Soon) Create AI-generated documents
## ⚡ Dynamic MCP Tools (8) - From Connected Servers:
1. **query** - Run read-only SQL queries
2. **generate_random_integer** - Generate secure random integers
...
📋 Ejemplos de uso del portapapeles
El sistema de portapapeles proporciona memoria persistente para flujos de trabajo de IA:
# Store a named entry (upserts if exists)
pluggedin_clipboard_set({
"name": "customer_context",
"value": "{\"name\": \"John Doe\", \"account_id\": \"12345\"}",
"contentType": "application/json"
})
# Store an indexed entry for ordered pipelines
pluggedin_clipboard_set({
"idx": 0,
"value": "First pipeline step result",
"createdByTool": "data_processor"
})
# Push to stack (auto-incrementing index)
pluggedin_clipboard_push({
"value": "Analysis result from step 1",
"contentType": "text/plain"
})
# Get a specific entry by name
pluggedin_clipboard_get({"name": "customer_context"})
# Pop from stack (LIFO - returns and removes highest index)
pluggedin_clipboard_pop()
# List all entries with metadata
pluggedin_clipboard_list({"limit": 20})
# Delete specific entry
pluggedin_clipboard_delete({"name": "customer_context"})
# Clear all clipboard entries
pluggedin_clipboard_delete({"clearAll": true})
📚 Ejemplos de uso de RAG v2
El sistema RAG v2 mejorado permite a los servidores MCP crear y buscar documentos con atribución completa de IA:
# Search for documents created by specific AI models
pluggedin_rag_query({
"query": "system architecture",
"filters": {
"modelName": "Claude 3 Opus",
"source": "ai_generated",
"tags": ["technical"]
}
})
# Search across all document sources
pluggedin_rag_query({
"query": "deployment guide",
"filters": {
"dateFrom": "2024-01-01",
"visibility": "workspace"
}
})
# Future: Create AI-generated documents (Coming Soon)
pluggedin_create_document({
"title": "Analysis Report",
"content": "# Market Analysis\n\nDetailed findings...",
"format": "md",
"tags": ["analysis", "market"],
"metadata": {
"model": {
"name": "Claude 3 Opus",
"provider": "Anthropic"
}
}
})
🚀 Inicio rápido
Requisitos previos
- Node.js 22.12+ (el mínimo que
engines.nodedeclara; sanitize-html lo requiere) - Una clave API de la aplicación plugged.in (obtén una en plugged.in/api-keys)
Instalación
# Install and run with npx (latest v1.0.0)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
🔄 Actualización a v1.0.0
Para instalaciones existentes, consulta nuestra Guía de migración para instrucciones detalladas de actualización.
# Quick upgrade
npx -y @pluggedin/pluggedin-mcp-proxy@1.0.0 --pluggedin-api-key YOUR_API_KEY
Configuración para clientes MCP
Claude Desktop
Agrega lo siguiente a tu configuración de Claude Desktop:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cline
Agrega lo siguiente a tu configuración de Cline:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cursor
Para Cursor, puedes usar argumentos de línea de comandos en lugar de variables de entorno:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
⚙️ Opciones de configuración
Variables de entorno
| Variable | Descripción | Requerida | Predeterminado |
|---|---|---|---|
PLUGGEDIN_API_KEY | Clave API de la aplicación plugged.in | Sí | - |
PLUGGEDIN_API_BASE_URL | URL base para la aplicación plugged.in | No | https://plugged.in |
MCP_ALLOWED_ORIGINS | Streamable HTTP: orígenes de navegador separados por comas permitidos para llamar al endpoint MCP (las solicitudes de otros orígenes reciben 403; las solicitudes sin encabezado Origin no se ven afectadas). * permite cualquier origen | No | orígenes de loopback (http://localhost:*, http://127.0.0.1:*, http://[::1]:*) |
MCP_ALLOWED_HOSTS | Streamable HTTP: nombres de Host adicionales aceptados en el endpoint MCP (protección contra rebinding de DNS), p. ej., el nombre público de un proxy inverso local. En un BIND_HOST que no sea de loopback, la verificación se aplica solo cuando esto está configurado | No | nombres de loopback |
Argumentos de línea de comandos
Los argumentos de línea de comandos tienen prioridad sobre las variables de entorno:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY --pluggedin-api-base-url https://your-custom-url.com
Opciones de transporte
| Opción | Descripción | Predeterminado |
|---|---|---|
--transport <type> | Tipo de transporte: stdio o streamable-http | stdio |
--port <number> | Puerto para el servidor Streamable HTTP | 12006 |
--stateless | Habilita el modo sin estado para Streamable HTTP | false |
--require-api-auth | Requiere clave API para solicitudes Streamable HTTP | false |
Para una lista completa de opciones:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --help
🌐 Modo Streamable HTTP
El proxy puede ejecutarse como servidor HTTP en lugar de STDIO, habilitando acceso basado en web y conexiones remotas.
Uso básico
# Run as HTTP server on default port (12006)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --pluggedin-api-key YOUR_API_KEY
# Custom port
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --port 8080 --pluggedin-api-key YOUR_API_KEY
# With authentication required
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --require-api-auth --pluggedin-api-key YOUR_API_KEY
# Stateless mode (new session per request)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --stateless --pluggedin-api-key YOUR_API_KEY
Endpoints HTTP
POST /mcp- Envía mensajes MCPGET /mcp- Flujo de eventos enviados por el servidor (opcional)DELETE /mcp- Termina la sesiónGET /health- Endpoint de verificación de salud
Gestión de sesiones
En modo con estado (predeterminado), usa el encabezado mcp-session-id para mantener sesiones:
# First request creates a session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Subsequent requests use the same session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"tool_name"},"id":2}'
Autenticación
Cuando uses --require-api-auth, incluye tu clave API como token Bearer:
curl -X POST http://localhost:12006/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"ping","id":1}'
🐳 Uso con Docker
También puedes compilar y ejecutar el servidor proxy usando Docker.
Compilación de la imagen
Asegúrate de tener Docker instalado y ejecutándose. Navega al directorio pluggedin-mcp y ejecuta:
docker build -t pluggedin-mcp-proxy:latest .
Se incluye un archivo .dockerignore para optimizar el contexto de compilación.
Ejecución del contenedor
Modo STDIO (predeterminado)
Ejecuta el contenedor en modo STDIO para pruebas con MCP Inspector:
docker run -it --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
--name pluggedin-mcp-container \
pluggedin-mcp-proxy:latest
Modo Streamable HTTP
Ejecuta el contenedor como servidor HTTP:
docker run -d --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
-p 12006:12006 \
--name pluggedin-mcp-http \
pluggedin-mcp-proxy:latest \
--transport streamable-http --port 12006
Reemplaza YOUR_API_KEY y YOUR_API_BASE_URL (si no usas el https://plugged.in predeterminado).
Pruebas con MCP Inspector
Mientras el contenedor esté en ejecución, puedes conectarte a él usando el MCP Inspector:
npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container
Esto se conectará a la entrada/salida estándar del contenedor en ejecución.
Detener el Contenedor
Presiona Ctrl+C en la terminal donde se está ejecutando docker run. La bandera --rm asegura que el contenedor se elimine automáticamente al detenerse.
Agentes Autónomos (Vista Previa)
El hub está diseñado para soportar bucles agénticos de extremo a extremo:
MCP Client → plugged.in MCP Hub → (Plan → Act → Reflect)
↘ Knowledge ↘ Memory ↘ Tools
- Planificar — derivar objetivos y restricciones, formar grafos de tareas.
- Actuar — llamar herramientas del catálogo unificado; enrutar de forma segura entre servidores STDIO/SSE/HTTP.
- Reflexionar — persistir resultados en Memoria y Conocimiento (documentos, notas, artefactos) para mejorar pasos posteriores.
Seguridad y Operaciones
Habilita --require-api-auth en modo HTTP Streamable; usa listas de permitidos para comandos, argumentos y entorno. Combina validación a nivel de servidor con indicaciones del lado del cliente endurecidas contra inyección de indicaciones. Aprovecha el registro/telemetría existente para rastrear el uso de herramientas y las mutaciones de documentos.
🏗️ Arquitectura del Sistema
El plugged.in MCP Proxy Server actúa como un puente entre clientes MCP y múltiples servidores MCP subyacentes:
sequenceDiagram
participant MCPClient as MCP Client (e.g. Claude Desktop)
participant PluggedinMCP as plugged.in MCP Proxy
participant PluggedinApp as plugged.in App
participant MCPServers as Underlying MCP Servers
MCPClient ->> PluggedinMCP: Request list tools/resources/prompts
PluggedinMCP ->> PluggedinApp: Get capabilities via API
PluggedinApp ->> PluggedinMCP: Return capabilities (prefixed)
MCPClient ->> PluggedinMCP: Call tool/read resource/get prompt
alt Standard capability
PluggedinMCP ->> PluggedinApp: Resolve capability to server
PluggedinApp ->> PluggedinMCP: Return server details
PluggedinMCP ->> MCPServers: Forward request to target server
MCPServers ->> PluggedinMCP: Return response
else Custom instruction
PluggedinMCP ->> PluggedinApp: Get custom instruction
PluggedinApp ->> PluggedinMCP: Return formatted messages
end
PluggedinMCP ->> MCPClient: Return response
alt Discovery tool (Smart Caching)
MCPClient ->> PluggedinMCP: Call pluggedin_discover_tools
alt Cached data available
PluggedinMCP ->> PluggedinApp: Check cached capabilities
PluggedinApp ->> PluggedinMCP: Return cached tools/resources/prompts
PluggedinMCP ->> MCPClient: Return instant results (static + dynamic)
else Force refresh or no cache
PluggedinMCP ->> PluggedinApp: Trigger background discovery
PluggedinMCP ->> MCPClient: Return current tools + "discovery running"
PluggedinApp ->> MCPServers: Connect and discover capabilities (background)
MCPServers ->> PluggedinApp: Return fresh capabilities
end
end
🔄 Flujo de Trabajo
- Configuración: El proxy obtiene las configuraciones de los servidores desde la App plugged.in
- Descubrimiento Inteligente (
pluggedin_discover_tools):- Verificación de Caché: Primero verifica si hay datos en caché existentes (< 1 segundo)
- Respuesta Instantánea: Devuelve herramientas estáticas + herramientas dinámicas en caché inmediatamente
- Actualización en Segundo Plano: Para
force_refresh=true, ejecuta el descubrimiento en segundo plano mientras muestra las herramientas actuales - Descubrimiento Nuevo: Solo ejecuta el descubrimiento completo si no hay datos en caché
- Listado de Capacidades: El proxy obtiene las capacidades descubiertas desde las APIs de la App plugged.in
tools/list: Obtiene desde/api/tools(incluye herramientas estáticas + dinámicas)resources/list: Obtiene desde/api/resourcesresource-templates/list: Obtiene desde/api/resource-templatesprompts/list: Obtiene desde/api/promptsy/api/custom-instructions, combina resultados
- Resolución de Capacidades: El proxy resuelve las capacidades hacia los servidores de destino
tools/call: Analiza el prefijo del nombre de la herramienta, busca el servidor en el mapa internoresources/read: Llama a/api/resolve/resource?uri=...para obtener los detalles del servidorprompts/get: Verifica si hay un prefijo de instrucción personalizado o llama a/api/resolve/prompt?name=...
- Enrutamiento de Solicitudes: Las solicitudes se enrutan al servidor MCP subyacente apropiado
- Manejo de Respuestas: Las respuestas de los servidores subyacentes se devuelven al cliente
🔒 Características de Seguridad
El plugged.in MCP Proxy implementa medidas de seguridad integrales para proteger tu sistema y datos:
Validación y Saneamiento de Entrada
- Prevención de Inyección de Comandos: Todos los comandos y argumentos se validan contra listas de permitidos antes de la ejecución
- Seguridad de Variables de Entorno: Análisis seguro de archivos
.envcon manejo adecuado de comillas y valores multilínea - Validación de Tokens: Patrones regex fuertes para claves API y tokens de autenticación (32-64 caracteres hexadecimales)
Seguridad de Red
- Protección SSRF: La validación de URL bloquea el acceso a:
- Direcciones localhost y de bucle local (127.0.0.1, ::1)
- Rangos de IP privados (10.x, 172.16-31.x, 192.168.x)
- Direcciones link-local (169.254.x)
- Rangos multicast y reservados
- Puertos de servicios internos comunes (SSH, bases de datos, etc.)
- Validación de Cabeceras: Protección contra inyección de cabeceras con:
- Bloqueo de cabeceras peligrosas
- Validación de nombres de cabecera conforme a RFC 7230
- Detección de caracteres de control
- Límites de tamaño de cabeceras (máx. 8KB)
- Limitación de Tasa:
- Llamadas a herramientas: 60 solicitudes por minuto
- Llamadas API: 100 solicitudes por minuto
- Saneamiento de Errores: Previene la divulgación de información saneando los mensajes de error
Seguridad de Procesos
- Ejecución Segura de Comandos: Usa
execFile()en lugar deexec()para prevenir la inyección de shell - Lista de Permitidos de Comandos: Solo permite la ejecución de:
node,npx- Comandos Node.jspython,python3- Comandos Pythonuv,uvx,uvenv- Herramientas Python UV
- Saneamiento de Argumentos: Elimina metacaracteres de shell y caracteres de control de todos los argumentos
- Validación de Variables de Entorno: Solo permite claves alfanuméricas con guiones bajos
Seguridad HTTP Streamable
- Autenticación Perezosa: El descubrimiento de herramientas no requiere autenticación, mejorando la compatibilidad
- Seguridad de Sesión: Generación de ID de sesión criptográficamente segura
- Protección CORS: Cabeceras CORS configurables para acceso web
- Límites de Tamaño de Solicitud: Previene DoS mediante cargas útiles grandes
Utilidades de Seguridad
Un módulo dedicado security-utils.ts proporciona:
- Validación de tokens Bearer
- Validación de URL con protección SSRF
- Saneamiento de argumentos de comandos
- Validación de variables de entorno
- Implementación de limitación de tasa
- Saneamiento de mensajes de error
Para la implementación detallada de seguridad, consulta SECURITY.md.
🧩 Integración con la App plugged.in
El plugged.in MCP Proxy Server está diseñado para funcionar perfectamente con la App plugged.in, que proporciona:
- Una interfaz basada en web para gestionar configuraciones de servidores MCP
- Descubrimiento centralizado de capacidades (Herramientas, Recursos, Plantillas, Indicaciones)
- Biblioteca de Documentos RAG v2: Sube documentos y habilita contenido generado por IA con atribución completa
- Gestión de instrucciones personalizadas
- Soporte multi-espacio de trabajo para diferentes conjuntos de configuración
- Un área de juegos interactiva para probar herramientas MCP con cualquier modelo de IA
- Autenticación de usuarios y gestión de claves API
- Intercambio de Documentos IA: Crea, busca y gestiona documentos con seguimiento de atribución de modelos
📚 Recursos Relacionados
- Repositorio de la App plugged.in
- Especificación del Protocolo de Contexto de Modelo (MCP)
- Documentación de Claude Desktop
- Documentación de Cline
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar una Solicitud de Extracción (Pull Request).
📝 Actualizaciones Recientes
Versión 1.9.0 (Septiembre 2025) - Mejoras de Seguridad
🔒 Saneamiento HTML Mejorado
- Saneamiento Estándar de la Industria: Reemplazó el saneamiento HTML personalizado basado en regex con la biblioteca
sanitize-html - Prevención XSS: Protección integral contra ataques de secuencias de comandos entre sitios
- Seguridad de Atributos HTML: Saneamiento mejorado para contextos de atributos HTML (comillas, ampersands)
- Inyección de Cadenas de Formato: Corrigió vulnerabilidades de inyección de cadenas de formato en el registro
- Pruebas de Seguridad: Cobertura integral de pruebas para todas las funciones de saneamiento
🛡️ Mejoras de Seguridad
- Cumplimiento CodeQL: Resolvió todas las vulnerabilidades de seguridad identificadas por el análisis CodeQL de GitHub
- Validación de Entrada: Fortaleció la validación y el saneamiento de entrada en todas las funciones
- Actualizaciones de Dependencias: Añadió
sanitize-htmlpara un filtrado robusto de contenido HTML - Cobertura de Pruebas: Suite de pruebas de seguridad mejorada con verificación de prevención de ataques XSS
Versión 1.5.0 (Enero 2025) - RAG v2
🤖 Intercambio de Documentos IA
- Documentos Generados por IA: Los servidores MCP ahora pueden crear documentos en tu biblioteca con atribución completa de IA
- Seguimiento de Atribución de Modelos: Historial completo de qué modelos de IA crearon o actualizaron cada documento
- Búsqueda Avanzada de Documentos: Filtra por modelo de IA, proveedor, fecha, etiquetas y tipo de fuente
- Versionado de Documentos: Rastrea cambios y mantiene el historial de versiones para contenido generado por IA
- Soporte Multi-Fuente: Documentos de cargas, generación de IA o integraciones API
🔍 Capacidades RAG Mejoradas
- Búsqueda Semántica: Puntuación de relevancia mejorada con búsqueda de texto completo de PostgreSQL
- Filtrado Inteligente: Filtra resultados por visibilidad, atribución de modelos y fuente de documentos
- Generación de Fragmentos: Extracción automática de fragmentos con resaltado de palabras clave
- Optimización de Rendimiento: Consultas más rápidas con indexación optimizada
Versión 1.2.0 (Enero 2025)
🔒 Mejoras de Seguridad
- Validación de URL: Protección SSRF integral que bloquea IPs privadas, localhost y puertos peligrosos
- Lista de Permitidos de Comandos: Solo se pueden ejecutar comandos aprobados (node, npx, python, etc.)
- Saneamiento de Cabeceras: Protección contra ataques de inyección de cabeceras
- Autenticación Perezosa: Compatibilidad mejorada con Smithery mediante descubrimiento de herramientas sin autenticación
🚀 Mejoras de Rendimiento
- Builds Docker Optimizados: Builds de múltiples etapas para un footprint mínimo del contenedor
- Solo Dependencias de Producción: Archivos de prueba y dependencias de desarrollo excluidos de las imágenes Docker
- Eficiencia de Recursos: Diseñado para despliegue en entornos con recursos limitados
🔧 Mejoras Técnicas
- Manejo de errores mejorado en el transporte HTTP Streamable
- Mejor limpieza de sesiones y gestión de memoria
- Tipos TypeScript mejorados y organización del código
Versión 1.1.0 (Diciembre 2024)
🚀 Nuevas Características
- Soporte HTTP Streamable: Conéctate a servidores MCP descendentes usando el transporte HTTP Streamable moderno
- Modo Servidor HTTP: Ejecuta el proxy como un servidor HTTP para acceso basado en web
- Gestión Flexible de Sesiones: Elige entre modos sin estado o con estado
- Opciones de Autenticación: Autenticación opcional con token Bearer para endpoints HTTP
- Monitoreo de Salud: Endpoint
/healthpara monitoreo de servicios
🔧 Mejoras Técnicas
- SDK MCP actualizado a v1.13.1 para el soporte de protocolo más reciente
- Integración de Express.js añadida para la funcionalidad del servidor HTTP
- Tipos TypeScript mejorados para una mejor experiencia de desarrollo
Versión 1.0.0 (Junio 2025)
🎯 Características Principales
- Sistema de Notificaciones en Tiempo Real: Rastrea todas las actividades MCP con soporte integral de notificaciones
- Integración RAG: Soporte para consultas mejoradas con documentos a través de la App plugged.in
- Scripts de Inspector: Nuevas herramientas de prueba automatizadas para depuración y desarrollo
- Monitoreo de Salud: Endpoint de ping integrado para monitoreo de conexiones
🔒 Mejoras de Seguridad
- Validación de Entrada: Validación y saneamiento estándar de la industria para todas las entradas
- Seguridad de URL: Validación de URL mejorada con protección SSRF
- Seguridad del Entorno: Análisis seguro de variables de entorno con dotenv
- Saneamiento de Errores: Previene la divulgación de información en respuestas de error
🐛 Correcciones de Errores
- Corregida la interferencia del protocolo JSON-RPC (separación stdout vs stderr)
- Resuelta la validación de URL localhost para entornos de desarrollo
- Corregido el manejo de claves API en scripts de inspector
- Mejorada la estabilidad de conexión y la gestión de memoria
🔧 Herramientas de Desarrollo
- Nuevos scripts de inspector para pruebas automatizadas
- Mensajes de error mejorados y capacidades de depuración
- Registro estructurado con uso adecuado de stderr
- Seguridad de tipos TypeScript mejorada
Consulta las Notas de Versión para obtener detalles completos.
🧪 Pruebas y Desarrollo
Desarrollo Local
Las pruebas se incluyen para fines de desarrollo, pero se excluyen de los builds Docker para minimizar el footprint del contenedor.
# Run tests locally
npm test
# or
./scripts/test-local.sh
# Run tests in watch mode
npm run test:watch
# Run tests with UI
npm run test:ui
Builds Docker Ligeros
La imagen Docker está optimizada para un footprint mínimo:
- Proceso de build de múltiples etapas
- Solo dependencias de producción en la imagen final
- Archivos de prueba y dependencias de desarrollo excluidos
- Optimizada para entornos con recursos limitados
# Build optimized Docker image
docker build -t pluggedin-mcp .
# Check image size
docker images pluggedin-mcp
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Inspirado en el MCP Proxy Server
- Construido sobre el Protocolo de Contexto de Modelo