plugged.in MCP Proxy Server

Um middleware que agrega múltiplos servidores Model Context Protocol (MCP) em uma única interface unificada.

Documentação

plugged.in MCP Hub — Proxy · Knowledge · Memory · Tools

plugged.in Logo

O Cruzamento para Trocas de Dados de IA

Um hub MCP unificado que dá à sua IA Knowledge, Memory e Tools — não apenas um proxy. Gerencie e teste todos os servidores MCP a partir de uma única conexão, enquanto potencializa fluxos de trabalho com reconhecimento de documentos e memória aumentada em vários clientes.

Version GitHub Stars License TypeScript MCP MCP Badge

📋 Visão Geral

O plugged.in MCP Proxy Server é um middleware poderoso que agrega múltiplos servidores Model Context Protocol (MCP) em uma única interface unificada. Ele busca configurações de ferramentas, prompts e recursos do plugged.in App e roteia inteligentemente as solicitações para os servidores MCP subjacentes apropriados.

Este proxy permite integração perfeita com qualquer cliente MCP (Claude, Cline, Cursor, etc.) enquanto fornece capacidades avançadas de gerenciamento através do ecossistema plugged.in.

Pilares do Hub: Knowledge · Memory · Tools · Proxy

Knowledge (RAG v2 / Troca de Documentos de IA)
Pesquise e fundamente as saídas do modelo com recuperação unificada de documentos com atribuição. Servidores MCP podem criar e gerenciar documentos em sua biblioteca com versionamento, controles de visibilidade e atribuição de modelo. Use o RAG integrado para pesquisar em todas as fontes conectadas e retornar trechos e metadados relevantes.

Memory (Memória de IA Persistente)
Memória de longa duração, com escopo de workspace/perfil, que sobrevive às sessões. O hub se integra à memória persistente do plugged.in App para que ações e insights do agente possam ser armazenados e recuperados entre tarefas. Ferramentas de memória integradas estão no roadmap para expor padrões get/put/search de baixa fricção sob o mesmo modelo de autenticação.

Tools
Agregue capacidades integradas com servidores MCP downstream (STDIO, SSE, Streamable HTTP). A descoberta de ferramentas é armazenada em cache e pode ser atualizada sob demanda; a descoberta em nível de hub retorna um catálogo unificado para qualquer cliente MCP. O hub suporta ferramentas, recursos, modelos de recursos e prompts.

Proxy
Uma conexão para cada cliente. Execute como STDIO (padrão) ou Streamable HTTP com autenticação de API opcional e modo stateless. Funciona com Claude Desktop, Cline, Cursor, MCP Inspector e mais; mantenha suas configurações de cliente existentes enquanto centraliza políticas e telemetria.

⭐ Se você achar este projeto útil, considere dar uma estrela no GitHub! Isso nos ajuda a alcançar mais desenvolvedores e nos motiva a continuar melhorando.

✨ Principais Recursos

🚀 Capacidades Principais

  • AI Playground Integrado: Teste seus MCPs instantaneamente com Claude, Gemini, OpenAI e xAI sem qualquer configuração de cliente
  • Compatibilidade Universal com MCP: Funciona com qualquer cliente MCP, incluindo Claude Desktop, Cline e Cursor
  • Suporte a Múltiplos Servidores: Conecte-se a servidores MCP STDIO, SSE e Streamable HTTP
  • Modos de Transporte Duplos: Execute o proxy como STDIO (padrão) ou servidor Streamable HTTP
  • Pesquisa Unificada de Documentos: Pesquise em todos os servidores conectados com capacidades RAG integradas
  • Troca de Documentos de IA (RAG v2): Servidores MCP podem criar e gerenciar documentos em sua biblioteca com atribuição completa
  • Notificações de Qualquer Modelo: Receba notificações em tempo real com entrega opcional por e-mail
  • Camada Multi-Workspace: Alterne entre diferentes conjuntos de configurações MCP com um clique
  • Proxy Orientado por API: Busca capacidades das APIs do plugged.in App em vez de descoberta direta
  • Suporte MCP Completo: Lida com ferramentas, recursos, modelos de recursos e prompts
  • Instruções Personalizadas: Suporta instruções específicas do servidor formatadas como prompts MCP

