Simple-MCP-Server
{"type": "text"}
Tarea del Agente MCP
Un sistema MCP (Model Context Protocol) en TypeScript construido para la tarea en MCP_HOMEWORK_SKILL.md: un Host de Agente que carga una Habilidad de Agente (SKILL.md), se conecta a tres servidores MCP a través de los tres transportes requeridos, descubre/agrega sus herramientas, y permite que Gemini seleccione y llame a la herramienta correcta en el servidor correcto.
Arquitectura
Agent Host (src/host)
skill-loader + connection-manager
+ tool-bridge + gemini-client
|
+------------------+------------------+
| | |
v v v
stdio server local HTTP server public HTTP server
(src/servers/stdio- (src/servers/http- (same http-server.ts,
server.ts) server.ts, no auth) API-key protected)
| | |
+------------------+-------------------+
|
shared tool logic (src/servers/shared/tools.ts)
3 tools (calculator, text_stats, unit_convert) + 1 resource + 1 promptsrc/servers/shared/tools.ts— la implementación única de las 3 herramientas, 1 recurso y 1 prompt, registrados de forma idéntica en cada servidor para que la misma lógica se reutilice en todas partes (sin lógica de negocio duplicada).src/servers/stdio-server.ts— MCP sobre stdio (lanzado como proceso hijo).src/servers/http-server.ts— MCP sobre HTTP Streamable. El mismo archivo/código exacto ejecuta los servidores "local" y "público"; la única diferencia es la configuración (PORT,PUBLIC_MCP_API_KEY).src/host/connection-manager.ts— el Host MCP: se conecta a cada servidor configurado, descubre herramientas/recursos/prompts, asigna a los nombres de las herramientas el espacio de nombres<namespace>__<tool>para evitar colisiones, y envía las llamadas de herramientas de vuelta al servidor propietario.src/host/tool-bridge.ts— convierte las herramientas MCP descubiertas en declaraciones de funciones de Gemini.src/host/gemini-client.ts— el bucle de llamada a herramientas de Gemini (enviar mensaje → leer llamadas a funciones → enviar a través del gestor de conexiones → enviar respuestas de funciones de vuelta → repetir hasta obtener el texto final).src/host/skill-loader.ts— carga SKILL.md y lo inyecta como instrucción de sistema del modelo, de modo que la habilidad da forma activamente al uso de herramientas.src/host/agent-host.ts— conecta lo anterior a partir de config/servers.json.src/host/cli.ts— punto de entrada de la CLI (interactivo o--demo).
Related MCP server: mcp-tools-server
Configuración
npm installLos secretos viven en api.env (ya en gitignore):
API_KEY=your-gemini-api-key
# Optional, only needed once you deploy the public server:
# PUBLIC_MCP_URL=https://your-app.onrender.com/mcp
# PUBLIC_MCP_API_KEY=some-strong-random-keyEjecutar cada componente
Servidor stdio (20 puntos)
npm run server:stdio # run directly
npm run inspector:stdio # open MCP Inspector against itInspector descubrirá 3 herramientas (calculator, text_stats,
unit_convert), 1 recurso (docs://unit-conversions) y 1 prompt
(explain-tool-result), y puede ejecutar/leer todos ellos.
Servidor HTTP local
npm run server:http # listens on http://127.0.0.1:8787/mcp, no auth
npm run inspector:http # then connect Inspector to that URLServidor HTTP público (15 puntos)
El mismo http-server.ts se convierte en el servidor "público" una vez que
PUBLIC_MCP_API_KEY está configurada — cada solicitud requiere entonces una cabecera
x-api-key coincidente; las claves ausentes o no válidas reciben 401 Unauthorized.
$env:PORT=8788; $env:PUBLIC_MCP_API_KEY="a-strong-secret"; npm run server:httpDesplegándolo públicamente (Render.com, usando el render.yaml incluido):
git init && git add -A && git commit -m "MCP homework"y luego haz push a un repositorio de GitHub que poseas.En Render: New + → Blueprint → selecciona el repositorio (lee
render.yamlautomáticamente), o crea un Web Service manualmente con:Comando de compilación:
npm install && npm run buildComando de inicio:
npm run start:httpRuta de comprobación de salud:
/health
En el panel de Render, establece la variable de entorno
PUBLIC_MCP_API_KEYa un secreto fuerte (nunca lo confirmes en el repositorio).Una vez desplegado, coloca la URL resultante + clave en
api.env:PUBLIC_MCP_URL=https://<your-service>.onrender.com/mcpyPUBLIC_MCP_API_KEY=<mismo secreto>.Valida con Inspector:
Sin clave → rechazado:
curl -X POST https://<url>/mcp -H "Content-Type: application/json" -d "{...}"devuelve401.Con clave → funciona: pasa
--header "x-api-key: <secreto>"anpx @modelcontextprotocol/inspector --cli <url> --method tools/list.
Host de Agente
npm run agent # interactive CLI
npm run agent:demo # runs a scripted set of demo queriesAl iniciarse, el host:
Carga
SKILL.mdcomo instrucción de sistema.Lee config/servers.json y se conecta al servidor stdio (lanzado automáticamente), al servidor HTTP local (debe estar ya en ejecución) y al servidor HTTP público (se omite automáticamente si
PUBLIC_MCP_URL/PUBLIC_MCP_API_KEYno están configuradas — es opcional para que la demo funcione sin un despliegue en vivo).Descubre y asigna espacio de nombres a cada herramienta, se las entrega a Gemini y envía cada llamada de herramienta que Gemini hace al servidor MCP correcto.
Configuración
El registro de servidores se basa en datos a través de config/servers.json
— añade/elimina servidores allí en lugar de editar el código del host. ${VAR} en una
url se resuelve desde process.env en el momento de la conexión; apiKeyEnv nombra la variable de entorno
cuyo valor se envía como x-api-key.
Habilidad del Agente
SKILL.md instruye al agente a preferir llamar a las herramientas en lugar de
adivinar en aritmética/conversiones/estadísticas de texto, a elegir una herramienta con espacio de nombres por
solicitud lógica, a consultar el recurso docs://unit-conversions cuando no esté seguro
sobre las conversiones admitidas, y a explicar los resultados en lenguaje sencillo. Se
carga textualmente en la instrucción de sistema de Gemini en cada ejecución (ver
src/host/skill-loader.ts), por lo que sus reglas afectan directamente a la selección de herramientas y al
estilo de respuesta — observable en la salida de la demo (p. ej., el agente siempre llama a una
herramienta para la aritmética en lugar de calcularla él mismo).
Notas de seguridad
No se confirman secretos;
api.envestá en gitignore y el servidor público solo leePUBLIC_MCP_API_KEYdel entorno.El servidor HTTP público rechaza cualquier solicitud sin una cabecera
x-api-keycoincidente (401), y acepta solicitudes una vez que se proporciona una clave válida.
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
- FlicenseAqualityDmaintenanceA lightweight MCP server providing utility tools for math, text processing, data conversion, and URL fetching. It supports both STDIO and SSE communication modes for seamless integration with Claude Desktop and remote AI agents.51
- AlicenseNot gradedqualityBmaintenanceA general-purpose MCP server with utility tools including datetime information, safe math calculations, text statistics, JSON extraction, knowledge base search, and HTTP GET requests. It demonstrates server-side MCP implementation and can be connected to Claude Desktop or LangGraph agents.MIT
- FlicenseNot gradedqualityDmaintenanceProvides math and weather tools accessible via LangGraph agent using MCP protocol with stdio and streamable HTTP transports.1
- FlicenseNot gradedqualityDmaintenanceLocal MCP server that exposes fixed tools for GPT, Claude, and Gemini while routing to any OpenAI-compatible chat completions backend with independent configuration per target.1
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
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/kindinh903/Simple-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server