Back to Discover

validar-semver

connector

encodi

Resolves real semver range satisfaction (^1.2.3, ~2.0) against a version. Paid via x402/USDC.

View on GitHub
0 starsSynced Aug 11, 2026

Install to Claude Code

/plugin marketplace add encodi/validar-semver

README

validar-semver

validar-semver MCP server

Remote MCP server (Cloudflare Workers) with one tool that resolves real semver range satisfaction:

  • validate_semver — evaluates a version (e.g. 1.2.3) against a list of ranges (^1.2.3, ~2.0, 2.x, >=1.0.0 <2.0.0, ...) using the same semver engine npm uses (semver), not a model guess about what should match.

No database, no persistent state: each call builds a fresh McpServer (see createServer() in src/index.ts) and is self-contained.

Billing (x402)

Charges per call via x402 — real USDC payment on Base mainnet, against the Coinbase Developer Platform (CDP) facilitator. The payment travels inside the MCP JSON-RPC itself (_meta), not as an HTTP header; see src/payments.ts.

ToolPrice
validate_semver$0.01 USDC

An unpaid tools/call returns isError: true with the accepts (network, amount, payTo) the client needs to pay and retry — not an unexplained exception.

Structure

src/
  index.ts        # registers the tool in the McpServer and exposes the MCP HTTP handler
  payments.ts     # x402 billing on Base mainnet via the CDP facilitator
  tools/
    semver.ts       # pure logic for validate_semver (testable without Workers)
    semver.test.ts
scripts/
  dev-node.ts     # dev server that runs the handler in plain Node, no wrangler

Running it locally

⚠️ Note on wrangler dev: the real Cloudflare Workers runtime (workerd) requires macOS 13.5+. If your Mac has an older version, wrangler dev (and npm run dev) will fail. This project includes a plain-Node shim that runs the exact same fetch() handler without needing workerd.

1. Install dependencies

npm install

2. Run the unit tests

npm test

3a. If your wrangler dev works (macOS 13.5+, Linux, Windows)

npm run dev

3b. If wrangler dev fails because of the macOS version

npm run dev:node

Starts at http://localhost:8787/mcp, reading CDP credentials from ~/.mcp-tools-factory-credentials.env (shared across all tools in this factory).

4. Test with 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 — validate_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":"validate_semver","arguments":{"version":"1.2.3","ranges":["^1.2.3","^1.3.0","~1.2.0","2.x"]}}}'

Responses come as Server-Sent Events (event: message + data: {...}); the data: line is the usual JSON-RPC response.

Deploy and listings

Deployed at https://validar-semver.encodari.workers.dev/mcp (Cloudflare Workers). Published on the official MCP registry, Smithery, mcp.so, and with an open PR to awesome-mcp-servers.

What it doesn't do (yet)

  • Charges on Base mainnet with real money. To switch back to testnet (Base Sepolia, eip155:84532) during development, change NETWORK in src/payments.ts.
  • No database or persistent state between calls (beyond the billing config, cached in memory per isolate — see src/payments.ts).

Rendered live from encodi/validar-semver's GitHub README — not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
streamable-http remoteHosted streamable-http endpointmcp-serverhttps://validar-semver.encodari.workers.dev/mcp

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet — be the first to share an update.