Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Verify Spanish companies by CIF: registry data, status and BORME filings, paid per call over x402.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://mcp.veridexia.es/mcp在终端中运行这条命令
claude mcp add --transport http veridex https://mcp.veridexia.es/mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"veridex": {
"url": "https://mcp.veridexia.es/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"veridex": {
"type": "http",
"url": "https://mcp.veridexia.es/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://mcp.veridexia.es/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
发布者(veridexia.es)不是仓库所有者(Habib4862);可能是其他人代为上架的
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 0 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(0.1.1)于31天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Thalovant MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Connect MCP clients to Thalovant control-plane and hub runtime APIs over stdio or Streamable HTTP.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Servidor MCP (Model Context Protocol) para VERIDEX: verificación de empresas españolas por CIF contra el BORME, con puntuación de riesgo explicable y el ciclo de pago x402 resuelto paso a paso.
Una vez configurado, cualquier agente (Claude Desktop, Cursor, VS Code, Claude Code…) puede descubrir y usar la verificación sin que tú escribas una línea de HTTP.
Agente ──MCP (stdio)──▶ veridex-mcp ──HTTPS──▶ https://api.veridexia.es/v1/verify
│ └── no firma pagos: entrega el reto x402 y espera un X-PAYMENT que produzca una wallet tuya
Es un cliente MCP fino sobre la API pública de VERIDEX: tres herramientas, tipos explícitos, errores tipados y el reto de pago x402 decodificado para que el agente sepa exactamente cuánto cuesta, en qué red, en qué activo y a qué dirección.
No es una wallet. Este servidor no firma, no custodia claves y no envía transacciones. No puede pagar por ti — y eso es deliberado: un servidor MCP que pudiera mover fondos en nombre del usuario sería una wallet sin dueño. Lo que hace es entregar al agente una petición de pago completa y exacta, y dejar que la settle una wallet que tú controlas.
Tampoco modifica la API: es un consumidor puro de api.veridexia.es.
| Herramienta | Argumentos | Coste | Qué devuelve |
|---|---|---|---|
verify_company_by_cif | cif (obligatorio), x_payment, idempotency_key | 0,20 USDC (primera llamada devuelve 402) | Datos registrales, situación en el BORME, actos recientes y scoring 0–100 explicable |
get_veridex_info | — | Gratis | Precio, red, activo, dirección de cobro y endpoints, leídos de /.well-known/x402 |
health_check | — | Gratis | Estado de la API, uptime y demanda de hoy (peticiones y agentes únicos) |
verify_company_by_cif// Entrada
{ "cif": "A58818501", "x_payment": null, "idempotency_key": null }
// Salida (ok = true) { "ok": true, "cif": "A58818501", "company": { "cif": "A58818501", "name": "…", "legal_form": "Sociedad Anónima", "status": "active", "status_label": "Activa sin incidencias", "province": "Málaga", "incorporation_date": "2015-10-02", "last_borme_deposit": "2025-08-09", "administrator": "…", "share_capital_cents": 4500000, "insolvency_published_on": null }, "risk": { "value": 15, // 0 = más seguro, 100 = más arriesgado "band": "low", // low | medium | high | critical "reasons": ["…"], "signals": [{ "code": "status_active", "points": 15, "description": "…" }], "confidence": "high", "assurance": "high", // cuánto se SABE, no cuánto de malo es "conclusive": true }, "recent_acts": [{ "date": "2026-08-28", "section": "Sección Primera", "description": "…" }], "mock": false, "provenance": { "source": "prometiam", "fetched_at": "…", "from_cache": false, "confidence": "high" }, "payment": null, "error": null, "guidance": "" }
risk.assurance es el campo que más se malinterpreta: assurance: "none" con value: 0 significa *no sabemos nada de esta empresa*, no *esta empresa es segura*. El servidor lo dice explícitamente en guidance cuando ocurre.
Requiere Python 3.10+.
pip install -e mcp-server
Eso instala el paquete veridex-mcp en modo editable junto con sus dependencias (mcp>=1.9,<2 y httpx), y deja disponible el ejecutable veridex-mcp.
Comprueba que arranca:
veridex-mcp --version
python -m veridex_mcp --version # equivalente, más portable en Windows
Windows: si el host lanza el servidor con un intérprete concreto, usa
python -m veridex_mcpcon la ruta completa al Python del entorno virtual. Es la
forma más fiable de que el proceso correcto arranque.
| Variable | Por defecto | Para qué |
|---|---|---|
VERIDEX_API_URL | https://api.veridexia.es | Apuntar a un backend local o a un despliegue propio |
VERIDEX_API_KEY | *(sin definir)* | Reservado para un tier premium futuro. No es necesario: el endpoint de pago no pide credenciales, el pago *es* la credencial |
VERIDEX_TIMEOUT_SECONDS | 30 | Timeout de cada petición HTTP |
Edita el fichero de configuración:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": { "veridex": { "command": "python", "args": ["-m", "veridex_mcp"], "env": { "VERIDEX_API_URL": "https://api.veridexia.es", "VERIDEX_TIMEOUT_SECONDS": "30" } } } }
Si prefieres el ejecutable instalado en lugar del módulo:
{
"mcpServers": { "veridex": { "command": "veridex-mcp", "args": [], "env": { "VERIDEX_TIMEOUT_SECONDS": "30" } } } }
Cierra Claude Desktop por completo (icono de bandeja incluido) y vuelve a abrirlo. Los servidores MCP se lanzan al arrancar; el icono de herramientas aparecerá junto al cuadro de texto. Hay un ejemplo listo para copiar en el fichero claude_desktop_config.json, en la raíz del paquete.
Configuración global en ~/.cursor/mcp.json, o por proyecto en .cursor/mcp.json:
{
"mcpServers": { "veridex": { "command": "python", "args": ["-m", "veridex_mcp"] } } }
VS Code 1.102+ usa .vscode/mcp.json (la clave es servers, no mcpServers):
{
"servers": { "veridex": { "type": "stdio", "command": "python", "args": ["-m", "veridex_mcp"] } } }
También puedes ejecutarlo desde la paleta de comandos con MCP: Add Server. Comprueba con veridex-mcp --transport streamable-http y el MCP Inspector si quieres ver las herramientas sin un agente de por medio.
x402 es un protocolo de pago sobre HTTP: en lugar de una API key, se paga por petición. La primera llamada a un recurso de pago devuelve HTTP 402 Payment Required con un *reto* que describe exactamente cuánto, dónde y en qué activo. Se settle ese reto con una wallet, se repite la petición con el resultado en la cabecera X-PAYMENT, y el recurso responde con el contenido.
Con este servidor MCP el flujo tiene cuatro pasos:
Llama a get_veridex_info, que lee https://api.veridexia.es/.well-known/x402. Obtiene:
{
"network": "base", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "asset_symbol": "USDC", "asset_decimals": 6, "pay_to": "0x2bDc11AEB751EC845aE5fED5bbf7c73BF6D0C4E3", "price": "0.20 USDC" }
verify_company_by_cif sin pagoLa API responde 402:
POST /v1/verify HTTP/1.1
Host: api.veridexia.es Content-Type: application/json
{"cif": "A58818501"}
HTTP/1.1 402 Payment Required
X-PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MSwiYWNjZXB0cyI6W3… ← reto en base64 Content-Type: application/json
{ "error": "payment_required", "detail": "payment required: retry with the X-PAYMENT header", "price_eur_cents": 20, "amount_atomic": 200000, "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "network": "base", "pay_to": "0x2bDc11AEB751EC845aE5fED5bbf7c73BF6D0C4E3", "accepts": [{ "scheme": "exact", "network": "base", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0x2bDc11AEB751EC845aE5fED5bbf7c73BF6D0C4E3", "maxAmountRequired": "200000", "resource": "/v1/verify", "description": "Verificación de empresa española por CIF", "mimeType": "application/json", "maxTimeoutSeconds": 300 }] }
200000 con 6 decimales son 0,20 USDC.
No es un error. Es la primera mitad del ciclo, y el servidor la devuelve como resultado normal (ok: false) con el campo payment completo, no como una excepción:
{
"ok": false, "cif": "A58818501", "payment": { "x402_version": 1, "scheme": "exact", "network": "base", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "pay_to": "0x2bDc11AEB751EC845aE5fED5bbf7c73BF6D0C4E3", "amount_atomic": 200000, "price_eur_cents": 20, "resource": "/v1/verify", "max_timeout_seconds": 300, "accepts": [/* … */], "payment_header": "X-PAYMENT", "payment_required_header_value": "eyJ4NDAyVmVyc2lvbiI6MSwiYWNjZXB0cyI6W3…", "instructions": "Payment required: 200000 atomic units of 0x8335… on base to 0x2bDc… This MCP server cannot sign or send payments. Have a wallet you control build an x402 payload for this exact challenge, then call verify_company_by_cif again with the same cif and the payload in the 'x_payment' argument (sent as the X-PAYMENT header)." }, "error": { "code": "payment_required", "http_status": 402, "retryable": false } }
Reintentar en bucle no sirve de nada: el reto es idéntico en cada intento. Por eso retryable es false.
Aquí es donde entra el dinero, y donde este servidor se aparta a propósito. La wallet (la de tu usuario, o el proveedor x402 que uses) construye un payload de pago firmado para ese reto exacto — misma red, mismo activo, misma dirección, mismo importe — y lo serializa en base64.
// Lo que la wallet produce (esquema "exact" sobre Base):
{ "x402Version": 1, "scheme": "exact", "network": "base", "payload": { "signature": "0x…", "authorization": { /* … */ } } } // ↓ base64 // "eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3QiLCJuZXR3b3JrIjoiYmFzZSIsInBheWxvYWQiOnsi…"
Misma herramienta, mismo CIF, y el payload base64 en x_payment:
{
"cif": "A58818501", "x_payment": "eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3Qi…", "idempotency_key": "verif-A58818501-2026-10-04" }
El servidor lo envía como cabecera:
POST /v1/verify HTTP/1.1
Content-Type: application/json X-PAYMENT: eyJ4NDAyVmVyc2lvbiI6MSwic2NoZW1lIjoiZXhhY3Qi… Idempotency-Key: verif-A58818501-2026-10-04
{"cif": "A58818501"}
Y ahora sí:
{ "ok": true, "company": { "name": "…", "status": "active", "…": "…" },
"risk": { "value": 15, "band": "low", "…": "…" }, "recent_acts": [/* … */] }
`idempotency_key` merece la pena. Si la conexión se cae justo después de enviar el pago, reutilizar la misma clave hace que el reintento devuelva el resultado original en lugar de cobrar dos veces.
Alternativa sin agente de por medio: el mismo ciclo con
curl, útil para depurar:
`bash
# 2. El reto
curl -sS -X POST https://api.veridexia.es/v1/verify \
-H 'Content-Type: application/json' -d '{"cif":"A58818501"}'
# 4. Con el pago
curl -sS -X POST https://api.veridexia.es/v1/verify \
-H 'Content-Type: application/json' \
-H "X-PAYMENT: $X_PAYMENT" \
-d '{"cif":"A58818501"}'
`
| Situación | ¿Se cobra? |
|---|---|
Empresa encontrada (200) | Sí |
CIF con formato válido pero sin registro (404) | No — se resuelve antes de cobrar |
Fuente de datos caída (503) | No — el reintento es gratis |
CIF mal formado (422) | No — se rechaza antes de ninguna búsqueda |
Falta el pago o es inválido (402) | No (todavía) |
Con la configuración de arriba y Claude Desktop reiniciado, una conversación real:
Tú: Verifica la empresa con CIF A58818501 y dime si tiene riesgo.
Claude llama a la herramienta y recibe el 402:
Claude: La verificación cuesta 0,20 USDC en la red **Bas
只显示了开头部分;其余内容请在仓库中阅读