Tu Primer Servidor MCP en Python: Las 3 Primitivas Que Todos los Tutoriales Ignoran

Programación· 4 min de lectura

Tu Primer Servidor MCP en Python: Las 3 Primitivas Que Todos los Tutoriales Ignoran

Llevaba semanas conectando APIs manualmente a mis agentes de IA. Cada integración era un proyecto dentro del proyecto: autenticación, manejo de errores, formats distintos, prompts hardcodeados que se rompían con cualquier cambio.

Entonces me puse a leer la spec de MCP de verdad — no los resúmenes de Twitter — y me di cuenta de que estaba construyendo exactamente lo que MCP ya resuelve.

Y aquí viene lo que nadie te explica bien: MCP tiene tres primitivas, no una. La mayoría de los tutoriales solo tocan tools. Pero si no entiendes resources y prompts, estás usando el 30% del protocolo.

Vamos a arreglarlo hoy.

Primero, contexto rápido (sin fluff)

MCP — Model Context Protocol — es el estándar que resuelve el problema N×M de las integraciones de IA. En lugar de que cada modelo aprenda a hablar con cada servicio de forma diferente, MCP define un protocolo universal. Lo lanzó Anthropic en noviembre de 2024 y en 2026 ya lo han adoptado OpenAI, Google y la Linux Foundation.

La arquitectura es simple:

  • Host: la aplicación de IA (Claude Desktop, tu agente custom)
  • Client: el conector que vive dentro del host
  • Server: tu código que expone datos y funcionalidades

Comunicación: Stdio para servidores locales (más rápido, acceso al sistema), HTTP con SSE para remotos (OAuth, cloud hosting).

Para este tutorial vamos con Stdio — lo más directo para empezar.

Las 3 Primitivas: Tools, Resources y Prompts

Piénsalas así:

Primitiva

Qué hace

Quién la invoca

Tool

Ejecuta una acción

El modelo de IA

Resource

Expone datos de solo lectura

El host / el usuario

Prompt

Plantillas de instrucción reutilizables

El usuario

Vamos con código.

Setup inicial

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Creamos el archivo base servidor.py:

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Primitiva 1: Tool (acción)

Un tool es lo que el modelo puede ejecutar. Buscar, crear, actualizar, eliminar. Tiene parámetros tipados y el modelo decide cuándo llamarlo.

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

El modelo llama a buscar_producto cuando el usuario pregunta “¿tenéis zapatillas de running?”. No le tienes que decir cuándo llamarla — eso lo decide él solo.

Primitiva 2: Resource (datos de solo lectura)

Un resource expone datos que el host puede leer y pasar como contexto. La diferencia clave con un tool: los resources no ejecutan acciones, solo devuelven información.

Útil para: configuración del sistema, catálogos completos, documentos de referencia.

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Primitiva 3: Prompt (plantillas reutilizables)

Aquí es donde la mayoría falla. Un prompt en MCP no es el system prompt de tu modelo — es una plantilla de instrucción que el usuario puede invocar directamente desde el host.

Piénsalo como comandos slash (/analizar-pedido) que rellenan contexto automáticamente.

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Arrancando el servidor

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Para conectarlo a Claude Desktop, añades en tu claude_desktop_config.json:

[@portabletext/react] Unknown block type "code", specify a component for it in the `components.types` prop

Una nota sobre seguridad que no puedes saltarte

El ecosistema MCP ya tiene más de 270 servidores en producción. Con ese crecimiento vienen riesgos reales: prompt injection y tool attacks.

Reglas mínimas antes de poner cualquier servidor MCP en producción:

  • Permisos mínimos: tu servidor solo debe tener acceso a lo que necesita. Nada más.
  • Valida los inputs: nunca confíes en los argumentos que llegan al tool sin sanear.
  • Sandboxing: si ejecutas código externo, aíslalo. Siempre.
  • Nunca expongas secretos en resources: los resources son legibles por el host. Trátalos como contenido público dentro de tu sistema.

Lo que acabas de aprender

Tienes un servidor MCP funcional con las tres primitivas:

Tool para que el modelo ejecute acciones
Resource para exponer datos de contexto
Prompt para plantillas de instrucción reutilizables

La mayoría de los tutoriales que verás en 2026 solo te enseñan los tools. Ahora ya sabes por qué eso es quedarse a medias.

El siguiente paso real: conecta este servidor a un caso de uso tuyo — una base de datos de Supabase, tu CRM, tu sistema de tickets — y empieza a iterar. MCP no es teoría. Es infraestructura que ya está en producción en empresas como Block y Apollo.

Seguimos construyendo.

Brian Mena

Brian Mena

Ingeniero informatico construyendo productos digitales rentables: SaaS, directorios y agentes de IA. Todo desde cero, todo en produccion.

LinkedIn