@devrobotlabs/visionapi-mcp
Official@devrobotlabs/visionapi-mcp
Servidor MCP para la Vision API. Apunta Claude Code, Claude Desktop, Cursor o cualquier otro host MCP a una carpeta de escaneos y pide las facturas: sin integración que escribir, sin clave API en el código generado, sin contrato parafraseado de memoria.
You: pull the totals out of every invoice in ~/inbox and put them in a CSV
Claude: [vision_analyze × 7]
Done — 7 invoices, 14 credits. Three had no PO number; I left those cells empty.Instalación
Nada que instalar. Añádelo a la configuración de tu host y se ejecuta mediante npx.
Claude Code — claude mcp add visionapi --env VISION_API_KEY=sk_live_... -- npx -y @devrobotlabs/visionapi-mcp ~/inbox
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"visionapi": {
"command": "npx",
"args": ["-y", "@devrobotlabs/visionapi-mcp", "/Users/me/inbox"],
"env": { "VISION_API_KEY": "sk_live_..." }
}
}
}Cursor — .cursor/mcp.json, misma forma:
{
"mcpServers": {
"visionapi": {
"command": "npx",
"args": ["-y", "@devrobotlabs/visionapi-mcp", "."],
"env": { "VISION_API_KEY": "sk_live_..." }
}
}
}VS Code — .vscode/mcp.json:
{
"servers": {
"visionapi": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@devrobotlabs/visionapi-mcp", "${workspaceFolder}"],
"env": { "VISION_API_KEY": "sk_live_..." }
}
}
}Obtén una clave en app.visionapi.io/dashboard/keys. Las cuentas nuevas reciben 50 créditos, sin tarjeta.
Los bloques de configuración del host viven en este README en lugar de en un directorio
examples/— una desviación de las nueve bibliotecas cliente, y deliberada. Un fragmento que solo existe en un README no puede desviarse de un script ejecutable que nadie ejecuta.
Related MCP server: receiptconverter-mcp
Qué directorios puede leer
Cada argumento posicional es un directorio del que el servidor puede leer archivos. Si no se da ninguno, el directorio de trabajo del proceso es la única raíz — que es el valor predeterminado seguro, porque los hosts MCP lanzan un servidor stdio con el directorio del proyecto como su cwd.
Esto importa más de lo que parece. El servidor tiene una credencial de gasto en vivo y se ejecuta
con tus permisos de sistema de archivos, por lo que puede leer cualquier cosa que tu shell pueda. Pedirle el texto
bruto de ~/Documents/passport.jpg es una forma funcional de obtener el contenido de ese documento en el
contexto de un modelo y en cualquier transcripción que tu host mantenga. La lista de permitidos es lo que impide
que un agente confundido o manipulado haga eso por accidente.
Las rutas se resuelven con realpath en ambos lados antes de compararse, por lo que un enlace simbólico dentro
de un directorio permitido no puede apuntar fuera de él.
--allow-any-path desactiva la lista de permitidos por completo. Advierte en stderr al inicio y
deberías tener una razón.
Herramientas
Herramienta | Qué hace | Costo |
| Campos estructurados de una imagen o PDF | 1 crédito por imagen, 2 por página PDF |
| Hasta 5 preguntas en lenguaje natural sobre un archivo | 1 crédito por imagen, 1 por página PDF |
| ¿Qué es este archivo? Presets clasificados, sin extracción | 1 crédito por cada 5 llamadas |
| El catálogo de presets | gratis |
| Cada campo que devuelve un preset | gratis |
| Saldo y buckets | gratis |
| Estado/resultado de una tarea en cola | gratis |
Las tres que gastan créditos están anotadas con readOnlyHint: false, por lo que un host que autoaprueba
herramientas de solo lectura se detendrá y preguntará antes de que una de ellas se ejecute.
El catálogo también se expone como recursos — visionapi://presets y
visionapi://presets/{name} — para hosts que los prefieran. Las herramientas son la superficie principal,
porque el soporte de recursos es desigual entre hosts.
Salida
Las respuestas se renderizan para que un modelo las lea, no se vuelcan como JSON. Un preset de factura de 37 campos
sobre un documento que llena doce de ellos devuelve una tabla más una línea No encontrado en este documento (25): …, en lugar de veinticinco repeticiones de
{"value":null,"confidence":"low"} — de tres a cuatro veces más pequeño, y más fácil de actuar.
Nada se pierde en el proceso. Cada herramienta acepta un format:
markdown(predeterminado) — la representación anterior.compact_json— la misma información como datos, con matrices_not_foundy_low_confidence. Para cuando el agente vaya a analizar en lugar de leer.json— la respuesta de la API verbatim. Lo que se debe usar al escribir código HTTP real contra el contrato.
La confianza se imprime solo cuando no es alta, por lo que (mid) y (low) resaltan y el
caso común no cuesta nada de leer.
Documentos largos
Deja mode en auto. La API mata una solicitud síncrona a los 60 segundos; el servidor entonces
la reenvía a la cola y hace polling, informando el progreso a tu host mientras avanza. Se te cobra
una vez, porque el intento con tiempo agotado liberó su reserva por completo.
Pasa mode: "async" de antemano para cualquier cosa de más de aproximadamente diez páginas, y pages: "1-5" para muestrear
un documento largo de forma económica: se te cobra solo por las páginas seleccionadas.
Costos y fallos
Los fallos no cuestan nada. Cada no-2xx libera la reserva de crédito por completo, por lo que una llamada fallida es segura de corregir y repetir, y no hay limpieza que hacer. Las descripciones de las herramientas lo dicen, por lo que un agente que usa este servidor se comporta de manera sensata después de un error, en lugar de rendirse o reintentar algo que no puede funcionar.
Dos errores llevan consejos que vale la pena conocer:
Error | Qué significa |
| Reintentar no puede ayudar: el saldo no cambia por sí solo. Recarga. |
| Tus propias tareas asíncronas están en el límite del plan. Se despeja cuando una de ellas termina, no con un temporizador — así que dormir y reintentar bloquea precisamente lo que esperas. |
Entorno
Variable | Requerida | Propósito |
| para herramientas facturables | Tu clave. Las herramientas del catálogo funcionan sin ella. |
| no | Sobrescribe la URL base de la API. Rara vez necesario. |
Una clave faltante no impide que el servidor se inicie: advierte en stderr, tools/list sigue funcionando,
y la primera llamada facturable devuelve un mensaje que nombra la solución. Un servidor que se niega a iniciar
le dice al usuario solo que algo está roto.
Desarrollo
npm install
npm run typecheck
npm test # 37 offline tests — no key, no network
npx @modelcontextprotocol/inspector node ./dist/cli.js ~/some/dirnpm install --no-save ../node para probar contra una compilación local del cliente. No
npm install ../node — eso reescribe package.json a "file:../node", y ese manifiesto es
lo que se publica.
Enlaces
Licencia MIT.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants read and visually analyze local documents — PDFs, Excel spreadsheets, CSV files, Word documents, PowerPoint presentations, and images.456MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for ReceiptConverter that allows AI assistants to parse any receipt or invoice image/PDF into structured JSON with a single tool call.16MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that gives your Claude, Cline, or Cursor session the ability to extract text, tables, and metadata from any PDF URL — including scanned PDFs via OCR.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that extracts clean text, tables, and structured data from documents, images, code, and audio files, supporting 97 formats with OCR, transcription, and code intelligence.MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Generate PDFs from templates via AI chat. Works with Claude, ChatGPT, Cursor, and any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/devrobotlabs/visionapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server