@devrobotlabs/visionapi-mcp
Official@devrobotlabs/visionapi-mcp
MCP-сервер для Vision API. Укажите Claude Code, Claude Desktop, Cursor или любому другому MCP-хосту папку со сканами и попросите найти счета — без интеграции, которую нужно писать, без API-ключа в сгенерированном коде, без контракта, пересказанного по памяти.
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.Установка
Устанавливать нечего. Добавьте его в конфиг вашего хоста, и он запустится через 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, та же структура:
{
"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_..." }
}
}
}Получите ключ на app.visionapi.io/dashboard/keys. Новые аккаунты получают 50 кредитов, карта не требуется.
Блоки конфигурации хостов находятся в этом README, а не в каталоге
examples/— это отход от девяти клиентских библиотек, и намеренный. Фрагмент, существующий только в README, не может разойтись с работающим скриптом, который никто не запускает.
Related MCP server: receiptconverter-mcp
Какие каталоги он может читать
Каждый позиционный аргумент — это каталог, из которого сервер может читать файлы. Если ни одного не указано, рабочим корнем является только текущий каталог процесса — это безопасное поведение по умолчанию, поскольку MCP-хосты запускают stdio-сервер с каталогом проекта в качестве рабочего каталога.
Это важнее, чем может показаться. Сервер хранит живые учетные данные для расходов и работает с правами вашей файловой системы, поэтому он может читать все, что может ваша оболочка. Попросить его выдать необработанный текст ~/Documents/passport.jpg — рабочий способ передать содержимое этого документа в контекст модели и в любой журнал, который ведет ваш хост. Список разрешенных путей — это то, что мешает сбитому с толку или скомпрометированному агенту сделать это случайно.
Пути разрешаются с помощью realpath с обеих сторон перед сравнением, поэтому символическая ссылка внутри разрешенного каталога не может указывать за его пределы.
--allow-any-path полностью отключает список разрешенных путей. При запуске он выводит предупреждение в stderr, и у вас должна быть причина его использовать.
Инструменты
Инструмент | Что делает | Стоимость |
| Структурированные поля из одного изображения или PDF | 1 кредит за изображение, 2 за страницу PDF |
| До 5 вопросов на простом языке об одном файле | 1 кредит за изображение, 1 за страницу PDF |
| Что это за файл? Ранжированные пресеты, без извлечения | 1 кредит за 5 вызовов |
| Каталог пресетов | бесплатно |
| Все поля, которые возвращает один пресет | бесплатно |
| Баланс и пакеты | бесплатно |
| Статус/результат поставленной в очередь задачи | бесплатно |
Три инструмента, которые тратят кредиты, помечены readOnlyHint: false, поэтому хост, который автоматически одобряет инструменты только для чтения, все равно остановится и спросит перед запуском одного из них.
Каталог также доступен в виде ресурсов — visionapi://presets и visionapi://presets/{name} — для хостов, которые предпочитают их. Инструменты являются основным интерфейсом, поскольку поддержка ресурсов неравномерна у разных хостов.
Вывод
Ответы форматируются для чтения моделью, а не выгружаются в виде JSON. Пресет счета на 37 полей для документа, в котором заполнены двенадцать из них, возвращается в виде таблицы плюс одна строка Не найдено в этом документе (25): …, а не в виде двадцати пяти повторений {"value":null,"confidence":"low"} — в три-четыре раза меньше и с ним проще работать.
При этом ничего не теряется. Каждый инструмент принимает параметр format:
markdown(по умолчанию) — описанное выше форматирование.compact_json— та же информация в виде данных с массивами_not_foundи_low_confidence. Для случаев, когда агент будет разбирать, а не читать.json— ответ API без изменений. То, что нужно использовать при написании реального HTTP-кода по контракту.
Уверенность выводится только тогда, когда она не высокая, поэтому (mid) и (low) выделяются, а обычный случай не требует чтения лишнего.
Длинные документы
Оставьте mode в значении auto. API завершает синхронный запрос через 60 секунд; затем сервер повторно отправляет его в очередь и опрашивает статус, сообщая о ходе выполнения вашему хосту. Плата взимается один раз, поскольку истекший по времени запрос полностью освободил свое резервирование.
Передайте mode: "async" заранее для всего, что больше примерно десяти страниц, и pages: "1-5", чтобы недорого просмотреть длинный документ — вы платите только за выбранные страницы.
Стоимость и сбои
Сбои ничего не стоят. Любой ответ, отличный от 2xx, полностью снимает резервирование кредитов, поэтому неудачный вызов можно безопасно исправить и повторить, и никакой уборки не требуется. В описаниях инструментов об этом сказано, поэтому агент, использующий этот сервер, ведет себя разумно после ошибки, а не сдается или повторяет то, что не может сработать.
Две ошибки содержат совет, который стоит знать самому:
Ошибка | Что означает |
| Повторные попытки не помогут — баланс сам по себе не изменится. Пополните счет. |
| Ваши собственные асинхронные задачи достигли лимита тарифа. Он освобождается, когда завершается одна из них, а не по таймеру — поэтому сон и повторные попытки блокируют именно то, чего вы ждете. |
Окружение
Переменная | Обязательная | Назначение |
| для платных инструментов | Ваш ключ. Инструменты каталога работают без него. |
| нет | Переопределяет базовый URL API. Редко требуется. |
Отсутствие ключа не мешает запуску сервера: он выводит предупреждение в stderr, tools/list по-прежнему работает, а первый платный вызов возвращает сообщение с указанием исправления. Сервер, который отказывается запускаться, сообщает пользователю только о том, что что-то сломано.
Разработка
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 для тестирования с локальной сборкой клиента. Не npm install ../node — это перезапишет package.json на "file:../node", а этот манифест и будет опубликован.
Ссылки
Лицензия 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