Todos los recursos

El repo oficial de servidores del Model Context Protocol es el lugar canónico para aprender el protocolo leyendo código que funciona: servidores de referencia, una lista larga de servidores de la comunidad y los patrones para escribir los tuyos. Aquí va cómo sacarle provecho de verdad: qué servidores trae el repo, cómo conectar uno a Claude en dos minutos, y las decisiones de seguridad que separan una superficie de tools útil de una puerta abierta para un atacante.

Servidores MCP: el catálogo de referencia del que copias

En resumen

  • El repo «modelcontextprotocol/servers» son dos cosas: un conjunto reducido de servidores de referencia mantenidos (filesystem, fetch, git, memory y más) y un índice curado que apunta a cientos de servidores oficiales y de la comunidad.
  • MCP es el protocolo abierto que permite reutilizar un mismo servidor de tools desde cualquier cliente compatible (Claude Code, la app de escritorio, tu propio agente) en vez de reimplementar los schemas de tools en cada app.
  • No escribas un servidor partiendo de un archivo en blanco: clona uno de referencia en el mismo lenguaje, recórtalo a una sola tool y crece desde ahí.
  • Cada servidor que agregas es nueva superficie de ataque. Acótalo al mínimo privilegio, nunca le des un token de admin a un modelo y valida las entradas en el servidor: la inyección de prompts apunta a tus tools, no solo a tu chat.
  • Para capacidades genéricas (archivos, git, HTTP), usa un servidor de referencia o de la comunidad que ya exista; escribe el tuyo solo cuando la capacidad es tuya y la frontera de seguridad también tiene que serlo.

La mayoría de los equipos descubren MCP por la vía lenta: leen la spec, se quedan mirando el formato de mensajes y luego tratan de escribir un servidor desde un archivo vacío. Esa es la puerta equivocada. La forma más rápida de entender el Model Context Protocol es leer servidores que ya funcionan, y el repo oficial «modelcontextprotocol/servers» existe justo para eso: es el catálogo canónico de implementaciones de referencia y un índice curado de las de la comunidad. Este texto es el recorrido práctico: qué hay de verdad en el repo, cómo conectar un servidor a Claude en un par de minutos, cuándo copiar en vez de escribir el tuyo, y las decisiones de seguridad que más pesan antes de darle a un modelo acceso real a un sistema.

01 · Qué es el repo en realidad

El repo son dos cosas distintas bajo un mismo nombre, y confundirlas genera enredos.

La primera es un conjunto reducido de servidores de referencia mantenidos que viven dentro del repo. Son los que los maintainers mantienen al día conforme el protocolo avanza, y de paso son el mejor material de aprendizaje que vas a encontrar: cortos, idiomáticos y correctos. La lista cubre las capacidades que casi todo agente termina necesitando.

  • filesystem: leer, escribir y buscar archivos bajo una raíz que tú eliges.
  • fetch: traer una URL y devolverle el contenido al modelo, al estilo web-a-texto.
  • git: leer y operar sobre un repositorio local.
  • memory: un almacén persistente simple de clave-valor donde el modelo escribe y vuelve a leer entre turnos.
  • sequentialthinking: un andamiaje para razonar de forma estructurada, paso a paso.

La segunda cosa es un índice: una lista larga y curada en el README que apunta a integraciones oficiales mantenidas por empresas (bases de datos, APIs de SaaS, herramientas de dev) y a cientos de servidores de la comunidad. El índice no es código que clonas; es un mapa de quién ya construyó un servidor para lo que necesitas, para que no lo hagas de nuevo.

Nota

El conjunto de servidores de referencia dentro del repo se ha ido reduciendo a propósito con el tiempo. Los que se graduaron a proyectos independientes bien mantenidos salieron, y el repo conserva un núcleo más ajustado más el índice. Así que "ya no está en el repo" casi siempre quiere decir "ahora vive en su propio repo": revisa el índice antes de dar por hecho que desapareció.

02 · Por qué MCP se gana un lugar en el stack

La gracia de MCP es la reutilización, y cuesta apreciarla hasta que sientes en carne propia el dolor que te ahorra.

Sin él, cada app que quiere que un modelo toque un sistema reimplementa la misma plomería: un schema de tool a la medida, un parser de argumentos, un formateador de resultados, una ruta de auth. Hazlo en tres apps y ya escribiste tres veces la misma integración de "deja que el modelo lea nuestra base de datos", cada una sutilmente distinta y cada una con su propia superficie de bugs.

