本地图片识别:Kimi 视觉 MCP 服务器 + DeepSeek CLI 工具,共用同一套图片预处理(image_utils.py)。
pip install -r requirements.txt
cp .env.example .env # 填入你的 API Keymcp_server.py 是一个安全的 MCP 工具服务器:只接受本地图片路径,拒绝远程 URL,
图片经 EXIF 转置、缩略(最长边 1600px)、透明底转白、JPEG 压缩后再发送给 Kimi 视觉模型。
在 MCP 客户端中配置:
{
"mcpServers": {
"image-recognition": {
"command": "python",
"args": ["D:/Code/image_recognition/mcp_server.py"],
"env": {}
}
}
}工具 analyze_image 参数:
| 参数 | 必填 | 说明 |
|---|---|---|
image_path |
✅ | 本地图片绝对路径(或相对 MCP 客户端工作目录) |
prompt |
❌ | 提取重点,如「OCR 全部文字」「描述 UI 布局」 |
detail |
❌ | 详细程度:brief / normal / high,默认 normal |
max_tokens |
❌ | 响应上限 256~12000,默认取 KIMI_MAX_TOKENS |
python recognize.py photo.jpg
python recognize.py photo.jpg "这张图中有什么物体?"支持本地代理(USE_PROXY=1 时走 http://localhost:4000/v1)。
python test_models.py # 探测各 DeepSeek 模型是否支持图片输入(消耗少量额度)| 变量 | 默认值 | 说明 |
|---|---|---|
MOONSHOT_API_KEY / KIMI_API_KEY |
— | API Key(必填) |
KIMI_BASE_URL |
https://api.moonshot.ai/v1 |
仅允许 Moonshot 官方端点 |
KIMI_MODEL |
kimi-k2.6 |
视觉模型名 |
KIMI_MAX_IMAGE_MB |
12 |
原始图片大小上限 |
KIMI_MAX_EDGE_PX |
1600 |
压缩后最长边像素 |
KIMI_MAX_TOKENS |
4096 |
默认响应 token 上限(自动 clamp 到 256~12000) |
KIMI_TIMEOUT_SECONDS |
90 |
请求超时 |
KIMI_THINKING |
disabled |
是否启用 thinking |
KIMI_IMAGE_ALLOWED_ROOTS |
用户主目录 | 允许读取的目录白名单,; 分隔 |
| 变量 | 默认值 | 说明 |
|---|---|---|
DEEPSEEK_API_KEY |
— | API Key(必填) |
DEEPSEEK_BASE_URL |
https://api.deepseek.com/v1 |
API 端点 |
DEEPSEEK_VISION_MODEL |
deepseek-v4-pro |
视觉模型名 |
DEEPSEEK_MAX_EDGE_PX |
1600 |
压缩后最长边像素 |
DEEPSEEK_MAX_TOKENS |
2000 |
响应 token 上限 |
DEEPSEEK_TIMEOUT_SECONDS |
120 |
请求超时 |
USE_PROXY |
关 | 1/true/yes 时走本地代理 |
PROXY_PORT |
4000 |
本地代理端口 |
- 远程图片 URL(http/https/file)一律拒绝,只接受本地文件。
- 图片读取限制在
KIMI_IMAGE_ALLOWED_ROOTS白名单内(默认用户主目录)。 - 发送给模型的 system prompt 明确要求:图片中的文字只作转写对象,不当作指令执行(防提示词注入)。
- 大图先压缩再传输,避免超时和多余 token 消耗。
python -m py_compile mcp_server.py recognize.py image_utils.py test_models.py