UNPKG

@bestmfy/vision-understanding-mcp

Version:

MCP Server for Image/Video Understanding using Doubao Vision Model

376 lines (289 loc) 8.98 kB
# Vision Understanding MCP Server 这是一个基于Model Context Protocol (MCP)的图像/视频理解服务器,使用豆包视觉模型进行内容分析。 ## 功能特性 - 🖼️ **图像分析**: 支持多种图像格式的内容分析 - 📁 **本地文件支持**: 支持本地图片文件上传和分析 - 🌐 **URL支持**: 支持在线图片URL分析 - 🎬 **视频分析**: 支持视频内容的智能理解 - 🎯 **预设提示**: 内置多种分析场景的提示模板 - 🔧 **自定义提示**: 支持用户自定义分析提示 - 🔒 **安全设计**: API密钥由客户端提供,不在服务器存储 - 📚 **资源管理**: 提供预定义的分析提示资源 - 🚀 **简化部署**: 无需复杂依赖,易于部署和使用 - 🔄 **自动编码**: 自动将本地图片转换为base64格式 ## 主要特性 ### 1. 标准MCP协议实现 - ✅ 完整的JSON-RPC 2.0协议支持 - ✅ 标准的工具注册和参数schema - ✅ 环境变量配置,安全可靠 - ✅ 完善的错误处理机制 ### 2. 灵活的图像输入 - 🖼️ 支持本地图片文件路径 - 🌐 支持网络图片URL - 🔄 自动Base64编码处理 - 📁 多种图片格式支持 ### 3. 智能分析功能 - 🤖 基于豆包视觉模型 - 📝 自定义分析提示 - 🎯 多种预设分析模板 - 📊 详细的结构化结果 ### 4. 易于集成 - 🔧 标准MCP服务器实现 - 🔌 即插即用配置 - 📖 完整的使用文档 - 🧪 丰富的测试示例 ## 安装和配置 ### 方式一:使用 npm 包(推荐) ```bash # 直接运行(推荐) npx @bestmfy/vision-understanding-mcp # 或全局安装 npm install -g @bestmfy/vision-understanding-mcp vision-understanding-mcp ``` ### 方式二:从源码安装 ```bash # 1. 克隆项目 git clone <repository-url> cd mcp_demo # 2. 安装依赖 pip3 install -r requirements.txt ``` **注意**: 此MCP服务器兼容Python 3.9+版本,使用简化的MCP协议实现,无需安装复杂的MCP库。 ## 使用方法 ### 1. 启动MCP服务器 **方法1: 使用启动脚本(推荐)** ```bash ./start_server.sh ``` **方法2: 直接运行** ```bash python3 vision_mcp_server.py stdio ``` ### 2. 在MCP客户端中配置 #### 方式一:使用 npm 包(推荐) **Trae AI 配置** ```json { "mcpServers": { "vision-understanding": { "command": "npx", "args": ["@bestmfy/vision-understanding-mcp"], "env": { "DOUBAO_API_KEY": "your-doubao-api-key" } } } } ``` **Claude Desktop 配置** ```json { "mcpServers": { "vision-understanding": { "command": "npx", "args": ["@bestmfy/vision-understanding-mcp"], "env": { "DOUBAO_API_KEY": "your-doubao-api-key" } } } } ``` #### 方式二:使用本地源码 **Trae AI 配置** 快速配置: ```bash cp trae_mcp_config.json "/Users/bytedance/Library/Application Support/Trae/User/mcp.json" ``` **Claude Desktop 配置** 在Claude Desktop的配置文件中添加: ```json { "mcpServers": { "vision-understanding": { "command": "python", "args": ["/path/to/vision_mcp_server.py", "stdio"], "env": {} } } } ``` ### 🚨 遇到问题? 如果在使用过程中遇到以下问题: - ❌ "API密钥未设置" 错误 - ❌ "Bearer 空值" 错误 - ❌ MCP服务无法启动 - ❌ 图像/视频分析失败 **快速解决方案**: 查看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md) 获取详细的故障排除指南 详细配置说明请参考:[CONFIGURATION.md](CONFIGURATION.md) ### 3. 使用MCP Inspector测试 ```bash uv run mcp dev vision_mcp_server.py ``` ## 可用工具 ### analyze_image 分析图像内容(支持URL和本地文件) **参数:** - `image_input` (必需): 图像URL或本地文件路径 - `api_key` (必需): 豆包API密钥 - `custom_prompt` (可选): 自定义分析提示 - `model` (可选): 模型名称,默认为 "doubao-seed-1-6-flash-250615" **支持格式**: JPG, JPEG, PNG, GIF, BMP, WEBP **示例:** ```python result = await analyze_image( image_url="https://example.com/image.jpg", api_key="your_api_key_here", custom_prompt="请描述这张图片的主要内容" ) ``` ### analyze_video 分析视频内容 **参数:** - `video_url` (必需): 视频URL - `api_key` (必需): 豆包API密钥 - `custom_prompt` (可选): 自定义分析提示 - `model` (可选): 模型名称 ## 可用资源 ### vision://prompts/{prompt_type} 获取预定义的分析提示 **可用类型:** - `general`: 通用描述 - `detailed`: 详细分析 - `artistic`: 艺术角度分析 - `technical`: 技术角度分析 - `objects`: 对象识别 - `scene`: 场景描述 - `emotion`: 情感分析 ## 可用提示模板 ### create_vision_analysis_prompt 创建自定义的视觉分析提示 **参数:** - `analysis_type`: 分析类型 (general, detailed, artistic, technical) - `focus_areas`: 关注领域 (objects, scene, emotion, composition, all) ## API密钥说明 **重要**: API密钥由MCP客户端提供,不会硬编码在服务器中。使用时需要: 1. 在调用工具时传入有效的豆包API密钥 2. 确保API密钥有访问视觉模型的权限 3. 妥善保管API密钥,避免泄露 ## 返回结果格式 所有分析工具返回 `VisionAnalysisResult` 结构: ```python { "description": "分析结果描述", "model_used": "使用的模型名称", "success": true, "error_message": null # 仅在失败时包含错误信息 } ``` ## 错误处理 - 网络请求超时: 图像分析30秒,视频分析60秒 - API错误: 返回详细的错误状态码和消息 - 参数验证: 使用Pydantic进行输入验证 ## 注意事项 1. 确保图像/视频URL可公开访问 2. 支持的图像格式: JPEG, PNG, GIF等常见格式 3. 视频分析功能取决于豆包API的视频支持能力 4. 请遵守豆包API的使用条款和限制 ## 技术实现 - 基于MCP (Model Context Protocol) 标准 - 使用简化的MCP协议实现,兼容Python 3.9+ - 异步HTTP客户端处理API调用 - JSON-RPC 2.0协议通信 ## 测试 ### 基本功能测试 ```bash python3 test_vision_server.py ``` ### 示例使用(需要API密钥) ```bash # 设置API密钥 export DOUBAO_API_KEY='your_api_key_here' # 创建测试图片 python3 create_test_image.py # 运行本地图片分析演示 python3 demo_local_image.py # 运行完整示例 python3 example_usage.py # 或仅测试prompts和resources python3 example_usage.py test ``` ## 项目结构 ``` mcp_demo/ ├── vision_mcp_server.py # 主服务器文件 ├── vision_mcp_server_debug.py # Debug版本MCP服务器 ├── requirements.txt # 依赖列表 ├── start_server.sh # 启动脚本 ├── test_vision_server.py # 测试脚本 ├── example_usage.py # 使用示例 ├── demo_local_image.py # 本地图片分析演示 ├── quick_test.py # 快速测试脚本(推荐) ├── debug_env.py # 环境诊断脚本 ├── create_test_image.py # 创建测试图片 ├── test_image.jpg # 测试图片文件 ├── claude_desktop_config.json # Claude Desktop配置示例 ├── trae_mcp_config.json # Trae AI完整配置文件 ├── CONFIGURATION.md # Trae AI配置指南 ├── IMPROVEMENTS.md # 重要改进说明文档 ├── TROUBLESHOOTING.md # 故障排除指南 └── README.md # 说明文档 ``` ## 本地图片分析 ### 支持的图片格式 - JPG/JPEG - PNG - GIF - BMP - WEBP ### 使用方法 1. **直接使用文件路径**: ```python result = await client.call_tool("analyze_image", { "image_input": "/path/to/your/image.jpg", "api_key": "your_api_key" }) ``` 2. **相对路径**: ```python result = await client.call_tool("analyze_image", { "image_input": "./test_image.jpg", "api_key": "your_api_key" }) ``` ### 快速演示 #### 方法一:快速测试(推荐) ```bash # 1. 创建测试图片 python3 create_test_image.py # 2. 设置API密钥(必需) export DOUBAO_API_KEY="your_doubao_api_key" # 3. 运行快速测试 python3 quick_test.py ``` **输出示例:** ``` 🚀 快速测试 Vision MCP 服务 ✅ 服务器启动成功 🔍 分析图片: test_image.jpg ✅ 分析成功! 📝 描述: 图片包含红色圆形、绿色长方形、黄色三角形... 🤖 模型: doubao-seed-1-6-flash-250615 ``` #### 方法二:完整演示 ```bash # 1. 创建测试图片 python3 create_test_image.py # 2. 设置API密钥(必需) export DOUBAO_API_KEY="your_doubao_api_key" # 3. 运行完整演示 python3 demo_local_image.py ``` **功能特点:** - 🔄 自动从环境变量读取API密钥 - 📝 支持自定义分析提示 - 🎯 基本分析和定制分析对比 - 📊 详细的结果展示 ## 许可证 MIT License