Con MCP expones una capacidad una sola vez como servidor, y cualquier cliente compatible le habla por el mismo protocolo. Claude Code, la app de escritorio y un agente propio que escribiste pueden usar todos el mismo servidor de git sin trabajo extra por cada cliente. Las integraciones dejan de ser pegamento atado a cada app y pasan a ser unidades reutilizables e intercambiables: puedes reemplazar tu servidor de base de datos hecho a mano por el oficial de un proveedor sin tocar los clientes que dependen de él.

Hay un segundo beneficio, más callado, que para mí pesa más que la reutilización: MCP traza una frontera limpia entre el modelo y el sistema. El modelo solo puede hacer lo que permiten las tools del servidor. Esa frontera es donde pones tu seguridad, y un protocolo que la deja explícita es un protocolo que la hace defendible.

03 · Arranque rápido: conectar un servidor de referencia a Claude

La mayoría de los servidores de referencia no se instalan globalmente: dejas que el cliente los lance bajo demanda con un runner. Para los servidores en Node eso es «npx»; para los de Python es «uvx». La config del cliente le dice a Claude qué comando correr y qué argumentos pasarle, y los argumentos más importantes son los que acotan el servidor.

Esta es una config mínima de Claude Desktop que agrega el servidor de filesystem, encerrado a un único directorio de proyecto:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/tu/proyectos/ilustrari"
      ]
    }
  }
}

Ese path del final no es un detalle: es el sandbox. El servidor solo puede ver archivos bajo esa raíz. Si le das «/», le entregaste tu disco entero al modelo; si le das un proyecto, trazaste una cerca. Reinicia el cliente y Claude gana «read_file», «write_file», «list_directory» y compañía, todo confinado a ese árbol.

Para Claude Code la conexión es un comando en vez de un archivo editado a mano:

claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /Users/tu/proyectos/ilustrari

Consejo

Agrega un servidor a la vez y úsalo de verdad antes de sumar el siguiente. Acumular servidores a medio entender en tu config es la receta para terminar con tools sobre las que no puedes razonar. Cada uno debería ganarse su lugar: que sea algo que de verdad le vas a pedir al modelo.

04 · Leer un servidor para aprender el protocolo

El valor real de los servidores de referencia es que son lo bastante cortos como para leerlos completos. Un servidor hace tres cosas: declara sus tools (nombre, descripción y un JSON-Schema para las entradas), atiende las llamadas a esas tools y devuelve resultados en el formato de contenido del protocolo. Una vez que lees uno, la spec deja de ser abstracta.

Esta es la forma, destilada: declarar una tool y responder cuando el modelo la llama.

server.tool(
  "get_invoice",
  "Busca una factura por su id.",
  { id: z.string() },
  async ({ id }) => {
    const inv = await db.invoice(id)
    return { content: [{ type: "text", text: JSON.stringify(inv) }] }
  }
)

Tres cosas para fijarse, porque son el protocolo entero en miniatura:

  1. La descripción es parte de la interfaz, no un comentario. El modelo la lee para decidir cuándo llamar la tool, así que una descripción vaga produce una tool que el modelo usa mal. Trátala como documentación que el modelo de verdad obedece.
  2. El schema de entrada es tu primera línea de validación. JSON-Schema (o Zod compilado a él) restringe lo que el modelo puede mandar, pero es una pista para el modelo y un contrato para tu código, no una garantía de seguridad. Revalida en el servidor de todas formas.
  3. El resultado es contenido, no un valor de retorno. Devuelves un arreglo de contenido (texto, y en los servidores más nuevos imágenes o recursos); por eso un servidor puede devolver resultados ricos, no solo strings.

Importante

La descripción y el schema de la tool son la parte de tu servidor que el modelo "ve". Pon esfuerzo de verdad ahí. Un nombre preciso, una descripción honesta de lo que la tool hace y de lo que no, y un schema bien ajustado hacen más por el comportamiento correcto que toda la ingeniería de prompts que metas del lado del cliente.

05 · Cuándo copiar y cuándo escribir el tuyo

El repo te tienta a escribir un servidor para todo. Resístelo. La decisión es la misma que tomarías con cualquier dependencia: construye solo lo que es tuyo.