🎯 Novo na v1.5.0 (RAG v2 - Troca de Documentos de IA)

  • Criação de Documentos de IA: Servidores MCP agora podem criar documentos diretamente em sua biblioteca
    • Rastreamento completo de atribuição de modelo (qual IA criou/atualizou o documento)
    • Histórico de versões com rastreamento de alterações
    • Deduplicação de conteúdo via hash SHA-256
    • Suporte a múltiplos formatos: MD, TXT, JSON, HTML, PDF e mais
  • Pesquisa Avançada de Documentos: Consultas RAG aprimoradas com filtragem de IA
    • Filtre por modelo de IA, provedor, intervalo de datas, tags e tipo de fonte
    • Pesquisa semântica com pontuação de relevância
    • Geração automática de trechos com destaque de palavras-chave
    • Suporte para filtragem de fontes: ai_generated, upload ou api
  • Gerenciamento de Documentos via MCP:
    • Defina a visibilidade do documento: privado, workspace ou público
    • Relações pai-filho para versões de documentos
    • Organização baseada em perfil juntamente com escopo baseado em projeto
    • Rastreamento de progresso em tempo real para processamento de documentos

🎯 Recursos da v1.4.0 (Suporte Registry v2)

  • Gerenciamento de Tokens OAuth: Tratamento perfeito de autenticação OAuth para servidores MCP Streamable HTTP
    • Recuperação automática de tokens do plugged.in App
    • Armazenamento seguro de tokens e mecanismos de atualização
    • Nenhuma autenticação necessária no lado do cliente
  • Sistema de Notificação Aprimorado: Suporte a notificações bidirecionais
    • Envie notificações para o plugged.in App
    • Receba notificações de servidores MCP
    • Marque notificações como lidas/não lidas
    • Exclua notificações programaticamente
  • Análises de Tendências: Rastreamento de atividades em tempo real
    • Cada chamada de ferramenta é registrada e rastreada
    • Contribui para cálculos de servidores em tendência
    • Métricas de uso e insights de popularidade
  • Integração com Registry: Suporte completo para recursos do Registry v2
    • Descoberta automática de servidores a partir do registry
    • Rastreamento de instalação e métricas
    • Suporte a servidores da comunidade

📦 Recursos da v1.1.0

  • Suporte Streamable HTTP: Suporte completo para servidores MCP downstream usando transporte Streamable HTTP
  • Modo Servidor HTTP: Execute o proxy como um servidor HTTP com portas configuráveis
  • Autenticação Flexível: Autenticação opcional com token Bearer para endpoints HTTP
  • Gerenciamento de Sessões: Escolha entre modos de operação stateful (baseado em sessão) ou stateless

🎯 Recursos Principais da v1.0.0

  • Notificações em Tempo Real: Rastreie todas as atividades MCP com suporte abrangente a notificações
  • Integração RAG: Suporte para consultas aprimoradas por documentos através do plugged.in App
  • Scripts de Inspeção: Ferramentas de teste automatizadas para depuração e desenvolvimento
  • Monitoramento de Saúde: Endpoint de ping integrado para monitoramento de conexão

🔧 Categorias de Ferramentas

O proxy fornece duas categorias distintas de ferramentas:

🔧 Ferramentas Integradas Estáticas (Sempre Disponíveis)

