← capítulo

Servidores MCP y el Model Context Protocol

Capítulo 8 · una herramienta, cualquier modelo

La hora

El problema

Cada framework tiene su propio formato de herramienta. Schemas de OpenAI, FunctionDeclarations de Gemini, el siguiente, el siguiente.

La herramienta de abajo es idéntica cada vez. Sigues reescribiendo el cableado.

MCP en una frase

Escribe la herramienta una vez; cualquier cliente, cualquier modelo, la alcanza.

El servidor (ningún modelo a la vista)

if method == "tools/list":
    result = {"tools": _TOOLS}
elif method == "tools/call":
    payload = call(params["name"], params["arguments"])
    result = {"content": [{"type": "text", "text": json.dumps(payload)}]}

Lee JSON-RPC desde stdin, escribe a stdout. Ese es el transporte stdio.

El handshake

self._req("initialize", {"protocolVersion": "2025-06-18",
                         "capabilities": {}, "clientInfo": {...}})
self._send({"jsonrpc": "2.0", "method": "notifications/initialized"})

initialize → respuesta → notificación initialized. Después puedes llamar.

Un servidor, cualquier modelo

# OpenAI: MCP tool -> function tool (JSON Schema is already the right shape)
{"type": "function", "name": t["name"], "parameters": t["inputSchema"]}

# Gemini: MCP tool -> FunctionDeclaration
types.FunctionDeclaration(name=t["name"], parameters=to_schema(t["inputSchema"]))

Solo cambia la traducción. El servidor no se mueve.

Tres primitivas

Acciones, contexto, instrucciones. Todo el vocabulario de un servidor.

Ponlo a trabajar — tres apps

Un solo mcp_client.py compartido. Los servidores son la parte interesante.

Function calling vs MCP

Function calling: el formato de una sola llamada a herramienta.

MCP: todo el ciclo de vida — descubrimiento, invocación, resultados, errores — a través de muchas herramientas y muchos servidores, agnóstico al modelo.

Complementarios, no en competencia.

Lo que te llevas

MCP es JSON-RPC con un handshake y tres verbos. Construye una herramienta una vez, publícala como servidor, y cada cliente MCP — Claude Desktop, tu IDE, el /mcp de este blog — puede alcanzarla. Sigue: embeddings, y el camino hacia el retrieval.