Usa un servidor que ya existe cuando

  • La capacidad es genérica: leer archivos, traer URLs, hablar con git, consultar Postgres. Alguien ya lo resolvió, lo mantiene y parcheó los casos borde con los que tú todavía no te has topado.
  • Hay un servidor oficial del proveedor para ese sistema (hoy muchos productos de SaaS y bases de datos traen uno vía el índice). Un servidor oficial sigue los cambios de la API del proveedor para que tú no tengas que hacerlo.
  • Estás prototipando y quieres probar el protocolo antes de comprometerte a mantener algo.

Escribe el tuyo cuando

  • La capacidad es específica de tu dominio: tu lógica de facturación, tu API interna, tu modelo de datos. No hay servidor ya hecho para tu negocio.
  • La frontera de seguridad tiene que ser tuya. Cuando la tool toca sistemas sensibles, quieres controlar al detalle qué puede y qué no puede hacer, con auth y validación bajo tu control. En Infuse lo pienso justo así: una superficie de tools angosta y hecha a propósito siempre le gana a una genérica y ancha.
  • Necesitas la capacidad disponible para más de un cliente: en cuanto dos clientes necesitan lo mismo a la medida, el servidor se paga solo.

Cuando escribas uno, no arranques de un archivo en blanco. Clona un servidor de referencia en tu lenguaje, recórtalo a una sola tool, haz que esa tool funcione de punta a punta y crece desde ahí. Heredas gratis la estructura del proyecto, la configuración del transporte y el formateo de resultados, y te ahorras toda una familia de errores del tipo "por qué el cliente no ve mi servidor".

06 · Las concesiones honestas y la realidad de seguridad

MCP es realmente bueno, pero adoptarlo tiene costos y un peligro que eclipsa al resto. Conócelos antes de conectar diez servidores a un agente en producción.

  • Cada servidor es nueva superficie de ataque. Este es el que más pesa. Una tool que el modelo puede llamar es una tool que un atacante puede intentar alcanzar a través del modelo, con un payload de inyección de prompts escondido en un documento, una página web o un correo que el agente lee. Los servidores de fetch y filesystem son justo el tipo de capacidad ancha que la inyección adora. Acótalos y da por hecho que la entrada es hostil.
  • El mínimo privilegio no es opcional. Nunca le des a un servidor una credencial de admin que sirva para todo. Dale un token acotado, un rol de solo lectura cuando solo necesitas leer, un único directorio en vez del disco entero. El radio de daño de un servidor comprometido es exactamente el privilegio que le diste.
  • Valida las entradas en el servidor, siempre. El JSON-Schema restringe al modelo, no a un atacante que encuentre otra ruta hacia tu servidor. Revalida cada argumento en tu handler como si viniera de un cliente no confiable, porque en la práctica así fue.
  • El reguero de config es real. Cada servidor es un proceso que el cliente levanta, una dependencia que mantener al día y un conjunto de tools que infla las opciones entre las que el modelo tiene que elegir. Pasado cierto punto, más tools no es más capacidad: es más confusión y más superficie. Mantén el conjunto ajustado.
  • El versionado se mueve bajo tus pies. El protocolo y los servidores evolucionan. Fija versiones donde puedas y vuelve a probar después de un upgrade, en vez de dar por hecho que una config que funcionaba el mes pasado se comporta igual.

Atención

No le des a un modelo una tool que no le darías a un contratista junior en su primer día sin supervisión. Las acciones destructivas o difíciles de revertir (borrados, pagos, envío de correo) ponlas detrás de una confirmación humana explícita, en vez de dejar que un bucle autónomo las dispare solo. La inyección de prompts probará tus tools de primero; diseña como si ya lo hubiera hecho.

El repo «modelcontextprotocol/servers» es la mejor rampa de entrada a MCP precisamente porque enseña con el ejemplo: copia un servidor de referencia, córrelo acotado, lee su código y el protocolo encaja. Trata los servidores de referencia como tools y como libros de texto a la vez, apóyate en el índice antes de construir nada por tu cuenta y pon tu esfuerzo de ingeniería real en la frontera de seguridad que cada servidor representa. Acierta con el acotamiento y MCP convierte las integraciones en unidades limpias y reutilizables; fállalo y le entregaste a un modelo (y a quien pueda hablarle) una puerta a tus sistemas.