Estas ferramentas são integradas ao proxy e funcionam sem qualquer configuração de servidor:

  • pluggedin_discover_tools - Descoberta inteligente com cache para resultados instantâneos
  • pluggedin_ask_knowledge_base - Pesquisa RAG em seus documentos com capacidades de filtragem de IA
  • pluggedin_send_notification - Envie notificações com entrega opcional por e-mail
  • pluggedin_create_document - Crie documentos gerados por IA em sua biblioteca
  • pluggedin_list_documents - Liste documentos com opções de filtragem
  • pluggedin_search_documents - Pesquise documentos específicos por consulta
  • pluggedin_get_document - Recupere o conteúdo completo de um documento específico por ID
  • pluggedin_update_document - Atualize ou acrescente a um documento existente

📋 Ferramentas de Clipboard (Sistema de Memória)

  • pluggedin_clipboard_set - Defina uma entrada de clipboard por nome (chave semântica) ou índice
  • pluggedin_clipboard_get - Obtenha entradas de clipboard por nome, índice ou liste todas
  • pluggedin_clipboard_delete - Exclua entradas de clipboard por nome, índice ou limpe todas
  • pluggedin_clipboard_list - Liste todas as entradas de clipboard com metadados
  • pluggedin_clipboard_push - Empurre um valor com índice de incremento automático (push de pilha)
  • pluggedin_clipboard_pop - Remova a entrada de índice mais alto (comportamento LIFO)

⚡ Ferramentas MCP Dinâmicas (De Servidores Conectados)

Estas ferramentas vêm dos seus servidores MCP configurados e podem ser ativadas/desativadas:

  • Ferramentas de banco de dados (PostgreSQL, SQLite, etc.)
  • Ferramentas de sistema de arquivos
  • Ferramentas de integração de API
  • Ferramentas personalizadas de qualquer servidor MCP

A ferramenta de descoberta mostra inteligentemente ambas as categorias, dando aos modelos de IA acesso imediato a todas as capacidades disponíveis.

🚀 Uso da Ferramenta de Descoberta

# 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"})

Exemplo de Resposta:

## 🔧 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
...

📋 Exemplos de Uso do Clipboard

O sistema de clipboard fornece memória persistente para fluxos de trabalho 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})

📚 Exemplos de Uso do RAG v2

O sistema RAG v2 aprimorado permite que servidores MCP criem e pesquisem documentos com atribuição 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"
    }
  }
})

🚀 Início Rápido

Pré-requisitos

  • Node.js 22.12+ (o piso que engines.node declara; sanitize-html exige isso)
  • Uma chave de API do plugged.in App (obtenha uma em plugged.in/api-keys)

Instalação

# Install and run with npx (latest v1.0.0)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY

🔄 Atualizando para v1.0.0

Para instalações existentes, consulte nosso Guia de Migração para instruções detalhadas de atualização.

# Quick upgrade
npx -y @pluggedin/pluggedin-mcp-proxy@1.0.0 --pluggedin-api-key YOUR_API_KEY

Configuração para Clientes MCP

Claude Desktop

Adicione o seguinte à sua configuração do Claude Desktop:

