MCP Proxy Hub
Agrega múltiplos servidores de recursos MCP em uma única interface usando um arquivo de configuração JSON.
Documentação
MCP Proxy Hub
Um servidor proxy MCP que agrega e serve múltiplos servidores de recursos MCP através de uma interface única. Este servidor atua como um hub central que pode:
- Conectar-se e gerenciar múltiplos servidores de recursos MCP
- Expor suas capacidades combinadas através de uma interface unificada
- Lidar com o roteamento de solicitações para os servidores backend apropriados
- Agregar respostas de múltiplas fontes
Recursos
Gerenciamento de Recursos
- Descobrir e conectar-se a múltiplos servidores de recursos MCP
- Agregar recursos de todos os servidores conectados
- Manter esquemas de URI consistentes entre servidores
- Lidar com roteamento e resolução de recursos
Agregação de Ferramentas
- Expor ferramentas de todos os servidores conectados com prefixos de nome de servidor
- Aplicar filtragem de ferramentas com base na configuração (exposedTools/hiddenTools)
- Suportar renomeação de ferramentas via configuração
- Roteamento de chamadas de ferramentas para os servidores backend apropriados
Suporte a Ferramentas Personalizadas
-
Definir ferramentas compostas que combinam funcionalidades de múltiplos servidores
-
Executar subferramentas usando especificações de nome de servidor e ferramenta
-
Fornecer documentação detalhada através de descrições de ferramentas
-
Especificar execução com um formato padronizado:
{ "server": "server_name", "tool": "tool_name", "args": { // Tool-specific arguments } }
Suporte a Variáveis de Ambiente
- Expandir automaticamente variáveis de ambiente em argumentos de ferramentas
- Substituir automaticamente valores sensíveis por referências de variáveis nas respostas
- Configurar quais variáveis devem ser expandidas/não expandidas via configuração
- Suporte para variáveis de ambiente globais (todos os servidores) e específicas do servidor
- Variáveis específicas do servidor têm precedência sobre variáveis globais com o mesmo nome
- Cada variável pode ser configurada independentemente para expansão e não expansão
- Variáveis de ambiente são expandidas apenas quando se usa a sintaxe
${VARIABLE_NAME}(ex.:${API_KEY}). A sintaxe$VARIABLE_NAMEnão é suportada. - Tratamento seguro de informações sensíveis como chaves de API
Tratamento de Prompts
- Agregar prompts de todos os servidores conectados
- Roteamento de solicitações de prompts para os backends apropriados
- Lidar com respostas de prompts de múltiplos servidores
Configuração
O servidor requer um arquivo de configuração JSON que especifica os servidores MCP aos quais se conectar. Copie o exemplo de configuração (config.example.json) e modifique-o conforme suas necessidades:
cp config.example.json config.json
Opções de Configuração
Configuração do Servidor MCP
-
Servidor tipo Stdio:
command: Comando a executar (obrigatório)args: Argumentos de linha de comando (opcional)env: Variáveis de ambiente (opcional)exposedTools: Matriz de ferramentas a expor (opcional)hiddenTools: Matriz de ferramentas a ocultar (opcional)envVars: Configuração de variáveis de ambiente para argumentos e respostas de ferramentas (opcional)timeout: Tempo limite de solicitação em segundos para chamadas de ferramentas downstream (opcional, substitui otimeoutde nível superior;0desativa o tempo limite)enable: Se deve habilitar o servidor (opcional, padrão: true)
-
Servidor tipo SSE:
type: "sse" (obrigatório)url: URL do servidor SSE (obrigatório)headers: Objeto de cabeçalhos HTTP a enviar com a conexão SSE (opcional)exposedTools: Matriz de ferramentas a expor (opcional)hiddenTools: Matriz de ferramentas a ocultar (opcional)envVars: Configuração de variáveis de ambiente para argumentos e respostas de ferramentas (opcional)timeout: Tempo limite de solicitação em segundos para chamadas de ferramentas downstream (opcional, substitui otimeoutde nível superior;0desativa o tempo limite)enable: Se deve habilitar o servidor (opcional, padrão: true)
-
Servidor tipo HTTP Transmissível (Streamable HTTP):
type: "streamable-http" (obrigatório)url: URL do servidor HTTP Transmissível (obrigatório)headers: Objeto de cabeçalhos HTTP a enviar com as solicitações (opcional)exposedTools: Matriz de ferramentas a expor (opcional)hiddenTools: Matriz de ferramentas a ocultar (opcional)envVars: Configuração de variáveis de ambiente para argumentos e respostas de ferramentas (opcional)timeout: Tempo limite de solicitação em segundos para chamadas de ferramentas downstream (opcional, substitui otimeoutde nível superior;0desativa o tempo limite)enable: Se deve habilitar o servidor (opcional, padrão: true)
Configuração de Filtragem de Ferramentas
-
exposedTools:
- Expõe apenas as ferramentas especificadas
- Matriz contendo strings (nomes originais de ferramentas) ou objetos {original, exposed} (para renomeação)
-
hiddenTools:
- Oculta as ferramentas especificadas
- Matriz de strings de nomes de ferramentas a ocultar
Configuração de Variáveis de Ambiente
-
envVars específicos do servidor:
-
Matriz de configurações de variáveis de ambiente para um servidor específico
-
Cada configuração tem as seguintes propriedades:
name: Nome da variável de ambientevalue: Valor da variável de ambienteexpand: Se deve expandir esta variável em argumentos de ferramentas (opcional, padrão: false)unexpand: Se deve não expandir esta variável em respostas de ferramentas (opcional, padrão: false)
-
Exemplo:
"envVars": [ { "name": "API_KEY", "value": "my-api-key", "expand": true, "unexpand": true }, { "name": "USER_ID", "value": "user123", "expand": true, "unexpand": false } ]
-
-
envVars globais:
-
Matriz de configurações de variáveis de ambiente aplicadas a todos os servidores
-
Usa o mesmo formato de configuração que envVars específicos do servidor
-
Variáveis específicas do servidor com o mesmo nome substituem variáveis globais
-
Definidas no nível raiz do arquivo de configuração
-
Exemplo:
"envVars": [ { "name": "GLOBAL_API_KEY", "value": "global-api-key", "expand": true, "unexpand": true }, { "name": "GLOBAL_ENV", "value": "production", "expand": true, "unexpand": false } ]
-
Configuração de Tempo Limite
Controla quanto tempo o hub proxy aguarda um servidor downstream responder a uma chamada de ferramenta (tools/call) ou listagem de ferramentas (tools/list) antes de abortar.
timeoutde nível superior: Padrão global em segundos aplicado a todos os servidores.timeoutpor servidor (dentro de cadamcpServers[name]): Substitui o valor global para aquele servidor.0: Desativa o tempo limite para aquele escopo (sem limite superior).- Não definido: Usa o padrão do SDK MCP (60 segundos).
Valores cuja conversão em milissegundos (timeout * 1000) exceda 2147483647 ms (o atraso máximo seguro de setTimeout) são limitados a esse teto. Valores negativos, NaN ou não numéricos são ignorados e passam para o próximo nível com um aviso.
Exemplo:
{
"timeout": 30,
"mcpServers": {
"slow-server": { "command": "...", "timeout": 0 },
"fast-server": { "command": "...", "timeout": 5 }
}
}
Configuração de Transporte do Servidor
Configure como o próprio hub proxy é servido através da seção serverTransport:
"serverTransport": {
"type": "streamable-http",
"port": 3006,
"host": "0.0.0.0",
"path": "/mcp",
"auth": {
"type": "bearer",
"token": "your-secret-token"
}
}
type: Tipo de transporte ("stdio", "sse" ou "streamable-http")port: Número da porta para transportes baseados em HTTP (padrão: 3006)host: Host ao qual vincular (padrão: "0.0.0.0")path: Caminho da URL para o endpoint HTTP Transmissível (padrão: "/mcp")auth: Configuração de autenticação (opcional)type: "bearer" (atualmente o único tipo suportado)token: O token bearer necessário para autenticação
A autenticação também pode ser configurada através da variável de ambiente MCP_PROXY_AUTH_TOKEN.
Configuração de Ferramentas Personalizadas
- tools:
- Objeto com nomes de ferramentas personalizadas como chaves
- Cada ferramenta tem
descriptionesubtools subtoolsé chaveado por nome de servidor e contém a lista de ferramentas de cada servidor
Variáveis de Ambiente
MCP_PROXY_CONFIG_PATH: Caminho para o arquivo de configuraçãoMCP_PROXY_LOG_DIRECTORY_PATH: Caminho para o diretório de logsMCP_PROXY_LOG_LEVEL: Nível de log ("debug" ou "info")MCP_PROXY_AUTH_TOKEN: Token bearer para autenticar solicitações recebidas no servidor proxyMCP_PROXY_PATH: Caminho da URL para o endpoint HTTP Transmissível (padrão: "/mcp")KEEP_SERVER_OPEN: Se deve manter o servidor aberto após desconexão do cliente no modo SSE (defina como "1" para habilitar)PORT: Porta para o servidor SSE/HTTP Transmissível (padrão: 3006)HOST: Host ao qual vincular para o servidor HTTP (padrão: "0.0.0.0")
Desenvolvimento
Instale as dependências:
npm install
Compile o servidor:
npm run build
Para desenvolvimento com recompilação automática:
npm run watch
Para desenvolvimento com execução contínua:
# Stdio
npm run dev
# SSE
npm run dev:sse
# Streamable HTTP
npm run dev:http
CLI
A CLI fornece dois modos de operação para interagir com o MCP Proxy Hub.
Modo de Execução Direta
Você pode executar comandos diretamente do seu terminal. Isso é útil para scripts e automação.
-
Listar ferramentas disponíveis:
mcp-proxy-hub-cli list -
Chamar uma ferramenta:
mcp-proxy-hub-cli call <toolName> [args...]toolName: O nome da ferramenta a chamar.args: Argumentos para a ferramenta no formatokey=value.--output-dir <dir>ou-o <dir>: Salvar a saída em um diretório.
Exemplo:
mcp-proxy-hub-cli call my_tool param1=value1 -o output
Modo Interativo
Se você executar a CLI sem argumentos, ela iniciará no modo interativo. Isso fornece uma interface semelhante a um shell para executar comandos.
mcp-proxy-hub-cli
Uma vez no modo interativo, você pode usar os seguintes comandos:
list: Listar ferramentas disponíveis.call <toolName> [args...]: Chamar uma ferramenta com argumentos.exit: Sair da sessão interativa.
Instalação
Para usar com o Claude Desktop, adicione a configuração do servidor:
No MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
No Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-proxy-hub": {
"command": "/path/to/mcp-proxy-hub/build/index.js",
"env": {
"MCP_PROXY_CONFIG_PATH": "/absolute/path/to/your/config.json",
"KEEP_SERVER_OPEN": "1"
}
}
}
}
KEEP_SERVER_OPEN manterá o SSE em execução mesmo se um cliente desconectar. Isso é útil quando múltiplos clientes se conectam ao proxy MCP.
Depuração
Como os servidores MCP se comunicam via stdio, a depuração pode ser desafiadora. Recomendamos usar o MCP Inspector, que está disponível como um script de pacote:
npm run inspector
O Inspector fornecerá uma URL para acessar ferramentas de depuração no seu navegador.