¿Cómo publico mi servidor MCP en el registro oficial de MCP?
Paso a paso para publicar tu servidor MCP en registry.modelcontextprotocol.io con mcp-publisher, qué va en el server.json y cómo pruebas que el nombre es tuyo con GitHub o con tu dominio.
Con la herramienta oficial mcp-publisher: describes tu servidor en un archivo server.json, pruebas que el nombre es tuyo (con tu cuenta de GitHub o con tu dominio, por DNS o con un archivo en tu sitio) y corres mcp-publisher publish. El registro, en registry.modelcontextprotocol.io, guarda solo la ficha de tu servidor (nombre, descripción, versión y dónde encontrarlo), y tu código sigue viviendo donde ya está.
Actualizado: noviembre de 2026
El registro abrió en versión preliminar el 8 de septiembre de 2025, según el anuncio del proyecto MCP, y su documentación todavía avisa que puede tener cambios incompatibles o borrar datos antes de la versión estable. La descripción de tu ficha admite hasta 100 caracteres, según el esquema oficial de server.json.
¿Para qué sirve el registro oficial?
Es el catálogo público de servidores MCP que mantiene el propio proyecto MCP, con una API para consultarlo. La idea es que sea la fuente de la que se alimentan otros directorios, incluidos los catálogos de servidores de algunos clientes de IA, que toman esos datos y les suman los suyos. Si tu servidor está ahí, un agente o un directorio que busca servidores lo puede encontrar sin pasar por tu sitio. Qué es un servidor MCP y en qué se diferencia de una API lo explicamos en esta guía, y los otros lugares donde te buscan los agentes, en cómo encuentran los agentes de IA mi API.
¿Qué nombre le pongo y cómo pruebo que es mío?
El nombre depende de cómo pruebes que eres el dueño:
| Cómo lo pruebas | Formato del nombre | Qué necesitas |
|---|---|---|
| Con GitHub | io.github.tu-usuario/servidor | Tu cuenta de GitHub y mcp-publisher login github |
| Con DNS | com.tudominio/servidor | Un registro TXT en tu dominio y mcp-publisher login dns |
| Con HTTP | com.tudominio/servidor | Un archivo en https://tudominio.com/.well-known/mcp-registry-auth y mcp-publisher login http |
En las dos formas con dominio, el nombre va al revés: ejemplo.com se escribe com.ejemplo. Para un negocio, el nombre con dominio se parece más a tu marca que tu usuario de GitHub.
Si además distribuyes tu servidor como paquete, el registro revisa que el paquete diga el mismo nombre: en npm, con el campo mcpName de tu package.json; en PyPI, con una línea mcp-name: <nombre> en el README; en Docker, con la etiqueta io.modelcontextprotocol.server.name. Si tu servidor está en línea y nadie lo instala, no hace falta ningún paquete.
¿Qué va en el server.json?
Tres campos son obligatorios: name, description y version. Para un servidor que ya está en línea, agregas remotes con el tipo de conexión y la URL, que tiene que responder en público. Un ejemplo recortado:
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "com.ejemplo/tienda",
"title": "Tienda Ejemplo",
"description": "Consulta productos, precios y disponibilidad de Tienda Ejemplo",
"version": "1.0.0",
"websiteUrl": "https://ejemplo.com",
"remotes": [{ "type": "streamable-http", "url": "https://ejemplo.com/mcp" }]
}
Usa streamable-http, porque el transporte sse quedó obsoleto. La versión tiene que ser distinta en cada publicación, y lo que publicas con una versión ya no se puede cambiar: si quieres corregir la descripción, publicas 1.0.1.
¿Cuáles son los pasos?
-
Ten tu servidor en línea con una URL pública, por ejemplo
https://ejemplo.com/mcp. -
Instala la herramienta con
brew install mcp-publisher, o baja el binario desde las versiones del repositorio del registro. -
Crea tu ficha con
mcp-publisher initen la carpeta de tu proyecto y edita elserver.jsonque genera. -
Crea tu llave y publica la parte pública. Con la forma HTTP:
openssl genpkey -algorithm Ed25519 -out key.pem PUBLIC_KEY="$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)" echo "v=MCPv1; k=ed25519; p=${PUBLIC_KEY}" > mcp-registry-authSube ese archivo a
/.well-known/mcp-registry-authen tu dominio. Con DNS, la misma línea va como registro TXT de tu dominio. El archivokey.pemes tu llave privada, así que guárdalo fuera del repositorio. -
Inicia sesión con tu llave:
PRIVATE_KEY="$(openssl pkey -in key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')" mcp-publisher login http --domain ejemplo.com --private-key "${PRIVATE_KEY}" -
Publica con
mcp-publisher publish. -
Revisa que quedó con
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.ejemplo/tienda".
Si prefieres publicar cada versión desde GitHub Actions, la documentación tiene un flujo listo que inicia sesión con mcp-publisher login github-oidc, sin guardar secretos, cuando el nombre es io.github.*.
¿Peaje me publica en el registro?
No, eso lo haces tú o quien lleva tu web, una sola vez, porque la prueba de que el nombre es tuyo necesita una llave que solo tú tienes. Lo que hace el kit gratis de Peaje es dejar tu servidor MCP respondiendo en tu dominio, en /mcp, y publicar los archivos que lo describen en /.well-known/mcp y /.well-known/mcp/server-card.json, para que un agente que llega a tu sitio lo encuentre (cómo se instala). Con el kit instalado, en tu server.json pones https://tudominio.com/mcp como URL. El kit no sirve el archivo mcp-registry-auth, así que súbelo tú a tu sitio o usa la forma DNS.
Peaje siguió estos mismos pasos: está publicado como com.usepeaje/peaje desde el 29 de octubre de 2026, con la prueba por HTTP. El radar gratis revisa, entre otras cosas, si tu servidor MCP aparece en un directorio, así que después de publicar puedes medir tu sitio de nuevo.
Fuentes
- Blog de MCP: lanzamiento del registro en versión preliminar
- MCP: cómo publicar un servidor en el registro
- MCP: formas de autenticarse en el registro
- MCP: publicar servidores remotos
- MCP: versiones de un servidor publicado
- MCP: tipos de paquete y su verificación
- Esquema oficial de server.json
- Ficha de Peaje en el registro oficial
- Radar gratis de Peaje