MCP-Demo
mcp-demo
Un servidor MCP mínimo en Python, construido por fases para que cada commit enseñe un concepto. Estado final: Claude Code puede llamar a modelos locales de Ollama (gemma3:4b / 3:12b) como una herramienta, desviando el trabajo de baja prioridad de la API hacia el servidor doméstico.
¿Qué es MCP, realmente?
Model Context Protocol es un protocolo estandarizado JSON-RPC 2.0 que permite a un cliente LLM (Claude Code, Claude Desktop, Cursor) descubrir e invocar herramientas, obtener recursos y cargar plantillas de prompts desde procesos separados llamados servidores MCP. MCP es al tooling de LLM lo que LSP es al soporte de lenguaje en IDEs: un protocolo, muchas implementaciones interoperables.
Las piezas móviles
┌───────────────────┐ stdio / HTTP ┌──────────────────┐
│ MCP Client │ ◄──JSON-RPC──► │ MCP Server │
│ (Claude Code) │ │ (this repo) │
└───────────────────┘ └──────────────────┘
│ │
│ spawns as child │ hits
│ process (stdio) │ localhost:11434
▼ ▼
your shell env Ollama / gemma3Cliente — integrado en la aplicación LLM
Servidor — cualquier proceso que hable MCP
Transporte —
stdio(el cliente inicia el servidor como hijo, canaliza JSON-RPC) ostreamable-http(el servidor es un servicio web). Este repositorio utiliza stdio.
Tres primitivas que expone un servidor MCP
Primitiva | Qué es | Uso en este repositorio |
Herramientas | Funciones que el LLM puede llamar |
|
Recursos | Blobs de solo lectura que el cliente puede obtener |
|
Prompts | Plantillas de prompts predefinidas | (no se usa — mantenido al mínimo) |
Progresión de fases
Cada fase es un commit — git log muestra la evolución.
✅ scaffold — pyproject, README, .gitignore.
✅ servidor hello-world — una herramienta
echo+ cliente de prueba de humo. Demuestra el ciclo de vida completo: inicio del cliente → handshake → descubrimiento de herramientas → llamada a herramienta.✅ herramienta ollama_ask — herramienta asíncrona que hace POST a
localhost:11434/api/generatey devuelve la respuesta de Gemma.✅ pulido — añade el parámetro
systemaollama_asky expone un recurso enollama://models(lista de modelos descargados).
Instalación y ejecución
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
# Phase 2+ only: run the server by hand to smoke-test
python -m mcp_demo.serverEl servidor lee JSON-RPC desde stdin y escribe en stdout — si lo ejecutas directamente en una terminal, simplemente se quedará esperando entrada. Eso es esperado. El cliente (Claude Code) es quien realmente lo alimenta.
Registro en Claude Code
Añadir a ~/.claude/settings.json:
{
"mcpServers": {
"mcp-demo": {
"command": "/home/booty/mcp-demo/.venv/bin/python",
"args": ["-m", "mcp_demo.server"]
}
}
}Reinicia Claude Code. Las herramientas aparecerán como mcp__mcp-demo__<tool_name>.
Lecturas adicionales
Especificación: https://modelcontextprotocol.io/specification
SDK de Python: https://github.com/modelcontextprotocol/python-sdk
Inspector (una interfaz de depuración para probar cualquier servidor MCP):
npx @modelcontextprotocol/inspector
Related MCP Connectors
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Cloudflare Workers MCP server: ai-model-router
An MCP server that provides an API to LLMs to manage their JumpCloud resources.