picsense 是一个本地安装的 MCP 服务,通过调用多模态视觉模型 API,让 GLM-5.2 这类单模态基座模型也能识别图片与视频内容。核心特色:支持多轮迭代识别——边干边查,逐步精修。
npx @honlnk/picsense
功能
遵循 Model Context Protocol 标准,按输入形态划分,把 prompt 控制权交给基座模型。
image_sources prompt session_idvideo_source prompt session_iddocumentnpx 一行启动VisionProvider 接口,首版支持 OpenAI,可扩展 Qwen / Kimi核心特色
这是 picsense 最核心的差异化点——市面上几乎所有图片识别 MCP 都是一次性的,但一次性的视觉描述往往不够详细或不够准确。
允许基座模型在处理任务的过程中多次调用 picsense,而不是一次性识别就结束:
analyze_images(图 + 初始 prompt)→ 创建 session,返回描述 A + session_id
analyze_images(session_id + 新 prompt,如「重点描述导航栏样式」)→ 返回更精确的描述 B
session_id 字符串即可在已有对话基础上继续。视觉模型拿到的是原生多轮对话(完整 messages 数组),而非被压扁成单轮 prompt。
使用方法
需要 Node.js ≥ 20。无需克隆仓库,npx 一行启动,配置一次永久生效。
在你的 AI 客户端(ZCode / Claude Desktop / Cursor / 其他 MCP 客户端)的配置文件中加入。需提供自己的多模态模型 API Key(默认用 OpenAI Responses API):
{
"mcpServers": {
"picsense": {
"command": "npx",
"args": ["-y", "@honlnk/picsense"],
"env": {
"DEFAULT_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-xxx",
"OPENAI_MODEL": "gpt-5.6-sol"
}
}
}
}
{
"mcpServers": {
"picsense": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@honlnk/picsense"],
"env": {
"DEFAULT_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-xxx",
"OPENAI_MODEL": "gpt-5.6-sol"
}
}
}
}
cmd /c 包裹(如上),否则无法正确启动。
配置完成后,在 AI 客户端里粘贴一张图片提问,例如「描述这张 UI 截图的布局」。基座模型会自动调用 analyze_images 工具识别并返回描述。
analyze_images({
image_sources: ["https://example.com/screenshot.png"],
prompt: "描述这张 UI 截图的整体布局"
})
// 第 2 轮(复用上一轮返回的 session_id)
analyze_images({
session_id: "<上一轮返回的 session_id>",
prompt: "重点描述导航栏的样式,包括颜色、间距、字体"
})
analyze_video({
video_source: "https://example.com/demo.mp4",
prompt: "描述这段视频的内容和关键画面"
})
配置
全部配置走环境变量,代码内零硬编码。在 MCP 配置的 env 字段里传入。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
DEFAULT_PROVIDER | 是 | openai | 默认 provider |
OPENAI_API_KEY | 是* | — | OpenAI API Key |
OPENAI_MODEL | 是* | — | 模型名(如 gpt-5.6-sol) |
OPENAI_BASE_URL | 否 | 官方地址 | 自定义 base URL(代理或兼容网关) |
MAX_IMAGE_MB | 否 | 5 | 单张图片大小上限(MB) |
MAX_VIDEO_MB | 否 | 100 | 单个视频大小上限(MB) |
VIDEO_MAX_FRAMES | 否 | 30 | 视频抽帧最大帧数 |
VIDEO_FPS | 否 | 1 | 视频抽帧采样率(每秒抽几帧) |
TIMEOUT_MS | 否 | 300000 | 视觉模型请求超时(毫秒) |
* 默认 provider 的 Key/Model 必填;其他 provider 仅在切换使用时才需要。
/v1/responses 原生格式),兼容任何实现了该 API 的网关。换 provider 只需改环境变量,无需改代码。
analyze_video 需要 ffmpeg。安装时自动下载内置的 ffmpeg-static 二进制;若下载失败(如 --ignore-scripts、企业内网代理),会自动 fallback 到系统 ffmpeg:
# macOS
brew install ffmpeg
# Debian / Ubuntu
apt install ffmpeg
pnpm.onlyBuiltDependencies 已包含 ffmpeg-static。