mcp-tool-hub
MCP Tool Hub
Un hub modular y extensible de servidores múltiples Model Context Protocol — construido en TypeScript para equipos de automatización de TI.
Proporciona a tu LLM acceso a herramientas del mundo real: archivos, Git, contenido web y memoria persistente. Despliega en cualquier número de máquinas cliente simultáneamente mediante Ansible.
Arquitectura
mcp-tool-hub/
├── packages/
│ ├── core/ ← Shared types + BaseMCPServer abstract class
│ ├── server-filesystem/ ← Sandboxed local file access (read/write/list/delete)
│ ├── server-git/ ← Git log, diff, file contents, branches, status
│ ├── server-fetch/ ← Web fetching: HTML, JSON APIs, URL health checks
│ └── server-memory/ ← Persistent JSON knowledge base (survives restarts)
├── host/ ← Orchestrator: registry + CLI + stdio JSON interface
├── ansible/ ← Playbook, inventory, systemd service templates
└── docs/ ← How to add new servers (with template)La arquitectura sigue el patrón del Model Context Protocol:
Cada servidor es completamente independiente: su propio paquete, su propia compilación
El registro en el host mapea
toolName → serveren tiempo de ejecuciónLa CLI expone una interfaz JSON stdio: cualquier integración de LLM envía
{"toolName":"...", "arguments":{...}}a stdin y lee el resultado desde stdoutAñadir un nuevo servidor = crear un paquete, extender
BaseMCPServer, registrar encli.ts
Related MCP server: mcp-toolbox
Inicio rápido
1. Instalar y compilar
git clone https://github.com/your-org/mcp-tool-hub.git
cd mcp-tool-hub
npm install
npm run build2. Configurar
cp .env.example .env
# Edit .env with your paths and settings3. Ejecutar
# Via npm
npm run start --workspace=host
# Or directly
node host/dist/cli.js4. Llamar a una herramienta
Envía JSON a stdin, obtén JSON desde stdout:
echo '{"toolName":"read_file","arguments":{"path":"hello.txt"}}' | node host/dist/cli.jsHerramientas disponibles
📁 Servidor de sistema de archivos
Todas las operaciones están aisladas en MCP_FS_ROOT. El recorrido de rutas (../) está bloqueado.
Herramienta | Descripción |
| Leer el contenido de un archivo (utf8 o base64) |
| Escribir o añadir contenido a un archivo |
| Listar el contenido de un directorio (opcionalmente recursivo) |
| Eliminar un archivo |
| Mover o renombrar un archivo |
| Obtener tamaño, fechas y tipo de una ruta |
🔀 Servidor Git
Solo lectura. Sin operaciones de escritura.
Herramienta | Descripción |
| Historial de commits de un repositorio o archivo |
| Contenido de un archivo en un commit/rama específico |
| Diferencias entre dos referencias |
| Estado del árbol de trabajo |
| Listar ramas (locales + remotas opcionales) |
| Detalles completos del commit y diferencias |
🌐 Servidor de obtención (Fetch)
Admite una lista blanca de dominios opcional mediante MCP_FETCH_ALLOWED_DOMAINS.
Herramienta | Descripción |
| Obtener HTML o texto de una URL |
| Obtener y analizar una respuesta de API JSON |
| Comprobar si una URL es accesible (solicitud HEAD) |
🧠 Servidor de memoria
Persistente tras reinicios. Respaldado por un archivo JSON.
Herramienta | Descripción |
| Almacenar un valor con clave, espacio de nombres y etiquetas |
| Recuperar un valor por clave |
| Búsqueda de texto completo en todas las entradas |
| Eliminar una entrada |
| Listar todos los espacios de nombres con sus conteos |
| Eliminar todas las entradas en un espacio de nombres |
Despliegue con Ansible
Despliega en todas tus máquinas cliente simultáneamente:
cd ansible
# First time
ansible-playbook -i inventory.yml deploy-mcp-hub.yml
# Update only (rebuild + restart)
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --tags update
# Deploy to specific group
ansible-playbook -i inventory.yml deploy-mcp-hub.yml --limit serversEl playbook:
Instala Node.js 20 (si no está presente)
Crea un usuario de sistema dedicado
mcp-hubCopia y compila el proyecto
Escribe la configuración
.envdesde tus variables de AnsibleInstala e inicia un servicio systemd (reinicio automático en caso de fallo)
Las variables por host en inventory.yml te permiten configurar diferentes dominios permitidos, niveles de registro y rutas por grupo de máquinas.
Añadir un nuevo servidor
Consulta docs/adding-a-new-server.template.ts para ver la plantilla completa con comentarios.
En resumen:
// 1. Create packages/server-myservice/src/my-server.ts
export class MyServer extends BaseMCPServer {
constructor(options: MyOptions) {
super(SERVER_INFO, options);
this.registerTool("my_tool", this.handleMyTool.bind(this));
}
private async handleMyTool(args) {
return this.ok({ result: "done" });
}
}
// 2. Register in host/src/cli.ts
hub.use(new MyServer({ apiKey: process.env.MY_API_KEY! }));Ideas: server-slack, server-postgres, server-docker, server-ansible, server-ssh, server-jira
Variables de entorno
Variable | Predeterminado | Descripción | |||
|
| Raíz para todos los datos del hub | |||
|
| Raíz del entorno aislado del sistema de archivos | |||
|
| Ruta base de los repositorios Git | |||
|
| Archivo de almacenamiento de memoria | |||
| (vacío = todos) | Lista blanca de dominios separados por comas | |||
|
| `debug | info | warn | error` |
Notas de seguridad
Sistema de archivos: Estrictamente aislado. Los ataques de recorrido de rutas devuelven un error, no datos.
Git: Solo lectura. No se exponen operaciones de
commit,pushoclone.Fetch: La lista blanca de dominios opcional evita SSRF a servicios internos.
Servicio Systemd: Se ejecuta como un usuario sin privilegios de root con
PrivateTmp=trueyNoNewPrivileges=true.
Requisitos
Node.js ≥ 18 (para la API
fetchnativa)Git (para
server-git)Linux con systemd (para el despliegue con Ansible)
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA modular MCP server providing file operations, web search, URL scraping, and sandboxed command execution for LLM interactions.1MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server enabling LLMs to execute commands, manage files, interact with Figma, search the web, generate images, and more, extending their capabilities beyond text generation.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMCP server that gives any LLM a managed Docker workspace with live browser, terminal, code execution, document skills, and autonomous sub-agents.1,560117MIT
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server that enables LLMs to safely execute code, control file systems, search the web, and integrate with services like Gmail and TMDB.MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that gives your AI access to the source code and docs of all public github repos
Cloud-hosted MCP server for durable AI memory
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TOMJARA/mcp-tool-hub'
If you have feedback or need assistance with the MCP directory API, please join our Discord server