Puntos clave

  • Usa el repo como libro de texto: clona un servidor de referencia en tu lenguaje, léelo de punta a punta y el protocolo deja de ser abstracto.
  • Revisa el índice del README antes de construir nada: la mayoría de las capacidades ya tienen un servidor oficial o de la comunidad, incluidos los que salieron del repo a uno propio.
  • Acota cada servidor al mínimo privilegio: un directorio en vez del disco, un rol de solo lectura en vez de admin, un token en vez de una llave maestra.
  • Valida las entradas en el servidor y trata la descripción y el schema de la tool como la interfaz que el modelo de verdad obedece: pesan más en el comportamiento correcto que el prompting del lado del cliente.
  • Pon las acciones destructivas detrás de confirmación humana y da por hecho que la inyección de prompts ya apunta a tus tools; el radio de daño equivale al privilegio que otorgaste.

Preguntas frecuentes

¿Este es el repo oficial de MCP? ¿Y el protocolo está atado a un proveedor?

Sí, «modelcontextprotocol/servers» es el repositorio oficial de servidores, y MCP en sí es un protocolo abierto, no atado a un solo proveedor ni modelo. Cualquier cliente compatible con MCP puede hablar con cualquier servidor MCP. Los servidores de referencia están escritos para leerse y copiarse, y el índice del README apunta a un ecosistema amplio de servidores oficiales y de la comunidad, más allá de los que trae el repo.

¿Tengo que escribir los servidores en TypeScript?

No. Hay SDKs oficiales en varios lenguajes, y los servidores de referencia vienen tanto en TypeScript como en Python. Elige el lenguaje en el que tu equipo ya mantiene código: el protocolo es idéntico entre SDKs, así que para el cliente un servidor en Python y uno en TypeScript son indistinguibles. Clona un servidor de referencia en tu lenguaje y recórtalo en vez de arrancar de cero.

¿Cómo corro un servidor sin instalarlo de forma global?

Deja que el cliente lo lance bajo demanda. En la config del cliente, pon «command» en «npx» (para servidores en Node) o «uvx» (para los de Python) y pásale el nombre del paquete más los argumentos de acotamiento que necesites. El runner descarga y arranca el servidor cuando el cliente se conecta, así no hay instalación global que mantener. Fija una versión en la especificación del paquete cuando quieras un comportamiento reproducible entre máquinas.

El servidor que busco ya no está en el repo, ¿qué pasó?

Lo más probable es que se haya graduado a su propio repositorio. Los maintainers conservan a propósito un núcleo ajustado de servidores de referencia dentro del repo y sacaron los bien mantenidos a proyectos independientes. Revisa el índice del README: la mayoría de los servidores que la gente recuerda «en el repo» hoy viven en sus propios repos, a menudo a cargo del proveedor o la comunidad correspondiente, y el índice es el lugar canónico para encontrar el link actual.

¿Cuál es el mayor error de seguridad con los servidores MCP?

Darle a un servidor más privilegio del que el modelo necesita. La falla clásica es entregarle un token de admin o apuntar el servidor de filesystem a «/»: ahí un payload de inyección de prompts escondido en algo que el agente lee puede empujar a la tool a hacer daño real. Acota al mínimo privilegio, valida las entradas en el servidor y pon las acciones destructivas detrás de confirmación humana. El radio de daño de cualquier servidor es exactamente el privilegio que le diste, así que dale lo menos posible.

¿Cuántos servidores debería conectar a un solo cliente?

Los menos que hagan el trabajo. Cada servidor suma un proceso, una dependencia y más tools entre las que el modelo tiene que elegir, y pasado cierto punto más tools significa más confusión y más superficie de ataque, no más capacidad. Agrega servidores de a uno, confirma que de verdad usas cada uno y poda los que no. Un conjunto ajustado y bien entendido le gana a una config regada sobre la que no puedes razonar.

Abrir recurso (abre en pestaña nueva)

¿Prefieres que lo hagamos por ti?

Esto mismo lo construimos para negocios como el tuyo. La primera conversación es gratis y sin compromiso.

Escríbenos por WhatsApp

Escríbenos por WhatsApp

Escanéalo con tu teléfono para escribirnos por WhatsApp.

Escanéalo con tu teléfono para escribirnos por WhatsApp.

¿Estás desde el teléfono y no puedes escanear? Escríbenos a info@ilustrari.com

Primera conversación gratis. Te responde el fundador.

Recursos relacionados