Tutoriales

Usa Modyard desde un agente

Claude puede buscar en Modyard, leer el código de un mod y publicar los tuyos, todo por MCP. Para leer no hace falta cuenta. Para publicar, una clave de API en Claude Code u OAuth en claude.ai y Claude Desktop.

3 min de lectura

Qué ofrece el endpoint

Modyard sirve un endpoint MCP en https://mods.gonzaloverdugo.com/mcp. Lo que puede hacer un agente depende de la credencial que lleve:

ToolSin claveCon clave de API
modyard_search_modssísí
modyard_get_modsísí
modyard_get_mod_filessísí
modyard_list_my_modssí
modyard_publish_modsí

Con las tres tools de lectura Claude encuentra mods, mira sus versiones y lo que pueden tocar, y lee cada fichero. Eso ya te sirve aunque no publiques nunca: puedes pedirle a Claude que revise un mod por ti antes de instalarlo.

Leer, sin cuenta

Añade el endpoint a Claude Code como servidor HTTP:

bash
claude mcp add --transport http modyard https://mods.gonzaloverdugo.com/mcp

Y pregunta con normalidad, por ejemplo:

  • "Busca en Modyard un mod que enseñe los comandos Bash en la línea de estado y que no use la red."
  • "Lee todos los ficheros de bash-logger y explícame qué hace cada hook."
  • "¿quiet-band reescribe o bloquea alguna llamada a herramienta? Cítame el código."

Claude usa modyard_search_mods, modyard_get_mod y modyard_get_mod_files y te responde a partir del código real. La lista de lo que toca es la misma que ves en la ficha del mod, con los mismos límites: ayuda a leer, no sustituye una revisión. En qué puede tocar un mod te contamos por qué el código sigue importando.

Publicar desde Claude Code, con una clave de API

Cada clave de API pertenece a un publicador. Las crea un propietario en ajustes, con uno de dos permisos: lectura, o lectura y escritura. Empiezan por mdy_ y solo se enseñan una vez, así que cópiala cuando aparezca.

Añade el endpoint con la clave en una cabecera. Si ya lo tenías sin ella, quítalo antes con claude mcp remove modyard:

bash
claude mcp add --transport http modyard https://mods.gonzaloverdugo.com/mcp \
  --header "Authorization: Bearer mdy_..."

Con una clave aparecen dos tools más (para publicar, con permiso de lectura y escritura):

  • modyard_list_my_mods enumera los mods de tu publicador, con sus versiones y si están visibles u ocultos.
  • modyard_publish_mod publica el zip de la carpeta de un plugin, igual que el formulario de publicar.

Una sesión típica mientras escribes un mod con Claude:

  1. "Valida y prueba ./bash-logger." Claude ejecuta claude plugin validate y claude plugin test.
  2. "Sube la versión a 0.1.1 y publícalo." Claude edita plugin.json, comprime la carpeta y llama a modyard_publish_mod.
  3. "¿Qué dice Modyard que puede tocar?" Claude te lo lee del resultado.

Todas las reglas de publicación siguen valiendo: nombres únicos en todo Modyard, versiones que no se modifican y siempre mayores, límites de tamaño. Las tienes en publica un mod.

Trata la clave como una contraseña. Mejor añade el servidor con alcance de usuario en tu propia máquina que en el .mcp.json compartido de un proyecto, donde acabaría en el repositorio.

claude.ai y Claude Desktop, con OAuth

claude.ai y Claude Desktop se conectan por OAuth, así que no pegas ninguna clave. Añade un conector personalizado con esta URL:

text
https://mods.gonzaloverdugo.com/mcp/publisher

La primera vez, Modyard te pide entrar con Google y te enseña una pantalla de consentimiento donde eliges para qué publicador actúa el conector, si perteneces a varios. El conector puede leer y, con el permiso mods:write, publicar en ese publicador. Para actuar en otro, vuelve a conectar y elígelo al dar el consentimiento. Si quitas el conector, pierde el acceso.

A partir de ahí puedes pedir lo mismo que en Claude Code: buscar, leer, ver tus mods y publicar.

La API REST, para scripts

Las tools MCP siguen las mismas reglas que una API REST normal, que viene mejor en una CI o en un script de shell.

Buscar mods. q es texto libre, touch deja los mods que tocan una categoría, without quita los que tocan cualquiera de las que pongas y sort puede ser recent, downloads o name:

bash
curl "https://mods.gonzaloverdugo.com/api/v1/mods?q=logger&without=network,processes&sort=downloads"

Leer un mod:

bash
curl https://mods.gonzaloverdugo.com/api/v1/mods/bash-logger

Publicar una versión, con una clave de lectura y escritura:

bash
curl -X POST https://mods.gonzaloverdugo.com/api/v1/mods \
  -H "Authorization: Bearer mdy_..." \
  -F archive=@bash-logger.zip

Borrar un mod, lo que deja su nombre libre para cualquiera:

bash
curl -X DELETE https://mods.gonzaloverdugo.com/api/v1/mods/bash-logger \
  -H "Authorization: Bearer mdy_..."

Un paso de CI mínimo que publica en cada etiqueta podría ser este, con la clave guardada como secreto:

bash
VERSION=$(jq -r .version bash-logger/.claude-plugin/plugin.json)
zip -qr bash-logger.zip bash-logger
curl -fsS -X POST https://mods.gonzaloverdugo.com/api/v1/mods \
  -H "Authorization: Bearer $MODYARD_KEY" \
  -F archive=@bash-logger.zip
echo "Published bash-logger $VERSION"

Si la versión ya existe o no es mayor que la última, la petición falla y el paso falla con ella, que es justo lo que quieres.

Cuál usar

  • ¿Solo quieres mirar? El endpoint MCP sin clave, o la página de mods.
  • ¿Escribes mods con Claude Code? MCP con una clave de lectura y escritura.
  • ¿Trabajas en claude.ai o Claude Desktop? El conector personalizado con OAuth.
  • ¿Publicas desde una CI? La API REST con la clave en los secretos de tu CI.

Tu primer mod, instalado con dos comandos

Entra con Google y tienes un publicador con su propio marketplace. Sube un zip, lee lo que Modyard encontró dentro y comparte el comando de instalación.