Introduction to Model Context Protocol — Resumen de estudio

Paths: Developer · Architect · FDE · 14 lecciones, 12 videos (hands-on con el SDK de Python y uv)

Construir servidores y clientes MCP desde cero y entender sus 3 primitives: tools, resources y prompts.


1. Qué es MCP y qué problema resuelve

2. El cliente MCP

3. Construir un servidor (Python SDK)

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("DocumentMCP", log_level="ERROR")

@mcp.tool(name="read_doc_contents",
          description="Read the contents of a document and return it as a string.")
def read_document(doc_id: str = Field(description="Id of the document to read")):
    if doc_id not in docs: raise ValueError(f"Doc with id {doc_id} not found")
    return docs[doc_id]

4. MCP Inspector

5. Implementar el cliente

async def list_tools(self):  return (await self.session().list_tools()).tools
async def call_tool(self, name, inp): return await self.session().call_tool(name, inp)

6. Resources (datos de solo lectura, como un GET)

``python @mcp.resource("docs://documents", mime_type="application/json") def list_docs(): return list(docs.keys()) ``

``python @mcp.resource("docs://documents/{doc_id}", mime_type="text/plain") def fetch_doc(doc_id: str): ... ``

7. Prompts (plantillas de instrucciones probadas)

@mcp.prompt(name="format", description="Rewrites the contents of the document in Markdown format.")
def format_document(doc_id: str = Field(...)) -> list[base.Message]:
    return [base.UserMessage(f"...<document_id>{doc_id}</document_id>... use 'edit_document'...")]

8. Cómo elegir el primitive (repaso)

PrimitiveLo controlaPara quéEjemplo en Claude.ai
ToolsEl modeloDarle capacidades nuevas a ClaudeEjecutar código o hacer cálculos
ResourcesLa appDatos para la UI o para dar contexto"Add from Google Drive"
PromptsEl usuarioWorkflows predefinidos que se disparan a demandaBotones de workflow bajo el input

"Las tools sirven al modelo, los resources a tu app y los prompts a tus usuarios."


Evaluación final (tus respuestas, 6 de 7)

  1. Componentes del cliente → la clase MCP Client + la Client Session.
  2. Descubrir tools → ListToolsRequest.
  3. Probar el servidor sin una app → MCP Inspector (mcp dev mcp_server.py).
  4. El problema sin MCP → escribir y mantener todo el código de las tools de GitHub tú mismo (la fallaste).
  5. Botón de "resumir documento" que dispara el usuario → Prompts.
  6. Definir una tool en Python → decorador @mcp.tool().
  7. Recurso por ID (docs://documents/report.pdf) → templated resource.