MCP Hub
Um servidor hub que se conecta e gerencia outros servidores MCP.
Documentação
Servidor MCP-Hub-MCP
Um servidor hub que conecta e gerencia outros servidores MCP (Model Context Protocol).
Visão Geral
Este projeto constrói um servidor hub MCP que conecta e gerencia múltiplos servidores MCP (Model Context Protocol) através de uma interface única. Ele ajuda a prevenir uso excessivo de contexto e poluição de MCPs usados com pouca frequência (ex.: Atlassian MCP, Playwright MCP), permitindo que você os conecte apenas quando necessário. Isso reduz erros de IA e melhora o desempenho, mantendo o conjunto de ferramentas ativas focado e gerenciável.
Principais Recursos
- Conexão automática a outros servidores MCP via arquivo de configuração
- Lista as ferramentas disponíveis nos servidores conectados
- Chama ferramentas nos servidores conectados e retorna os resultados
Configuração
Adicione isto ao seu mcp.json:
Usando npx
{
"mcpServers": {
"other-tools": {
"command": "npx",
"args": [
"-y",
"mcp-hub-mcp",
"--config-path",
"/Users/username/mcp.json"
]
}
}
}
Instalação e Execução
Requisitos
- Node.js 18.0.0 ou superior
- npm, yarn ou pnpm
Instalação
# Clone repository
git clone <repository-url>
cd mcp-hub-mcp
# Install dependencies
npm install
# or
yarn install
# or
pnpm install
Build
npm run build
# or
yarn build
# or
pnpm build
Execução
npm start
# or
yarn start
# or
pnpm start
Modo de Desenvolvimento
npm run dev
# or
yarn dev
# or
pnpm dev
Arquivo de Configuração
O servidor MCP-Hub-MCP usa um arquivo de configuração no formato Claude Desktop para conectar automaticamente a outros servidores MCP. Você pode especificar o arquivo de configuração das seguintes formas:
- Variável de ambiente: Defina a variável de ambiente
MCP_CONFIG_PATHpara o caminho do arquivo de configuração - Argumento de linha de comando: Use a opção
--config-pathpara especificar o caminho do arquivo de configuração - Caminho padrão: Use o arquivo
mcp-config.jsonno diretório atual
Formato do arquivo de configuração:
{
"mcpServers": {
"serverName1": {
"command": "command",
"args": ["arg1", "arg2", ...],
"env": { "ENV_VAR1": "value1", ... }
},
"serverName2": {
"command": "anotherCommand",
"args": ["arg1", "arg2", ...]
}
}
}
Exemplo:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Downloads"
]
},
"other-server": {
"command": "node",
"args": ["path/to/other-mcp-server.js"]
}
}
}
Uso
O servidor MCP-Hub-MCP fornece as seguintes ferramentas:
1. list-all-tools
Retorna uma lista de ferramentas de todos os servidores conectados.
{
"name": "list-all-tools",
"arguments": {}
}
2. call-tool
Chama uma ferramenta em um servidor específico.
serverName: Nome do servidor MCP do qual chamar a ferramentatoolName: Nome da ferramenta a ser chamadatoolArgs: Argumentos a serem passados para a ferramenta
{
"name": "call-tool",
"arguments": {
"serverName": "filesystem",
"toolName": "readFile",
"toolArgs": {
"path": "/Users/username/Desktop/example.txt"
}
}
}
3. find-tools
Encontra ferramentas que correspondem a um padrão regex em todos os servidores conectados (funcionalidade semelhante a grep).
pattern: Padrão regex para pesquisar em nomes e descrições de ferramentassearchIn: Onde pesquisar: "name", "description" ou "both" (padrão: "both")caseSensitive: Se a pesquisa deve diferenciar maiúsculas de minúsculas (padrão: false)
{
"name": "find-tools",
"arguments": {
"pattern": "file",
"searchIn": "both",
"caseSensitive": false
}
}
Exemplos de padrões:
"file"- Encontra todas as ferramentas contendo "file""^read"- Encontra todas as ferramentas começando com "read""(read|write).*file"- Encontra ferramentas para ler ou escrever arquivos"config$"- Encontra ferramentas terminando com "config"
Exemplo de saída:
{
"filesystem": [
{
"name": "readFile",
"description": "Read the contents of a file",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to read"
}
},
"required": ["path"]
}
},
{
"name": "writeFile",
"description": "Write content to a file",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Path to the file to write"
},
"content": {
"type": "string",
"description": "Content to write to the file"
}
},
"required": ["path", "content"]
}
}
]
}
Convenção de Mensagens de Commit
Este projeto segue Conventional Commits para versionamento automático e geração de CHANGELOG.
Formato: <type>(<scope>): <description>
Exemplos:
feat: add new hub connection featurefix: resolve issue with server timeoutdocs: update API documentationchore: update dependencies
Tipos:
feat: Nova funcionalidade (incremento de versão MINOR)fix: Correção de bug (incremento de versão PATCH)docs: Apenas alterações de documentaçãostyle: Alterações que não afetam o significado do códigorefactor: Alteração de código que não corrige um bug nem adiciona uma funcionalidadeperf: Alteração de código que melhora o desempenhotest: Adição de testes ausentes ou correção de testes existenteschore: Alterações no processo de build ou ferramentas auxiliares
Alterações de Quebra (Breaking Changes):
Adicione BREAKING CHANGE: no rodapé do commit para acionar um incremento de versão MAJOR.
Outros Links
Licença
MIT