content-contracts-mcp-server
MCP server que expone como tools la validación de los protocolos de"content contracts" —SEO.md, PRODUCTHUNT.md, LINKEDIN.md — para que cualquier agente puedaverificar contenido generado por IA contra reglas duras concretas, sintener que clonar/mantener los linters de referencia él mismo.
Mismo patrón que el protocolo del que viene: un techo/piso duroverificable + prosa, nunca piso duro por presencia literal — evita elkeyword stuffing sin sacrificar la posibilidad de verificar el contenidode forma automática. Ver el repo del protocolo para el razonamientocompleto de cada regla.
Por qué existe
El protocolo (SEO.md/PRODUCTHUNT.md/LINKEDIN.md + los linters dereferencia en Node) es open source y gratis — pero un equipo que generacontenido con IA a escala no quiere clonar 3 repos y mantener su propiacopia del linter actualizada. Este server es esa capa: los mismos 4tools de validación, disponibles por MCP para que cualquier agente(Claude, u otro cliente MCP) los llame directo, sin filesystemcompartido — el config y el contenido viajan como parámetros del toolcall, no como rutas de archivo.
Tools
| Tool | Qué valida |
|---|---|
lint_web_content |
Páginas HTML contra un SEO.md (título/descripción, keywords, links, JSON-LD) |
lint_producthunt_post |
Tagline/descripción/galería contra un PRODUCTHUNT.md |
lint_linkedin_content |
Copy de feed y/o artículo de newsletter contra un LINKEDIN.md |
export_json_ld |
Genera el <script type="application/ld+json"> desde schema: — templating puro, sin LLM |
Cada tool recibe config como el YAML de frontmatter tal cual (elbloque entre los --- de tu .md), y el contenido a validar comoparámetros estructurados — no rutas de archivo, para que funcione igualde local que remoto.
Instalar y correr
npm install
npm run build
npm start # corre por stdio
Probarlo
npm test # build + smoke test real: levanta el server como
# subproceso, se conecta como cliente MCP de verdad,
# llama a los 4 tools con fixtures que sabemos que
# pasan/fallan — no son mocks del server.
Usarlo como MCP server
Configuración típica (claude_desktop_config.json o equivalente):
{
"mcpServers": {
"content-contracts": {
"command": "node",
"args": ["/ruta/a/content-contracts-mcp-server/dist/index.js"]
}
}
}
Relación con seo-md
Este repo porta la lógica de validación deseo-md(src/validators/*.ts es una traducción a TypeScript delint/*.js, sin I/O de archivos — recibe contenido en memoria, norutas), en vez de depender de él en runtime. Es duplicación deliberada:seo-md es la implementación de referencia mínima para uso local/CLI;este repo es la capa de servicio, pensada para invocación remota. Uncambio de regla en el protocolo general debe reflejarse en los doslugares — están, a propósito, desacoplados en release.
Licencia
MIT.