McpOrchestrator

Um servidor MCP... para seus outros servidores MCP.

Documentação

McpOrchestrator — one relay between your agent and every MCP server

McpOrchestrator — um orquestrador MCP nativo .NET

NuGet Downloads License: MIT

Cada servidor MCP que você conecta custa contexto antes que o agente faça qualquer coisa — os manifests das ferramentas ficam no prompt a cada turno. O McpOrchestrator coloca um servidor entre o seu agente e todos os outros e carrega os manifests das ferramentas downstream sob demanda, para que o contexto sempre ativo do agente permaneça estável, não importa quantos servidores você adicione. O agente vê três meta-ferramentas — list_capabilities → discover_tools → route — e o orquestrador é um relé puro: ele encaminha exatamente o que o agente envia, sem nunca interpretar. Ele também pode servir Agent Skills com a mesma disciplina sob demanda.

Veja em 70 segundos

https://github.com/user-attachments/assets/741c1afa-4bef-4870-9b84-e2c245b8117e

Impacto medido

Contra uma configuração real de MCP no ambiente de trabalho, medida com o /usage do Copilot CLI:

Tokens no contexto
MCP conectado diretamente (manifests carregados antecipadamente)17.900
Mesmo MCP atrás do McpOrchestrator1.400
Redução~13x

A economia escala com o número de servidores. Meça sua própria configuração primeiro — um comando, nada instalado, nenhum arquivo alterado (requer o .NET SDK):

cd ~/my-project          # a folder with a .mcp.json / .vscode/mcp.json / Cursor config
dotnet tool execute McpOrchestrator profile

Início rápido

A partir de uma configuração MCP existente, cd para a pasta que contém a configuração do seu host (.mcp.json, .vscode/mcp.json ou uma configuração do Cursor) e execute:

dotnet tool execute McpOrchestrator --yes init      # dnx McpOrchestrator --yes init  works too

Ele eleva seus servidores stdio para um orchestrator.config.json gerado, faz backup da configuração do host e a reescreve para iniciar apenas o orquestrador. O catálogo gerado fica assim — uma entrada por servidor downstream:

{
  "capabilities": [
    {
      "name": "files",
      "summary": "Read and search files under the project root.", // auto-generated
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "C:/projects"]
    }
    // …one entry per server init found
  ]
}

A linha summary é o que o agente usa para rotear — refine qualquer uma que não leia bem. Reinicie seu host MCP e pronto: o agente descobre tudo sozinho por meio de list_capabilities → discover_tools → route, e cada edição posterior neste arquivo recarrega a quente sem reiniciar.

Adicionar uma skill

Uma skill é uma pasta com um SKILL.md — instruções que o agente descobre e segue sozinho quando uma tarefa corresponde. Crie uma:

my-skills/
└── release-notes/
    └── SKILL.md
---
name: release-notes
description: Writes user-facing release notes from a git commit range. Use when asked for release notes or a changelog entry.
---

1. Collect the commits since the last release tag.
2. Group by user impact; drop internal-only changes.
3. One sentence per change, present tense.

Aponte o orquestrador para a pasta em orchestrator.config.json:

"skills": {
  "sources": [{ "id": "local", "type": "directory", "path": "C:/my-skills" }]
}

Salve — ela recarrega a quente. O agente agora vê o nome da skill + uma descrição de uma linha via list_skills e carrega as instruções completas apenas quando uma tarefa exigir. Skills também podem vir de um repositório git compartilhado ou de um índice HTTP, com listas de permitir/negar e fixação de integridade — veja docs/skills.md.

Nota: essas skills são apenas para o agente — o modelo as descobre e segue por meio de ferramentas. Elas não se tornam skills nativas do host (sem listagem /skills ou comando de barra no Claude Code, sem entrada no seletor de skills da IDE).

Documentação

Todo o resto está em McpOrchestrator/README.md e docs/:

Licença

MIT