Skip to main content
Glama
MauricioPerera

content-contracts-mcp-server

README.md
# content-contracts-mcp-server

[![Build and test](https://github.com/MauricioPerera/content-contracts-mcp-server/actions/workflows/test.yml/badge.svg)](https://github.com/MauricioPerera/content-contracts-mcp-server/actions/workflows/test.yml)

MCP server que expone como *tools* la validación de los protocolos de
["content contracts"](https://github.com/MauricioPerera/seo-md) —
SEO.md, PRODUCTHUNT.md, LINKEDIN.md — para que cualquier agente pueda
verificar contenido generado por IA contra reglas duras concretas, sin
tener que clonar/mantener los linters de referencia él mismo.

Mismo patrón que el protocolo del que viene: un techo/piso duro
verificable + prosa, nunca piso duro por presencia literal — evita el
keyword stuffing sin sacrificar la posibilidad de verificar el contenido
de forma automática. Ver el repo del protocolo para el razonamiento
completo de cada regla.

## Por qué existe

El protocolo (SEO.md/PRODUCTHUNT.md/LINKEDIN.md + los linters de
referencia en Node) es open source y gratis — pero un equipo que genera
contenido con IA a escala no quiere clonar 3 repos y mantener su propia
copia del linter actualizada. Este server es esa capa: los mismos 4
tools de validación, disponibles por MCP para que cualquier agente
(Claude, u otro cliente MCP) los llame directo, sin filesystem
compartido — el config y el contenido viajan como parámetros del tool
call, 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 (el
bloque entre los `---` de tu `.md`), y el contenido a validar como
parámetros estructurados — no rutas de archivo, para que funcione igual
de local que remoto.

## Instalar y correr

```bash
npm install
npm run build
npm start          # corre por stdio
```

## Probarlo

```bash
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):

```json
{
  "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 de
[seo-md](https://github.com/MauricioPerera/seo-md)
(`src/validators/*.ts` es una traducción a TypeScript de
`lint/*.js`, sin I/O de archivos — recibe contenido en memoria, no
rutas), 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. Un
cambio de regla en el protocolo general debe reflejarse en los dos
lugares — están, a propósito, desacoplados en release.

## Licencia

MIT.

TDQS

A4.6/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct platform or purpose: web content, Product Hunt posts, LinkedIn content, and JSON-LD export. There is no overlap in what they validate or generate, making selection unambiguous.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: lint_* for validation across three different content types, and export_json_ld for generation. The naming is predictable and clearly denotes the action and target.

Tool Count5/5

With exactly 4 tools, the set is well-scoped and avoids redundancy. Each tool covers a necessary function for content contract validation and schema export without excess.

Completeness5/5

The tool surface fully covers the stated domain: validating against SEO.md, PRODUCTHUNT.md, and LINKEDIN.md, plus generating JSON-LD. There are no obvious missing operations that would cause agent failures or dead ends.