MCP Hub

Um servidor hub que se conecta e gerencia outros servidores MCP.

Documentação

Install MCP Server

Install in VS Code

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:

  1. Variável de ambiente: Defina a variável de ambiente MCP_CONFIG_PATH para o caminho do arquivo de configuração
  2. Argumento de linha de comando: Use a opção --config-path para especificar o caminho do arquivo de configuração
  3. Caminho padrão: Use o arquivo mcp-config.json no 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 ferramenta
  • toolName: Nome da ferramenta a ser chamada
  • toolArgs: 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 ferramentas
  • searchIn: 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 feature
  • fix: resolve issue with server timeout
  • docs: update API documentation
  • chore: 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ção
  • style: Alterações que não afetam o significado do código
  • refactor: Alteração de código que não corrige um bug nem adiciona uma funcionalidade
  • perf: Alteração de código que melhora o desempenho
  • test: Adição de testes ausentes ou correção de testes existentes
  • chore: 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