{
  "mcpServers": {
    "pluggedin": {
      "command": "npx",
      "args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
      "env": {
        "PLUGGEDIN_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Cline

Adicione o seguinte à sua configuração do Cline:

{
  "mcpServers": {
    "pluggedin": {
      "command": "npx",
      "args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
      "env": {
        "PLUGGEDIN_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Cursor

Para o Cursor, você pode usar argumentos de linha de comando em vez de variáveis de ambiente:

npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY

⚙️ Opções de Configuração

Variáveis de Ambiente

VariávelDescriçãoObrigatóriaPadrão
PLUGGEDIN_API_KEYChave de API do plugged.in AppSim-
PLUGGEDIN_API_BASE_URLURL base do plugged.in AppNãohttps://plugged.in
MCP_ALLOWED_ORIGINSStreamable HTTP: origens de navegador separadas por vírgula permitidas para chamar o endpoint MCP (solicitações de outras origens recebem 403; solicitações sem cabeçalho Origin não são afetadas). * permite qualquer origemNãoorigens de loopback (http://localhost:*, http://127.0.0.1:*, http://[::1]:*)
MCP_ALLOWED_HOSTSStreamable HTTP: nomes extras de Host aceitos no endpoint MCP (proteção contra rebinding de DNS), ex. o nome público de um proxy reverso local. Em um BIND_HOST não-loopback, a verificação se aplica apenas quando isso está definidoNãonomes de loopback

Argumentos de Linha de Comando

Argumentos de linha de comando têm precedência sobre variáveis de ambiente:

npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY --pluggedin-api-base-url https://your-custom-url.com

Opções de Transporte

OpçãoDescriçãoPadrão
--transport <type>Tipo de transporte: stdio ou streamable-httpstdio
--port <number>Porta para o servidor Streamable HTTP12006
--statelessAtivar modo stateless para Streamable HTTPfalse
--require-api-authExigir chave de API para solicitações Streamable HTTPfalse

Para uma lista completa de opções:

npx -y @pluggedin/pluggedin-mcp-proxy@latest --help

🌐 Modo Streamable HTTP

O proxy pode ser executado como um servidor HTTP em vez de STDIO, permitindo acesso baseado na web e conexões 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 - Enviar mensagens MCP
  • GET /mcp - Fluxo de eventos enviados pelo servidor (opcional)
  • DELETE /mcp - Encerrar sessão
  • GET /health - Endpoint de verificação de saúde

Gerenciamento de Sessões

No modo stateful (padrão), use o cabeçalho mcp-session-id para manter sessões:

# 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}'

Autenticação

Ao usar --require-api-auth, inclua sua chave de API como um 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 com Docker

Você também pode construir e executar o servidor proxy usando Docker.

Construindo a Imagem

Certifique-se de ter o Docker instalado e em execução. Navegue até o diretório pluggedin-mcp e execute:

docker build -t pluggedin-mcp-proxy:latest .

Um arquivo .dockerignore está incluído para otimizar o contexto de construção.

Executando o Contêiner

Modo STDIO (Padrão)

Execute o contêiner em modo STDIO para testes com 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

Execute o contêiner como um 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

Substitua YOUR_API_KEY e YOUR_API_BASE_URL (se não estiver usando o https://plugged.in padrão).

Testando com MCP Inspector

Enquanto o contêiner estiver em execução, você pode se conectar a ele usando o MCP Inspector:

npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container

Isso conectará à entrada/saída padrão do contêiner em execução.

Parando o Contêiner

Pressione Ctrl+C no terminal onde docker run está em execução. A flag --rm garante que o contêiner seja removido automaticamente ao parar.

Agentes Autônomos (Prévia)

O hub foi projetado para suportar loops agênticos de ponta a ponta:

MCP Client  →  plugged.in MCP Hub  →  (Plan → Act → Reflect)
                                ↘  Knowledge  ↘  Memory  ↘  Tools
  • Planejar — derivar metas e restrições, formar grafos de tarefas.
  • Agir — chamar ferramentas do catálogo unificado; rotear com segurança entre servidores STDIO/SSE/HTTP.
  • Refletir — persistir resultados na Memória e no Conhecimento (documentos, notas, artefatos) para melhorar etapas subsequentes.

Segurança e Operações
Habilite --require-api-auth no modo HTTP Streamable; use listas de permissões para comandos, argumentos e variáveis de ambiente. Combine validação no nível do servidor com prompts do lado do cliente protegidos contra injeção de prompt. Aproveite o registro/telemetria existente para rastrear o uso de ferramentas e mutações de documentos.

🏗️ Arquitetura do Sistema

O plugged.in MCP Proxy Server atua como uma ponte entre clientes MCP e múltiplos servidores MCP subjacentes:

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

🔄 Fluxo de Trabalho

  1. Configuração: O proxy busca configurações de servidor no aplicativo plugged.in
  2. Descoberta Inteligente (pluggedin_discover_tools):
    • Verificação de Cache: Primeiro verifica se há dados em cache existentes (< 1 segundo)
    • Resposta Instantânea: Retorna ferramentas estáticas + ferramentas dinâmicas em cache imediatamente
    • Atualização em Segundo Plano: Para force_refresh=true, executa a descoberta em segundo plano enquanto mostra as ferramentas atuais
    • Descoberta Nova: Só executa descoberta completa se não houver dados em cache
  3. Listagem de Capacidades: O proxy busca capacidades descobertas nas APIs do aplicativo plugged.in
    • tools/list: Busca de /api/tools (inclui ferramentas estáticas + dinâmicas)
    • resources/list: Busca de /api/resources
    • resource-templates/list: Busca de /api/resource-templates
    • prompts/list: Busca de /api/prompts e /api/custom-instructions, mescla resultados
  4. Resolução de Capacidades: O proxy resolve capacidades para servidores de destino
    • tools/call: Analisa o prefixo do nome da ferramenta, consulta o servidor no mapa interno
    • resources/read: Chama /api/resolve/resource?uri=... para obter detalhes do servidor
    • prompts/get: Verifica se há prefixo de instrução personalizada ou chama /api/resolve/prompt?name=...
  5. Roteamento de Solicitações: As solicitações são roteadas para o servidor MCP subjacente apropriado
  6. Tratamento de Respostas: As respostas dos servidores subjacentes são retornadas ao cliente

🔒 Recursos de Segurança

O plugged.in MCP Proxy implementa medidas de segurança abrangentes para proteger seu sistema e dados:

Validação e Saneamento de Entrada

  • Prevenção de Injeção de Comandos: Todos os comandos e argumentos são validados contra listas de permissões antes da execução
  • Segurança de Variáveis de Ambiente: Análise segura de arquivos .env com tratamento adequado de aspas e valores multilinha
  • Validação de Tokens: Padrões regex fortes para chaves de API e tokens de autenticação (32-64 caracteres hexadecimais)

Segurança de Rede

  • Proteção SSRF: A validação de URL bloqueia acesso a:
    • Localhost e endereços de loopback (127.0.0.1, ::1)
    • Faixas de IP privadas (10.x, 172.16-31.x, 192.168.x)
    • Endereços link-local (169.254.x)
    • Faixas multicast e reservadas
    • Portas de serviços internos comuns (SSH, bancos de dados, etc.)
  • Validação de Cabeçalhos: Proteção contra injeção de cabeçalhos com:
    • Bloqueio de cabeçalhos perigosos
    • Validação de nomes de cabeçalhos em conformidade com RFC 7230
    • Detecção de caracteres de controle
    • Limites de tamanho de cabeçalho (máx. 8KB)
  • Limitação de Taxa:
    • Chamadas de ferramentas: 60 solicitações por minuto
    • Chamadas de API: 100 solicitações por minuto
  • Saneamento de Erros: Previne divulgação de informações ao sanear mensagens de erro

Segurança de Processos

  • Execução Segura de Comandos: Usa execFile() em vez de exec() para prevenir injeção de shell
  • Lista de Permissões de Comandos: Só permite a execução de:
    • node, npx - Comandos Node.js
    • python, python3 - Comandos Python
    • uv, uvx, uvenv - Ferramentas Python UV
  • Saneamento de Argumentos: Remove metacaracteres de shell e caracteres de controle de todos os argumentos
  • Validação de Variáveis de Ambiente: Só permite chaves alfanuméricas com sublinhados

Segurança HTTP Streamable

  • Autenticação Preguiçosa: A descoberta de ferramentas não exige autenticação, melhorando a compatibilidade
  • Segurança de Sessão: Geração de IDs de sessão criptograficamente seguros
  • Proteção CORS: Cabeçalhos CORS configuráveis para acesso web
  • Limites de Tamanho de Solicitação: Previne DoS por meio de cargas úteis grandes

Utilitários de Segurança

Um módulo dedicado security-utils.ts fornece:

  • Validação de token Bearer
  • Validação de URL com proteção SSRF
  • Saneamento de argumentos de comando
  • Validação de variáveis de ambiente
  • Implementação de limitação de taxa
  • Saneamento de mensagens de erro

Para implementação detalhada de segurança, consulte SECURITY.md.

🧩 Integração com o aplicativo plugged.in

O plugged.in MCP Proxy Server foi projetado para funcionar perfeitamente com o aplicativo plugged.in, que fornece:

  • Uma interface baseada na web para gerenciar configurações de servidor MCP
  • Descoberta centralizada de capacidades (Ferramentas, Recursos, Modelos, Prompts)
  • Biblioteca de Documentos RAG v2: Envie documentos e habilite conteúdo gerado por IA com atribuição completa
  • Gerenciamento de instruções personalizadas
  • Suporte a múltiplos espaços de trabalho para diferentes conjuntos de configuração
  • Um playground interativo para testar ferramentas MCP com qualquer modelo de IA
  • Autenticação de usuário e gerenciamento de chaves de API
  • Troca de Documentos com IA: Crie, pesquise e gerencie documentos com rastreamento de atribuição de modelo

📚 Recursos Relacionados

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

📝 Atualizações Recentes

Versão 1.9.0 (Setembro de 2025) - Aprimoramentos de Segurança

🔒 Saneamento de HTML Aprimorado

  • Saneamento Padrão da Indústria: Substituiu o saneamento de HTML baseado em regex personalizado pela biblioteca sanitize-html
  • Prevenção de XSS: Proteção abrangente contra ataques de script entre sites
  • Segurança de Atributos HTML: Saneamento aprimorado para contextos de atributos HTML (aspas, e comerciais)
  • Injeção de String de Formato: Corrigiu vulnerabilidades de injeção de string de formato no registro
  • Testes de Segurança: Cobertura de testes abrangente para todas as funções de saneamento

🛡️ Melhorias de Segurança

  • Conformidade CodeQL: Resolveu todas as vulnerabilidades de segurança identificadas pela análise do GitHub CodeQL
  • Validação de Entrada: Fortaleceu a validação e o saneamento de entrada em todas as funções
  • Atualizações de Dependências: Adicionou sanitize-html para filtragem robusta de conteúdo HTML
  • Cobertura de Testes: Suíte de testes de segurança aprimorada com verificação de prevenção de ataques XSS

Versão 1.5.0 (Janeiro de 2025) - RAG v2

🤖 Troca de Documentos com IA

  • Documentos Gerados por IA: Servidores MCP agora podem criar documentos em sua biblioteca com atribuição completa de IA
  • Rastreamento de Atribuição de Modelo: Histórico completo de quais modelos de IA criaram ou atualizaram cada documento
  • Pesquisa Avançada de Documentos: Filtre por modelo de IA, provedor, data, tags e tipo de fonte
  • Versionamento de Documentos: Acompanhe alterações e mantenha o histórico de versões para conteúdo gerado por IA
  • Suporte a Múltiplas Fontes: Documentos de uploads, geração por IA ou integrações de API

🔍 Capacidades RAG Aprimoradas

  • Pesquisa Semântica: Pontuação de relevância melhorada com pesquisa de texto completo do PostgreSQL
  • Filtragem Inteligente: Filtre resultados por visibilidade, atribuição de modelo e fonte de documento
  • Geração de Trechos: Extração automática de trechos com destaque de palavras-chave
  • Otimização de Desempenho: Consultas mais rápidas com indexação otimizada

Versão 1.2.0 (Janeiro de 2025)

🔒 Aprimoramentos de Segurança

  • Validação de URL: Proteção SSRF abrangente bloqueando IPs privados, localhost e portas perigosas
  • Lista de Permissões de Comandos: Apenas comandos aprovados (node, npx, python, etc.) podem ser executados
  • Saneamento de Cabeçalhos: Proteção contra ataques de injeção de cabeçalhos
  • Autenticação Preguiçosa: Compatibilidade Smithery melhorada com descoberta de ferramentas sem autenticação

🚀 Melhorias de Desempenho

  • Builds Docker Otimizados: Builds em múltiplas etapas para pegada mínima do contêiner
  • Apenas Dependências de Produção: Arquivos de teste e dependências de desenvolvimento excluídos das imagens Docker
  • Eficiência de Recursos: Projetado para implantação em ambientes com recursos limitados

🔧 Melhorias Técnicas

  • Tratamento de erros aprimorado no transporte HTTP Streamable
  • Melhor limpeza de sessão e gerenciamento de memória
  • Tipos TypeScript e organização de código aprimorados

Versão 1.1.0 (Dezembro de 2024)

🚀 Novos Recursos

  • Suporte HTTP Streamable: Conecte-se a servidores MCP downstream usando o transporte HTTP Streamable moderno
  • Modo Servidor HTTP: Execute o proxy como um servidor HTTP para acesso baseado na web
  • Gerenciamento Flexível de Sessão: Escolha entre modos sem estado ou com estado
  • Opções de Autenticação: Autenticação opcional com token Bearer para endpoints HTTP
  • Monitoramento de Saúde: Endpoint /health para monitoramento de serviço

🔧 Melhorias Técnicas

  • SDK MCP atualizado para v1.13.1 para suporte ao protocolo mais recente
  • Integração Express.js adicionada para funcionalidade de servidor HTTP
  • Tipos TypeScript aprimorados para melhor experiência do desenvolvedor

Versão 1.0.0 (Junho de 2025)

🎯 Principais Recursos

  • Sistema de Notificação em Tempo Real: Acompanhe todas as atividades MCP com suporte abrangente a notificações
  • Integração RAG: Suporte para consultas aprimoradas por documentos por meio do aplicativo plugged.in
  • Scripts de Inspeção: Novas ferramentas de teste automatizadas para depuração e desenvolvimento
  • Monitoramento de Saúde: Endpoint de ping integrado para monitoramento de conexão

🔒 Aprimoramentos de Segurança

  • Validação de Entrada: Validação e saneamento padrão da indústria para todas as entradas
  • Segurança de URL: Validação de URL aprimorada com proteção SSRF
  • Segurança de Ambiente: Análise segura de variáveis de ambiente com dotenv
  • Saneamento de Erros: Previne divulgação de informações em respostas de erro

🐛 Correções de Bugs

  • Corrigida interferência de protocolo JSON-RPC (separação stdout vs stderr)
  • Resolvida validação de URL localhost para ambientes de desenvolvimento
  • Corrigido tratamento de chaves de API em scripts de inspeção
  • Estabilidade de conexão e gerenciamento de memória melhorados

🔧 Ferramentas do Desenvolvedor

  • Novos scripts de inspeção para testes automatizados
  • Mensagens de erro e capacidades de depuração aprimoradas
  • Registro estruturado com uso adequado de stderr
  • Segurança de tipos TypeScript aprimorada

Consulte Notas de Lançamento para detalhes completos.

🧪 Testes e Desenvolvimento

Desenvolvimento Local

Testes estão incluídos para fins de desenvolvimento, mas são excluídos dos builds Docker para minimizar a pegada do contêiner.

# 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 Leves

A imagem Docker é otimizada para pegada mínima:

  • Processo de build em múltiplas etapas
  • Apenas dependências de produção na imagem final
  • Arquivos de teste e dependências de desenvolvimento excluídos
  • Otimizada para ambientes com recursos limitados
# Build optimized Docker image
docker build -t pluggedin-mcp .

# Check image size
docker images pluggedin-mcp

📄 Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

🙏 Agradecimentos