Skip to main content
Glama

tin-canMCP

Una plantilla prescriptiva para crear servidores MCP grandes (más de 20 herramientas) organizados como un catálogo escalonado con un intermediario (broker).

Cada servidor tin-canMCP expone exactamente 7 herramientas al cliente de IA, independientemente del tamaño del catálogo. El catálogo en sí puede contener cientos de herramientas; el intermediario limita la visibilidad para que la IA solo vea un subconjunto acotado y relevante para la tarea en cualquier momento.

Cuándo usar esta plantilla

Utilice tin-canMCP cuando su MCP vaya a envolver muchas herramientas (binarios CLI, puntos finales de API, comandos de AppleScript, métodos de SDK). El patrón de intermediario mantiene el número de herramientas visibles para la IA por debajo de un límite amigable para la caché.

NO utilice tin-canMCP si solo necesita de 3 a 10 herramientas sin agrupación. Un servidor FastMCP simple es más sencillo.

Related MCP server: production-grade-mcp-agentic-system

Las 7 herramientas que expone cada servidor

Herramienta

Propósito

catalog_status

Muestra el estado de activación actual y sugerencias de enrutamiento

catalog_list_groups

Lista todos los grupos en el catálogo

catalog_search_tools

Busca en todo el catálogo por nombre/descripción (no se requiere activación)

catalog_activate

Activa grupos/niveles para que sus herramientas se puedan ejecutar

catalog_escalate

Amplía la activación al siguiente nivel (canónico → avanzado → interno)

catalog_active_tools

Muestra qué herramientas se pueden ejecutar actualmente

catalog_run_tool

Ejecuta una herramienta activa por nombre con argumentos

Las herramientas de dominio solo se alcanzan a través de catalog_run_tool. Consulte HOW-TO-USE.md para conocer el flujo de trabajo completo.

Inicio rápido

pip install -r requirements.txt
cp .env.example .env

# Scaffold a catalog for your domain
python scripts/scaffold_catalog.py \
  --name mydomain \
  --source cli \
  --tools list,get,create,delete \
  --out catalog-runtime \
  --force

# Validate the registry is structurally sound
python scripts/validate_registry.py catalog-runtime

# Run the server
python main.py --transport=stdio

En este punto, el servidor se carga, expone las 7 herramientas del intermediario, y catalog_run_tool se negará a ejecutar nada hasta que complete los marcadores TODO en catalog-runtime/registry/tools.json y los manifiestos por herramienta en catalog-runtime/tools/.

Siguiente: lea HOW-TO-USE.md; le guiará a través de la creación de manifiestos de herramientas, estrategias de agrupación y asignación de niveles.

Diseño del repositorio

.
├── app/
│   ├── catalog_runtime/     # Broker, loader, executor (DO NOT modify)
│   ├── tools/               # Registers the 7 broker MCP tools (DO NOT modify)
│   ├── prompts/             # Optional MCP prompts
│   ├── config.py            # Env-backed settings
│   └── server.py            # FastMCP server
├── catalog-runtime/
│   ├── registry/            # YOUR 7 registry JSON files — edit these
│   ├── tools/               # YOUR per-tool manifests — edit these
│   └── schema/              # JSON Schemas for registry files (reference)
├── scripts/
│   ├── scaffold_catalog.py  # Generate a registry skeleton
│   └── validate_registry.py # Check invariants (run in CI)
├── ai-prompts/              # Master prompt + per-source hints for AI implementation
├── docs/
│   └── catalog-runtime-template.md  # Full schema contract reference
├── main.py
└── HOW-TO-USE.md            # Prescriptive authoring workflow

Configuración

Variables de entorno (a través de .env o shell):

  • VAR_CATALOG_RUNTIME_DIR — ruta a su tiempo de ejecución de catálogo (predeterminado: catalog-runtime/ local del repositorio)

  • VAR_SERVER_NAME — nombre del servidor MCP mostrado a los clientes (predeterminado: tin-canMCP)

  • VAR_COMMAND_TIMEOUT_SECONDS — tiempo de espera por herramienta (predeterminado: 20)

  • VAR_MAX_OUTPUT_CHARS — umbral de truncamiento para stdout/stderr (predeterminado: 12000)

  • MCP_TRANSPORT — stdio, sse o web (predeterminado: stdio)

Qué NO hacer

  • No añada decoradores @mcp.tool() para sus herramientas de dominio en app/tools/. Eso anula el propósito del intermediario. Añada entradas al catálogo en su lugar.

  • No aumente max_tools_per_activation por encima de ~15. El objetivo principal es una superficie visible acotada.

  • No ponga todas las herramientas en canonical. Utilice los niveles advanced e internal para diferir las herramientas de nicho.

  • No omita validate_registry.py. Los errores de referencia cruzada son silenciosos.

Agradecimientos

Esta plantilla se inspiró en el trabajo de josharsh sobre patrones de intermediarios MCP.

Licencia

MIT. Consulte LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A progressive-disclosure gateway for MCP servers that keeps tool lists small by exposing one top-level tool per server, allowing agents to search, list, inspect, and call underlying tools within a selected domain.
    14
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A browse-first MCP middleware that provides an LLM-friendly catalogue for discovering and invoking tools across multiple upstream MCP servers, reducing context overhead.
    -