Skip to content

Repository files navigation

validar-semver

Servidor MCP remoto (Cloudflare Workers) con una tool que resuelve satisfacción real de rangos semver:

  • validar_semver — evalúa una versión (ej: 1.2.3) contra una lista de rangos (^1.2.3, ~2.0, 2.x, >=1.0.0 <2.0.0, ...) usando el mismo motor semver que usa npm (semver), no una suposición del modelo sobre qué debería matchear.

Sin base de datos, sin estado persistente: cada llamada crea un McpServer nuevo (ver createServer() en src/index.ts) y es autocontenida.

Cobro (x402)

Cobra por llamada vía x402 — pago en USDC real sobre Base mainnet, contra el facilitator de Coinbase Developer Platform (CDP). El pago viaja dentro del propio JSON-RPC de MCP (_meta), no como header HTTP; ver src/payments.ts.

Tool Precio
validar_semver $0.01 USDC

Un tools/call sin pago devuelve isError: true con los accepts (red, monto, payTo) que el cliente necesita para pagar y reintentar — no una excepción sin explicar.

Estructura

src/
  index.ts        # registra la tool en el McpServer y expone el handler HTTP MCP
  payments.ts     # cobro x402 sobre Base mainnet vía facilitator de CDP
  tools/
    semver.ts       # lógica pura de validar_semver (testeable sin Workers)
    semver.test.ts
scripts/
  dev-node.ts     # servidor de dev que corre el handler en Node puro, sin wrangler

Correrlo local

⚠️ Nota sobre wrangler dev: el runtime real de Cloudflare Workers (workerd) requiere macOS 13.5+. Si tu Mac tiene una versión más vieja, wrangler dev (y npm run dev) van a fallar. Este proyecto trae un shim en Node puro que corre exactamente el mismo fetch() handler sin necesitar workerd.

1. Instalar dependencias

npm install

2. Correr los tests unitarios

npm test

3a. Si tu wrangler dev funciona (macOS 13.5+, Linux, Windows)

npm run dev

3b. Si wrangler dev falla por versión de macOS

npm run dev:node

Levanta en http://localhost:8787/mcp, leyendo las credenciales de CDP desde ~/.mcp-tools-factory-credentials.env (compartidas entre todas las tools de esta fábrica).

4. Probar con curl

# 1) initialize
curl -s -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl-test","version":"0.0.1"}}}'

# 2) tools/list
curl -s -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

# 3) tools/call — validar_semver
curl -s -X POST http://localhost:8787/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"validar_semver","arguments":{"version":"1.2.3","ranges":["^1.2.3","^1.3.0","~1.2.0","2.x"]}}}'

Las respuestas vienen como Server-Sent Events (event: message + data: {...}); el data: es la respuesta JSON-RPC de siempre.

Deploy y listados

Desplegado en https://validar-semver.encodari.workers.dev/mcp (Cloudflare Workers). Publicado en el registry oficial de MCP, Smithery, mcp.so y con PR abierto a awesome-mcp-servers.

Qué NO hace (todavía)

  • Cobra en Base mainnet con dinero real. Para volver a testnet (Base Sepolia, eip155:84532) durante desarrollo, cambiá NETWORK en src/payments.ts.
  • No tiene base de datos ni estado persistente entre llamadas (más allá de la config de cobro, cacheada en memoria por isolate — ver src/payments.ts).

About

MCP tool: resuelve satisfacción real de rangos semver contra una versión. Pago por llamada via x402/USDC en Base.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages