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

plugged.in Logo

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.

Version GitHub Stars License TypeScript MCP MCP Badge

📋 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, upload o api
  • 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áneos
  • pluggedin_ask_knowledge_base - Búsqueda RAG en tus documentos con capacidades de filtrado de IA
  • pluggedin_send_notification - Envía notificaciones con entrega por correo electrónico opcional
  • pluggedin_create_document - Crea documentos generados por IA en tu biblioteca
  • pluggedin_list_documents - Lista documentos con opciones de filtrado
  • pluggedin_search_documents - Busca documentos específicos por consulta
  • pluggedin_get_document - Recupera el contenido completo de un documento específico por ID
  • pluggedin_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 índice
  • pluggedin_clipboard_get - Obtiene entradas de portapapeles por nombre, índice o lista todas
  • pluggedin_clipboard_delete - Elimina entradas de portapapeles por nombre, índice o borra todas
  • pluggedin_clipboard_list - Lista todas las entradas de portapapeles con metadatos
  • pluggedin_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.node declara; 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

VariableDescripciónRequeridaPredeterminado
PLUGGEDIN_API_KEYClave API de la aplicación plugged.inSí-
PLUGGEDIN_API_BASE_URLURL base para la aplicación plugged.inNohttps://plugged.in
MCP_ALLOWED_ORIGINSStreamable 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 origenNoorígenes de loopback (http://localhost:*, http://127.0.0.1:*, http://[::1]:*)
MCP_ALLOWED_HOSTSStreamable 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á configuradoNonombres 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ónDescripciónPredeterminado
--transport <type>Tipo de transporte: stdio o streamable-httpstdio
--port <number>Puerto para el servidor Streamable HTTP12006
--statelessHabilita el modo sin estado para Streamable HTTPfalse
--require-api-authRequiere clave API para solicitudes Streamable HTTPfalse

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 MCP
  • GET /mcp - Flujo de eventos enviados por el servidor (opcional)
  • DELETE /mcp - Termina la sesión
  • GET /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

  1. Configuración: El proxy obtiene las configuraciones de los servidores desde la App plugged.in
  2. 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é
  3. 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/resources
    • resource-templates/list: Obtiene desde /api/resource-templates
    • prompts/list: Obtiene desde /api/prompts y /api/custom-instructions, combina resultados
  4. 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 interno
    • resources/read: Llama a /api/resolve/resource?uri=... para obtener los detalles del servidor
    • prompts/get: Verifica si hay un prefijo de instrucción personalizado o llama a /api/resolve/prompt?name=...
  5. Enrutamiento de Solicitudes: Las solicitudes se enrutan al servidor MCP subyacente apropiado
  6. 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 .env con 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 de exec() para prevenir la inyección de shell
  • Lista de Permitidos de Comandos: Solo permite la ejecución de:
    • node, npx - Comandos Node.js
    • python, python3 - Comandos Python
    • uv, 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

🤝 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-html para 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 /health para 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