McpOrchestrator

Un servidor MCP... para tus otros servidores MCP.

Documentación

McpOrchestrator — one relay between your agent and every MCP server

McpOrchestrator — un orquestador MCP nativo de .NET

NuGet Downloads License: MIT

Cada servidor MCP que conectas cuesta contexto antes de que el agente haga nada: sus manifiestos de herramientas permanecen en el prompt en cada turno. McpOrchestrator coloca un servidor entre tu agente y todos los demás, y carga los manifiestos de las herramientas downstream bajo demanda, de modo que el contexto siempre activo del agente se mantiene plano sin importar cuántos servidores agregues. El agente ve tres meta-herramientas — list_capabilities → discover_tools → route — y el orquestador es un relé puro: reenvía exactamente lo que el agente envía, sin interpretarlo nunca. También puede servir Agent Skills con la misma disciplina de bajo demanda.

Véalo en 70 segundos

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

Impacto medido

Frente a una configuración real de MCP en el lugar de trabajo, medida con el /usage de Copilot CLI:

Tokens en contexto
MCP conectado directamente (manifiestos cargados de antemano)17,900
El mismo MCP detrás de McpOrchestrator1,400
Reducción~13x

El ahorro escala con el número de servidores. Mide tu propia configuración primero: un comando, nada instalado, ni un solo archivo modificado (requiere el SDK de .NET):

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

Inicio rápido

Desde una configuración MCP existente, cd a la carpeta que contiene la configuración de tu host (.mcp.json, .vscode/mcp.json o una configuración de Cursor) y ejecuta:

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

Levanta tus servidores stdio en un orchestrator.config.json generado, respalda la configuración del host y la reescribe para lanzar solo el orquestador. El catálogo generado se ve así: una entrada por cada 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
  ]
}

La línea summary es sobre la que el agente enruta: refina cualquier línea que se lea mal. Reinicia tu host MCP y listo: el agente descubre todo por sí mismo a través de list_capabilities → discover_tools → route, y cada edición posterior de este archivo se recarga en caliente sin reiniciar.

Agregar una skill

Una skill es una carpeta con un SKILL.md: instrucciones que el agente descubre y sigue por sí mismo cuando una tarea coincide. Crea una:

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.

Apunta el orquestador a la carpeta en orchestrator.config.json:

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

Guarda: se recarga en caliente. El agente ahora ve el nombre de la skill + una descripción de una línea a través de list_skills y carga las instrucciones completas solo cuando una tarea lo requiere. Las skills también pueden provenir de un repositorio git compartido o de un índice HTTP, con listas de permitidos/denegados y fijación de integridad: consulta docs/skills.md.

Nota: estas skills son solo para el agente: el modelo las descubre y las sigue a través de herramientas. No se convierten en skills nativas del host (sin listado de /skills ni comando de barra en Claude Code, sin entrada en el selector de skills del IDE).

Documentación

Todo lo demás vive en McpOrchestrator/README.md y docs/:

Licencia

MIT