关于 VisionAgent MCP Server
VisionAgent MCP Server 是本地 MCP 服务,可将计算机视觉和文档分析请求转发至 Landing AI 的 VisionAgent API,供 MCP 客户端使用,并返回 JSON 和可视化结果。
主要功能
- 01提取文档文本、表格、图表和示意图
- 02通过提示词检测对象并生成边界框
- 03生成实例分割掩码
- 04识别视频活动及其时间戳
- 05估算单目深度图
- 06可选渲染视觉结果
适用场景
- 01从 PDF 中提取发票字段
- 02根据文本提示定位图像中的对象
- 03分割图像中的对象
- 04识别视频中发生的活动
MCP 相关
它通过 STDIN/STDOUT 向 MCP 客户端提供 VisionAgent 工具,并将调用转发到经过身份验证的 VisionAgent REST API。结果以 JSON 和可选图像输出的形式返回。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
VisionAgent MCP 服务
Beta – v0.1
本项目处于早期访问阶段,在 v1.0 之前可能会有破坏性变更。
VisionAgent MCP 服务 v0.1 - 概述
现代大模型 “Agent” 通过 Model Context Protocol (MCP) 调用外部工具。VisionAgent MCP 是一个轻量级、旁挂式 MCP 服务,在本地通过 STDIN/STDOUT 运行,将来自 MCP 兼容客户端(Claude Desktop、Cursor、Cline 等)的每次工具调用转换为对 Landing AI 的 VisionAgent REST API 的经过身份验证的 HTTPS 请求。响应 JSON 以及任何图像或掩码都会流式传回模型,因此你可以直接在编辑器中发出自然语言的计算机视觉和文档分析命令,而无需编写自定义 REST 代码或加载额外的 SDK。
📸 演示
https://github.com/user-attachments/assets/2017fa01-0e7f-411c-a417-9f79562627b7
🧰 支持的用例 (v0.1)
| 能力 | 描述 |
|---|---|
agentic-document-analysis | 解析 PDF / 图像,提取文本、表格、图表和示意图,同时考虑布局和其他视觉线索。网页版见此处。 |
text-to-object-detection | 使用 OWLv2 / CountGD / Florence-2 / Agentic Object Detection 检测自由形式的提示词(“所有交通信号灯”)(网页版见此处);输出边界框。 |
text-to-instance-segmentation | 通过 Florence-2 + Segment-Anything-v2 (SAM-2) 生成像素级精确掩码。 |
activity-recognition | 识别视频中的多个活动,并给出开始/结束时间戳。 |
depth-pro | 针对单张图像的高分辨率单目深度估计。 |
每当 VisionAgent 发布新端点时,运行
npm run generate-tools。该脚本会获取最新的 OpenAPI 规范并自动重新生成本地工具映射。
🗺 目录
🚀 快速开始
获取你的 VisionAgent API 密钥
如果你还没有 VisionAgent API 密钥,请创建账户并获取你的 API 密钥。
# 1 Install
npm install -g vision-tools-mcp
# 2 Configure your MCP client with the following settings:
{
"mcpServers": {
"VisionAgent": {
"command": "npx",
"args": ["vision-tools-mcp"],
"env": {
"VISION_AGENT_API_KEY": "<YOUR_API_KEY>",
"OUTPUT_DIRECTORY": "/path/to/output/directory",
"IMAGE_DISPLAY_ENABLED": "true" # or false, see below
}
}
}
}
- 打开支持 MCP 的客户端。
- 下载 street.png(从此目录中的 assets 文件夹获取,也可以选择任意测试图像)。
- 粘贴以下提示词(或任意提示词):
Detect all traffic lights in /path/to/mcp/vision-agent-mcp/assets/street.png
如果你的客户端支持内联资源,你将看到边界框叠加层;否则,PNG 会保存到你的输出目录,聊天中会显示其路径。
前提条件
| 软件 | 最低版本 |
|---|---|
| Node.js | 20 (LTS) |
| VisionAgent 账户 | 任意付费或免费套餐(需要 API 密钥) |
| MCP 客户端 | Claude Desktop / Cursor / Cline / 等 |
⚙️ 配置
| 环境变量 | 是否必填 | 默认值 | 用途 |
|---|---|---|---|
VISION_AGENT_API_KEY | 是 | — | Landing AI 认证令牌。 |
OUTPUT_DIRECTORY | 否 | — | 渲染图像 / 掩码 / 深度图的存储位置。 |
IMAGE_DISPLAY_ENABLED | 否 | true | false ➜ 跳过渲染 |
MCP 客户端配置示例(VS Code / Cursor 的 .mcp.json)
{
"mcpServers": {
"VisionAgent": {
"command": "npx",
"args": ["vision-tools-mcp"],
"env": {
"VISION_AGENT_API_KEY": "912jkefief09jfjkMfoklwOWdp9293jefklwfweLQWO9jfjkMfoklwDK",
"OUTPUT_DIRECTORY": "/Users/me/documents/mcp/test",
"IMAGE_DISPLAY_ENABLED": "false"
}
}
}
}
对于不具备图像显示能力的 MCP 客户端(如 Cursor),请将 IMAGE_DISPLAY_ENABLED 设置为 False。对于具备图像显示能力的 MCP 客户端(如 Claude Desktop),请将 IMAGE_DISPLAY_ENABLED 设置为 true 以可视化工具输出。通常,支持资源的 MCP 客户端(参见此列表:https://modelcontextprotocol.io/clients)都支持图像显示。
💡 提示词示例
| 场景 | 提示词(上传文件后) |
|---|---|
| 发票提取 | “使用 agentic-document-analysis 从这份 PDF 中提取供应商、发票日期和总金额。” |
| 行人识别 | “通过 text-to-object-detection 定位 street.jpg 中的每个行人。” |
| 农业分割 | “使用 text-to-instance-segmentation 分割 kitchen.png 中的所有番茄。” |
| 活动识别(视频) | “通过 activity-recognition 识别 match.mp4 中发生的活动。” |
| 深度估计 | “使用 depth-pro 为 selfie.png 生成深度图。” |
🏗 架构与流程
┌────────────────────┐ 1. human prompt ┌───────────────────┐
│ MCP-capable client │───────────────────────────▶│ VisionAgent MCP │
│ (Cursor, Claude) │ │ (this repo) │
└────────────────────┘ └─────────▲─────────┘
▲ 6. rendered PNG / JSON │ 2. JSON tool call
│ │
│ 5. preview path / data 3. HTTPS │
│ ▼
local disk ◀──────────┐ Landing AI VisionAgent
└────────────── Cloud APIs
4. JSON / media blob
- 提示词 → 工具调用 客户端将你的自然语言提示词转换为结构化的 MCP 调用。
- 验证 服务端使用从实时 OpenAPI 规范派生的 Zod schema 验证参数。
- 转发 经过认证的 Axios 请求命中 VisionAgent 端点。
- 响应 返回 JSON + 任何 base64 媒体。
- 可视化 如果启用,则将掩码 / 边界框 / 深度图渲染到文件。
- 返回聊天 MCP 客户端接收数据 + 文件路径(或内联预览)。
🧑💻 开发者指南
以下是如何深入了解代码、添加新端点或排查问题的方法。
安装与构建
-
克隆仓库:
git clone https://github.com/landing-ai/vision-agent-mcp.git -
进入项目目录:
cd vision-agent-mcp -
安装依赖:
npm install -
构建项目:
npm run build
环境变量
VISION_AGENT_API_KEY- 必填 用于 VisionAgent 认证的 API 密钥OUTPUT_DIRECTORY- 用于保存处理后输出的可选目录(支持相对路径和绝对路径)IMAGE_DISPLAY_ENABLED- 设置为"true"以启用图像可视化功能
客户端配置
构建完成后,使用以下设置配置你的 MCP 客户端:
{
"mcpServers": {
"VisionAgent": {
"command": "node",
"args": [
"/path/to/build/index.js"
],
"env": {
"VISION_AGENT_API_KEY": "<YOUR_API_KEY>",
"OUTPUT_DIRECTORY": "../../output",
"IMAGE_DISPLAY_ENABLED": "true"
}
}
}
}
注意: 将
/path/to/build/index.js替换为构建后的index.js文件的实际路径,并根据需要设置环境变量。对于不具备图像显示能力的 MCP 客户端(如 Cursor),请将 IMAGE_DISPLAY_ENABLED 设置为 False。对于具备图像显示能力的 MCP 客户端(如 Claude Desktop),请将 IMAGE_DISPLAY_ENABLED 设置为 true 以可视化工具输出。通常,支持资源的 MCP 客户端(参见此列表:https://modelcontextprotocol.io/clients)都支持图像显示。
📑 脚本与命令
| 脚本 | 用途 |
|---|---|
npm run build | 将 TypeScript 编译到 build/(添加可执行权限)。 |
npm run start | 构建并运行(node build/index.js)。 |
npm run typecheck | 仅类型检查(tsc --noEmit)。 |
npm run generate-tools | 获取最新的 OpenAPI 并重新生成 toolDefinitionMap.ts。 |
npm run build:all | 便捷命令:npm run build + npm run generate-tools。 |
专业提示:如果你修改了
src/下的任何文件,或者想获取 VisionAgent 的新端点,请运行npm run build:all来重新编译 + 重新生成工具定义。
📂 项目结构
vision-agent-mcp/
├── .eslintrc.json # ESLint config (optional)
├── .gitignore # Ignore node_modules, build/, .env, etc.
├── jest.config.js # Placeholder for future unit tests
├── mcp-va.md # Draft docs (incomplete)
├── package.json # npm metadata, scripts, dependencies
├── package-lock.json # Lockfile
├── tsconfig.json # TypeScript compiler config
├── .env # Your environment variables (not committed)
│
├── src/ # TypeScript source code
│ ├── generateTools.ts # Dev script: fetch OpenAPI → generate MCP tool definitions (Zod schemas)
│ ├── index.ts # Entry point: load .env, start MCP server, handle signals
│ ├── toolDefinitionMap.ts # Auto-generated MCP tool definitions (don’t edit by hand)
│ ├── toolUtils.ts # Helpers to build MCP tool objects (metadata, descriptions)
│ ├── types.ts # Core TS interfaces (MCP, environment config, etc.)
│ │
│ ├── server/ # MCP server logic
│ │ ├── index.ts # Create & start the MCP server (Server + Stdio transport)
│ │ ├── handlers.ts # `handleListTools` & `handleCallTool` implementations
│ │ ├── visualization.ts # Post-process & save image/video outputs (masks, boxes, depth maps)
│ │ └── config.ts # Load & validate .env, export SERVER_CONFIG & EnvConfig
│ │
│ ├── utils/ # Generic utilities
│ │ ├── file.ts # File handling (base64 encode images/PDFs, read streams)
│ │ └── http.ts # Axios wrappers & error formatting
│ │
│ └── validation/ # Zod schema generation & argument validation
│ └── schema.ts # Convert JSON Schema → Zod, validate incoming tool args
│
├── build/ # Compiled JavaScript (generated after `npm run build`)
│ ├── index.js
│ ├── generateTools.js
│ ├── toolDefinitionMap.js
│ └── … # Mirror of `src/` structure
│
├── output/ # Runtime artifacts (bounding boxes, masks, depth maps, etc.)
│
└── assets/ # Static assets (e.g., demo.gif)
└── demo.gif
🔍 关键组件
-
src/generateTools.ts- 获取
https://api.va.landing.ai/openapi.json(VisionAgent 的公共 OpenAPI)。 - 通过白名单过滤端点(你也可以禁用过滤以包含全部端点)。
- 将 JSON Schema 转换为 Zod schema,写入
toolDefinitionMap.ts,其中包含一个Map<string, McpToolDefinition>。 - 运行:
npm run generate-tools。
- 获取
-
src/toolDefinitionMap.ts- 包含工具名称 → MCP 定义的映射(名称、描述、inputSchema、端点、HTTP 方法)。
- 自动生成——请勿手动编辑。
-
src/server/handlers.ts-
实现
handleListTools:返回[ { name, description, inputSchema } ]。 -
实现
handleCallTool:- 使用 Zod 验证传入的
arguments。 - 如果参数基于文件(例如
imagePath、pdfPath),则通过src/utils/file.ts读取并进行 base64 编码。 - 为 Axios 构建 multipart/form-data 或 JSON 载荷。
- 调用 VisionAgent 端点,捕获错误,返回符合 MCP 规范的 JSON 响应。
- 如果
IMAGE_DISPLAY_ENABLED=true,则调用src/server/visualization.ts保存 PNG/JSON。
- 使用 Zod 验证传入的
-
-
src/server/visualization.ts- 对掩码进行后处理(base64 → PNG)。
- 可选地在原始图像上叠加边界框或分割掩码,并保存到
OUTPUT_DIRECTORY。 - 在 MCP 结果中返回文件路径,以便你的客户端可以渲染它们。
-
src/utils/file.tsreadFileAsBase64(path: string): Promise<string>:读取任意二进制文件(图像、PDF、视频)并返回 base64。loadFileStream(path: string):返回用于大文件上传的 Node.js 流。
-
src/utils/http.ts- 配置 Axios,基础 URL 为
https://api.va.landing.ai。 - 添加
Authorization: Bearer ${VISION_AGENT_API_KEY}请求头。 - 封装对 VisionAgent 端点的调用,处理 4xx/5xx,将错误格式化为 MCP 错误对象。
- 配置 Axios,基础 URL 为
-
src/validation/schema.ts- 包含将 JSON Schema(来自 OpenAPI)转换为 Zod 的辅助函数。
- 暴露一个函数
buildZodSchema(jsonSchema: any): ZodObject,供generateTools.ts使用。
-
src/index.ts-
加载
dotenv(读取.env)。 -
验证必需的环境变量(
VISION_AGENT_API_KEY)。 -
导入生成的
toolDefinitionMap。 -
创建一个 MCP
Server(来自@modelcontextprotocol/sdk/server),使用StdioServerTransport。 -
将
ListTools→handleListTools、CallTool→handleCallTool连接起来。 -
记录启动信息:
vision-tools-api MCP Server (v0.1.0) running on stdio, proxying to https://api.va.landing.ai -
监听
SIGINT/SIGTERM以优雅关闭。
-
🚧 错误处理与日志
-
验证错误 如果你发送无效或缺失的参数,服务器会返回:
{ "id": 3, "error": { "code": -32602, "message": "Validation error: missing required parameter ‘imagePath’" } } -
网络错误 Axios 错误(超时、5xx)会被捕获并返回为:
{ "id": 4, "error": { "code": -32000, "message": "VisionAgent API error: 502 Bad Gateway" } } -
内部异常 处理器中未捕获的异常会产生:
{ "id": 5, "error": { "code": -32603, "message": "Internal error: Unexpected token in JSON at position 345" } }
🛟 故障排查
认证失败
- 请确认
VISION_AGENT_API_KEY正确且处于有效状态。 - 免费套餐有速率限制——请检查你的仪表盘。
- 确保到
api.va.landing.ai的出站 HTTPS 未被代理/VPN 阻止。
聊天中显示“未找到工具”
本地工具映射可能已过期。请运行:
npm run generate-tools
npm start
Node < 20 错误
代码使用了 Node 20 原生引入的 Blob 与 FormData API。
请通过 nvm install 20(mac/Linux)升级,或在 Windows 上从 nodejs.org 下载。
其他问题请参阅 MCP 文档:https://modelcontextprotocol.io/quickstart/user
另请注意,特定客户端会提供各自的实用文档。例如,如果你使用的是 OpenAI Agents SDK,请参阅其文档:https://openai.github.io/openai-agents-python/mcp/
🤝 贡献
我们欢迎 PR!
- Fork →
git checkout -b feature/my-feature。 npm run typecheck(无错误)- 提交 PR,说明做了什么以及为什么。
🔒 安全与隐私
- MCP 服务在本地运行,因此除了你显式调用的 Landing AI API 端点外,文件不会被转发到任何地方。
- 输出图像/掩码仅写入你机器上的
OUTPUT_DIRECTORY。 - 本项目不收集任何遥测数据。
由 LandingAI 团队用 ❤️ 打造。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。