OCR Platform
Admin

URL base API

https://ocr.789.com.mx/v1

MCP para asistentes de IA

ReaderDocs publica un servidor MCP para que tu asistente de código (Claude Code, Cursor, VS Code, etc.) diseñe y valide extracciones sin que tengas que memorizar las reglas.

  • URL: https://ocr.789.com.mx/mcp
  • Autenticación: ninguna. No necesitas API Key.
  • Qué hace: entrega reglas, plantillas y valida custom_instruction + response_schema con las mismas reglas que la API.
  • Qué no hace: no sube documentos, no ejecuta extracciones ni ve datos de ningún proyecto. Para eso usa la API con tu key.
  • Transporte: HTTP (Streamable HTTP). Si tu cliente pregunta, elige http, no sse.
  • Límite: 60 peticiones por minuto por IP.

Antes de empezar: comprueba que llegas al servidor

Este comando hace el mismo saludo inicial que hace cualquier cliente MCP:

curl -s -X POST https://ocr.789.com.mx/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","version":"1.0"}}}'

Si la respuesta incluye "serverInfo":{"name":"ReaderDocs", el servidor funciona y cualquier problema está en la configuración de tu cliente.

Abrir https://ocr.789.com.mx/mcp en el navegador devuelve 405 Method Not Allowed. Es normal: el servidor solo acepta POST.

Conectar tu cliente

Elige tu cliente, agrega la configuración y haz la comprobación del final de cada bloque.

Claude Code

claude mcp add --transport http readerdocs https://ocr.789.com.mx/mcp

Por defecto queda solo para ti y en el proyecto actual. Cambia el alcance con --scope:

Alcance Para quién
local (default) Solo tú, en este proyecto.
project Todo el equipo: se guarda en .mcp.json en la raíz del repo para que lo commitees.
user Solo tú, en todos tus proyectos.

Con --scope project el archivo .mcp.json queda así:

{
  "mcpServers": {
    "readerdocs": {
      "type": "http",
      "url": "https://ocr.789.com.mx/mcp"
    }
  }
}

Comprueba: claude mcp list debe mostrar readerdocs como conectado (✓ Connected). Dentro de una sesión, /mcp lista el servidor y sus herramientas.

Claude Desktop y claude.ai

  1. Abre Configuración → Conectores → Agregar conector personalizado.
  2. Nombre: ReaderDocs. URL: https://ocr.789.com.mx/mcp.
  3. Deja vacíos los campos de OAuth: el servidor no pide autenticación.
  4. Guarda y activa el conector desde el menú de herramientas de la conversación.

Claude se conecta a los conectores desde la nube de Anthropic, así que necesita una URL pública por HTTPS: no funciona contra un entorno local. En planes Team y Enterprise, un administrador debe agregar el conector a la organización primero.

Comprueba: en una conversación nueva, el menú de herramientas muestra ReaderDocs con sus herramientas.

Cursor

En .cursor/mcp.json (solo este proyecto) o ~/.cursor/mcp.json (todos tus proyectos):

{
  "mcpServers": {
    "readerdocs": {
      "url": "https://ocr.789.com.mx/mcp"
    }
  }
}

Comprueba: en Cursor Settings → MCP, readerdocs aparece con indicador verde y sus herramientas. Si está en rojo, usa el botón de recargar del servidor.

VS Code (GitHub Copilot)

En .vscode/mcp.json:

{
  "servers": {
    "readerdocs": {
      "type": "http",
      "url": "https://ocr.789.com.mx/mcp"
    }
  }
}

La clave raíz es servers, no mcpServers como en Cursor o Claude. Con mcpServers VS Code lee el archivo pero no registra ningún servidor.

Comprueba: en el chat de Copilot cambia a modo Agente, abre el selector de herramientas y busca readerdocs. Las herramientas no aparecen en los modos Ask ni Edit. Si no sale, revisa Output → MCP.

Windsurf

En ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "readerdocs": {
      "serverUrl": "https://ocr.789.com.mx/mcp"
    }
  }
}

Windsurf usa serverUrl, no url.

Comprueba: en Cascade abre Manage MCPs y pulsa Refresh. readerdocs debe aparecer con sus herramientas.

Clientes que solo aceptan servidores locales

Si tu cliente solo ejecuta servidores por comando (stdio), usa mcp-remote como puente. Requiere Node.js 18 o superior:

{
  "mcpServers": {
    "readerdocs": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://ocr.789.com.mx/mcp"]
    }
  }
}

Comprueba que funciona

Con el cliente ya conectado, pregúntale a tu asistente:

¿Qué herramientas tiene el MCP de readerdocs?

Debe mencionar validate-extraction-request y get-schema-template. Después pide una prueba completa:

Usa get-schema-template con cfdi_invoice y valida el resultado con validate-extraction-request.

Debe responder que la petición es válida. Si llegas aquí, ya está todo listo.

Problemas comunes

Síntoma Causa Solución
El cliente no muestra herramientas No recargó la configuración Reinicia el cliente o recarga la ventana después de editar el archivo.
VS Code no registra el servidor La clave raíz es mcpServers Usa servers y "type": "http".
Windsurf no conecta Usaste url Usa serverUrl.
Error de SSE o de transporte El cliente está configurado como sse Usa transporte http (Streamable HTTP).
405 Method Not Allowed Abriste la URL con GET (navegador) Es normal; los clientes MCP usan POST.
429 Too Many Requests Más de 60 peticiones por minuto desde tu IP Espera un minuto; los headers X-RateLimit-* muestran el saldo.
El conector de Claude no conecta URL local o sin HTTPS Usa la URL pública https://ocr.789.com.mx/mcp.
El curl de arriba falla Red, VPN o proxy bloquean la URL Resuélvelo antes de configurar el cliente: ningún cliente conectará.

Qué expone

Tipo Nombre Para qué
Tool validate-extraction-request Valida response_schema (y opcionalmente custom_instruction). Devuelve los mismos mensajes que un 422 de la API.
Tool get-schema-template Plantilla completa y válida por perfil: cfdi_invoice, ine_document, csf_document, proof_of_address.
Prompt design-extraction Guía al asistente: plantilla → ajuste → validación → petición final.
Resource readerdocs://docs/integracion-completa La guía completa para IA como contexto.

Al conectarse, el asistente recibe además las reglas de schema e instrucción, así que las aplica aunque no invoques nada explícitamente.

Ejemplos de uso

Pídelo en lenguaje natural:

Con el MCP de readerdocs, arma la extracción para recibos de nómina: RFC del patrón,
nombre del empleado, periodo, percepciones, deducciones y neto a pagar. Valídala.
Integra ReaderDocs en app/Services/Kyc: sube la INE, espera el OCR y extrae nombre,
CURP y vigencia. Usa get-schema-template y valida el schema antes de escribir el código.

En Claude Code también puedes invocar el prompt directamente:

/mcp__readerdocs__design-extraction "comprobante de domicilio" "titular, dirección, código postal"

Siguiente paso