Por qué existe
Cuando le pides a un asistente AI “agrega validación CURP a mi app Express”, quieres que el asistente escriba código contra el contrato OrigoID actual, no contra una copia desactualizada que vivía en su training set. El servidor MCP da al LLM acceso vivo y autoritativo a:- el spec OpenAPI completo de cada endpoint,
- snippets SDK copy-paste en 8 lenguajes,
- la lista completa de códigos
typede resultado por endpoint, - y la opción de invocar el endpoint cuando ya tengas tu key.
Compatibilidad
MCP es un protocolo abierto adoptado por Anthropic (2024), OpenAI (2025) y Google (2025). El mismo server config funciona en cualquier cliente compliant:- Claude Desktop (app macOS)
- Claude Code (CLI)
- Cursor
- Windsurf
- ChatGPT Desktop
- Codex CLI
- Gemini CLI / Antigravity
- Zed
- cualquier otro cliente compatible con MCP
Instalar con tu AI (atajo)
La mayoría de las veces puedes simplemente pedirle a tu asistente AI que lo instale por ti. Copia uno de los prompts de abajo en el chat de tu cliente — el LLM editará el archivo de config correcto (y correrá el comando CLI cuando aplique). Importante: los clientes de escritorio (Claude Desktop, Cursor, Windsurf) necesitan reiniciarse después de editar la config; el AI no puede hacerlo por ti. Cierra la app y reábrela. Convención de rutas: el atajo~/ significa el home del usuario
en macOS y Linux (/Users/<tú>/... y /home/<tú>/...
respectivamente). En Windows, reemplaza ~/ por
%USERPROFILE%\ (CMD) o $HOME\ (PowerShell). La config de Claude
Desktop usa una ruta %APPDATA% específica de Windows, detallada
abajo.
Claude Code (CLI)
Claude Desktop
Cursor
Windsurf
Codex CLI
Gemini CLI / Antigravity
Instalación
No instalas el paquete manualmente — tu cliente MCP lo lanza on demand víanpx. Elige el snippet de tu cliente:
Claude Code
Claude Desktop
Edita~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows) y
agrega:
Cursor
Edita~/.cursor/mcp.json:
Windsurf
Edita~/.codeium/windsurf/mcp_config.json con el mismo bloque
mcpServers.origoid de arriba.
ChatGPT Desktop
Abre Settings → Tools → Model Context Protocol y pega el bloquemcpServers.origoid en el editor de config.
Codex CLI
Edita~/.codex/config.toml:
Gemini CLI / Antigravity
Edita~/.gemini/settings.json:
Cualquier otro cliente MCP
Usa:- Command:
npx - Args:
-y @origoid/mcp-server - Env:
ORIGOID_API_KEY=<tu_api_key>
API key opcional
Si no definesORIGOID_API_KEY, el servidor arranca en modo
docs-only. Las 10 tools de documentación funcionan normalmente; las
19 tools de API devuelven un error claro si las invocan. Este es el
modo correcto para la fase de diseño — el LLM puede describir,
scaffold, y escribir tu integración sin que tengas cuenta todavía.
Tools
Tools de docs (sin API key, sin créditos)
| Tool | Qué devuelve |
|---|---|
list_endpoints({domain?}) | Catálogo de cada operación con operationId, método, path, y dominio. Filtro opcional por dominio (renapo, sat, imss, ine, compliance, biometrics, email, documents, auth). |
get_endpoint({operationId}) | Operación OpenAPI completa: descripción, request schema, response examples para cada código type, costo en créditos. |
get_sdk_example({operationId, language}) | Snippet copy-paste. Lenguajes: curl, javascript, typescript, python, php, go, java, ruby, csharp. |
get_response_types({operationId}) | Cada type posible del endpoint con un sample envelope — alimenta tu lógica switch/match. |
get_api_overview() | El info.description completo del spec: autenticación, contrato envelope, headers rate-limit, convenciones de lenguaje, política image processing, y todos los catálogos (CURP status, IMSS modalities, SAT lists, OFAC lists, CFDI effects). |
search_docs({query}) | Búsqueda free-text en summaries, descriptions y examples. |
validate_envelope_shape({envelopeJson}) | Checker offline — ¿el JSON cumple el contrato canónico Envelope? Útil para unit-test de un parser custom. |
get_typescript_types({operationId}) | Archivo .ts self-contained con interfaces Request, Type (union), Data, y Envelope. Pega directo en tu proyecto — no requiere instalar el SDK. |
get_pydantic_model({operationId}) | Archivo .py self-contained con clases Pydantic v2 (Request, Type Literal, Data, ErrorDetail, Envelope). Única dep runtime: pydantic>=2. |
get_full_integration_starter({scenario}) | Proyecto multi-file completo listo para que el usuario (o su asistente AI) lo deje en una carpeta y corra. Scenarios: express-curp (Node + Express 5), fastapi-curp (Python + FastAPI async), go-cli-curp (Go CLI). Cada uno maneja todos los type codes con HTTP / exit codes idiomáticos. |
Tools de API (requieren ORIGOID_API_KEY)
Una por endpoint. Calls van vía el SDK oficial @origoid/sdk a
https://api.origoid.com. Cada call exitoso consume créditos según
la página de créditos.
| Tool | Endpoint |
|---|---|
issue_token | POST /auth/token |
validate_curp | POST /mex/renapo/v1/curp-validations |
lookup_curp | POST /mex/renapo/v1/curp-lookups |
validate_rfc | POST /mex/fiscal/v1/rfc-validations |
extract_csf | POST /mex/fiscal/v1/csf-extractions |
validate_cfdi | POST /mex/fiscal/v1/cfdi-validations |
lookup_nss | POST /mex/social-security/v1/imss-nss-lookups |
get_employment_status | POST /mex/social-security/v1/imss-employment-status |
validate_voter_list | POST /mex/id/v1/voter-list-validations |
extract_voter_id_data | POST /mex/id/v1/voter-id-extractions |
extract_qr_data | POST /mex/id/v1/qr-extractions |
search_sat_69 | POST /mex/compliance/v1/sat-69-searches |
search_sat_69b | POST /mex/compliance/v1/sat-69b-searches |
search_ofac | POST /global/compliance/v1/ofac-searches |
search_peps | POST /mex/compliance/v1/peps-searches |
match_faces | POST /global/biometrics/v1/face-matches |
check_liveness | POST /global/biometrics/v1/liveness-checks |
validate_email | POST /global/email/v1/email-validations |
extract_proof_of_address | POST /mex/documents/v1/proof-of-address-extractions |
status, type, data, errors[], y el
transactionId (útil para tickets de soporte).
Sesiones típicas
Integración a nivel snippet
Agrega validación CURP a mi API Express. Usa el MCP de OrigoID para verificar el schema y dame un handler TypeScript que cubra todos los tipos de resultado.El LLM internamente llama:
list_endpoints({domain: "renapo"})— encuentravalidateCurpget_endpoint({operationId: "validateCurp"})— lee el request schema y cada response exampleget_response_types({operationId: "validateCurp"})— obtiene los 10 códigostypeposibles para que el switch generado esté completoget_sdk_example({operationId: "validateCurp", language: "typescript"})— saca un snippet copy-paste
validate_curp({curp: "..."}) — esa
única call es facturada.
Proyecto completo (un prompt → repo corriendo)
Crea un proyecto completo Express + TypeScript que valida CURPs contra OrigoID. Usa el integration starter del MCP.El LLM llama
get_full_integration_starter({scenario: "express-curp"})
una sola vez. La tool devuelve seis archivos (package.json,
tsconfig.json, .env.example, .gitignore, src/server.ts,
README.md), los setup commands, y el run command. El LLM los
escribe a disco; tú corres npm install && npm run dev y tienes un
server funcional en menos de un minuto. Mismo flujo para
fastapi-curp (Python + FastAPI async) o go-cli-curp (Go CLI).
Integración tipada sin el SDK
Prefiero llamar OrigoID con fetch crudo pero quiero el type safety del response. Dame los tipos TypeScript de validateCurp.El LLM llama
get_typescript_types({operationId: "validateCurp"}) y
recibe un archivo .ts self-contained (interfaces Request, Type
union, Data, Envelope). Para Python, el mismo patrón usa
get_pydantic_model({operationId: "validateCurp"}) y devuelve clases
Pydantic v2.
Comportamiento de costo
- Tools de docs: costo cero para siempre. Leen del spec OpenAPI empaquetado con el paquete.
- Tools de API: facturadas según el pricing público. El LLM puede ejecutarlas repetidamente mientras itera; revisa la lista de calls antes de aprobar auto-ejecución.
- Recomendamos una API key dedicada para desarrollo asistido por AI, con un pool de créditos separado de tu tráfico productivo.
Autenticación
El servidor leeORIGOID_API_KEY de su entorno. El cliente host MCP
es responsable de inyectarla vía el campo env en su configuración —
nunca como argumento de tool ni dentro del chat. Si accidentalmente
pegas tu key en un prompt, rótala.
Código fuente y versión
- npm:
@origoid/mcp-server - GitHub: github.com/origoid/mcp-server
https://api.origoid.com.