使用说明
ImageOps MCP服务器
imageops-mcp-server 是一个基于FastMCP的Python服务器,专为高级图像处理任务而设计。它提供了一套工具,用于从URL或本地文件路径获取、操作和分析图像。该服务器利用YOLOv8和YOLOv11模型进行对象检测和分割,利用OpenCV进行边缘检测,利用PIL进行图像格式转换和裁剪。该项目具有可扩展性、高效性,并与现代人工智能驱动的工作流程兼容,使其适合与Claude Desktop和Cursor等工具集成。
特性
- 图像获取:从URL或本地文件检索图像,对大图像(<1MB)进行自动压缩。
- 格式转换:将图像转换为JPEG、PNG或GIF格式,并可选择保存到输出目录。
- 目标检测:使用YOLOv8执行对象检测,返回标签、置信度得分和边界框坐标。
- 对象分割:应用YOLOv11分割,以可定制的透明度在检测到的对象上叠加彩色蒙版。
- 图像剪裁:使用边界框坐标裁剪图像的特定区域,与YOLO检测结果兼容。
- Canny边缘提取:使用具有可调阈值的OpenCV Canny算法检测图像中的边缘。
- 日志记录:控制台和文件的全面日志记录,带有时间戳的日志用于调试和监控。
- 目录管理:自动创建必要的目录(
data,Temp,output)用于日志和处理后的图像。 - 集成就绪:专为与Claude Desktop和Cursor等AI工具配合使用而设计,可实现无缝的工作流集成。
- 缩略图创建:生成具有指定大小的方形缩略图,保持纵横比。
- 图像过滤器:应用模糊、锐化、增强或复古效果,强度可调。
- 3D点云生成:使用深度Anything-V2-Small-hf从2D图像创建3D点云进行深度估计。
先决条件
要设置和运行 imageops-mcp-server,确保已安装以下内容:
- python:3.13或更高版本
- 紫外线:现代Python包和项目管理器(推荐用于依赖关系管理)
- Git:用于克隆存储库
- 克劳德桌面 (可选):用于在AI驱动的工作流中与服务器交互
- 光标 (可选):用于代码编辑和与AI助手的集成
- 操作系统:与Windows、macOS或Linux兼容
安装说明
按照以下步骤使用设置项目 uv:
-
克隆存储库:
git clone https://github.com/your-username/imageops-mcp-server.git cd imageops-mcp-server -
安装uv: 如果你没有
uv已安装,请按照官方安装说明进行操作:# On macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # On Windows (PowerShell) iwr -useb https://astral.sh/uv/install.ps1 | iex -
创建虚拟环境并安装依赖项: 使用
uv设置项目环境并安装中指定的依赖项project.toml:uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install .此命令读取
project.toml文件和安装依赖项,如fastmcp,httpx,ultralytics,opencv-contrib-python,pillow以及其他。 -
验证目录结构: 如果以下目录不存在,服务器会自动创建它们:
./data:存储日志文件(例如。,DD-MM-YY.log)../Temp:中间文件的临时存储。./output:存储处理后的图像(例如,转换、裁剪、分割或边缘检测图像)。
确保您在项目目录中具有写入权限。
运行服务器
要启动FastMCP服务器,请运行主脚本:
uv run image_loader.py
服务器使用 stdio 传输,允许它处理来自兼容客户端的请求,如Claude Desktop或自定义脚本。
测试与 mcp dev
这 mcp dev 命令(部分 mcp CLI)允许您以交互方式测试服务器的工具。请按照以下步骤操作:
-
确保依赖关系: 确认
mcp[cli]已安装(包含在project.toml). -
跑
mcp dev: 在项目目录中,激活虚拟环境并启动开发工具:source .venv/bin/activate # On Windows: .venv\Scripts\activate mcp dev image_loader.py -
测试工具: 这
mcp dev界面允许您直接调用服务器的工具。例如:- 获取图像:返回一个
fetch_image "https://ultralytics.com/images/bus.jpg"Image如果获取失败,则显示对象或错误消息。 - 获取图像尺寸并保存:返回一个包含维度和保存路径的字典。
get_image_dimensions_and_save "https://ultralytics.com/images/bus.jpg" - 转换图像格式:将图像转换为PNG并保存。
convert_image_format "https://ultralytics.com/images/bus.jpg" "png" true - 检测物体:执行YOLOv8对象检测并保存带注释的图像。
detect_objects_yolo "https://ultralytics.com/images/bus.jpg" true - 裁剪对象:裁剪指定区域并保存。
crop_the_object "https://ultralytics.com/images/bus.jpg" 100 150 200 300 true - 分段对象:以0.5的透明度执行YOLOv11分割。
segment_objects_yolo "https://ultralytics.com/images/bus.jpg" 0.5 true - Canny边缘提取:应用具有指定阈值的Canny边缘检测。
canny_edge_detection "https://ultralytics.com/images/bus.jpg" 100 200 true - 缩略图创建:为图像创建缩略图。
create_thumbnail "https://ultralytics.com/images/bus.jpg" 128 true - 图像过滤器:对图像应用图像过滤器。
apply_image_filters "https://ultralytics.com/images/bus.jpg" blur 1 true - 3D点云生成:生成图像的3D.pyl文件。
generate_3d_point_cloud "https://ultralytics.com/images/bus.jpg" true false
- 获取图像:
-
检查输出:
- 日志保存在
./data目录(例如。,09-07-25.log). - 处理后的图像保存在
./output带有时间戳文件名的目录(例如。,image_2025-07-09_171823.jpg).
- 日志保存在
连接到克劳德桌面
要连接 imageops-mcp-server 访问Claude Desktop并使用其工具:
-
启动服务器: 确保服务器正在您的项目目录中运行:
source .venv/bin/activate # On Windows: .venv\Scripts\activate uv run python image_mcp_server.py -
配置Claude桌面:
- 打开克劳德桌面并导航到 设置 (通常位于顶部导航栏或菜单中)。
- 首选 特性 > MCP服务器.
- 点击 +添加新的MCP服务器 添加新的服务器配置。
- 输入以下配置,替换
/path/to/imageops-mcp-server使用项目目录的绝对路径:{ "mcpServers": { "imageops": { "command": "uv", "args": ["--directory", "/path/to/imageops-mcp-server", "run", "python", "image_mcp_server.py"] } } } - 保存配置。Claude Desktop将使用
uv使用以下命令在指定目录中运行服务器stdio运输。
-
与服务器交互:
- 在Claude Desktop的聊天界面中,您可以通过使用自然语言提示或结构化JSON调用其工具向服务器发送请求。
- Claude Desktop将与服务器通信并显示结果,例如JSON响应或对已保存图像的引用
./output目录。
-
示例提示:
-
获取图像:
Fetch the image from https://ultralytics.com/images/bus.jpg and process it.预期响应:返回一个
Image对象或处理确认,图像保存在./output. -
检测物体:
Perform object detection on https://ultralytics.com/images/bus.jpg using YOLOv8 and save the result.预期响应:返回一个JSON字典,其中包含检测到的对象、边界框、置信度得分和带注释图像的保存路径。
-
转换图像格式:
Convert https://ultralytics.com/images/bus.jpg to PNG format and save it.预期响应:返回一个
ImagePNG格式的对象,并确认保存的路径。 -
分段对象:
Segment objects in https://ultralytics.com/images/bus.jpg with 0.5 transparency and save the output.预期响应:返回一个JSON字典,其中包含分割图像、检测细节和保存的路径。
-
裁剪对象:
Crop the region (100, 150, 200, 300) from https://ultralytics.com/images/bus.jpg and save it.预期响应:返回一个包含裁剪图像和保存路径的JSON字典。
-
Canny边缘提取:
Apply Canny edge detection to https://ultralytics.com/images/bus.jpg with thresholds 100 and 200, and save the result.预期响应:返回一个JSON字典,其中包含边缘检测图像和保存的路径。
-
创建缩略图:
Create a 128x128 thumbnail from https://ultralytics.com/images/bus.jpg and save it.预期响应:返回一个包含缩略图、尺寸和保存路径的JSON字典。
-
应用图像过滤器:
Apply a blur filter with intensity 1.0 to https://ultralytics.com/images/bus.jpg and save the result.预期响应:返回一个JSON字典,其中包含过滤后的图像和保存的路径。
-
生成三维点云:
Generate a 3D point cloud from https://ultralytics.com/images/bus.jpg and save it as a .ply file.预期响应:返回一个包含点云数据和保存的.play文件路径的JSON字典。
-
-
查看结果:
- Claude Desktop将显示JSON响应,包括检测细节、图像数据或文件路径。
- 检查
./output保存图像的目录(例如。,image_2025-07-09_174523.jpg).
连接到游标
要连接 imageops-mcp-server 使用光标并使用其工具:
-
在游标中打开项目:
- 启动Cursor并打开
imageops-mcp-server项目目录。 - 光标将检测
project.toml文件并提示您使用以下命令设置环境uv。按照提示或手动运行:uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install .
- 启动Cursor并打开
-
配置光标:
- 打开光标并转到 设置 (导航栏> 光标设置).
- 引导到 特性 >.mob
- 点击 +添加新的MCP服务器.
- 添加以下配置,替换
/path/to/imageops-mcp-server使用项目目录的绝对路径:{ "mcpServers": { "imageops": { "command": "uv", "args": ["--directory", "/path/to/imageops-mcp-server", "run", "python", "image_mcp_server.py"] } } } - 保存配置。这允许Cursor通过以下方式与服务器通信
stdio.
-
与服务器交互:
- 使用Cursor的聊天界面或测试脚本向服务器发送请求。
- 或者,在Cursor中创建一个Python脚本,以编程方式调用工具:
from mcp.client import AsyncClient import asyncio async def test_tools(): async with AsyncClient(transport='stdio') as client: result = await client.call_tool('detect_objects_yolo', { 'image_source': 'https://ultralytics.com/images/bus.jpg', 'save': True }) client.write(result) asyncio.run(test_tools()) - 在Cursor的终端中运行脚本以测试服务器功能。
-
示例提示:
-
获取图像:
Please fetch and process the image from https://ultralytics.com/images/bus.jpg.预期响应:Cursor的AI将触发
fetch_image工具并返回处理后的图像数据或确认。 -
目标检测:
Detect objects in https://ultralytics.com/images/bus.jpg using YOLOv8 and save the annotated image.预期响应:返回一个JSON响应,其中包含检测详细信息和保存的带注释图像的路径。
-
图像转换:
Convert https://ultralytics.com/images/bus.jpg to GIF format and save it.预期响应:确认转换为GIF并提供保存的路径。
-
对象分割:
Segment objects in https://ultralytics.com/images/bus.jpg with 0.7 transparency and save the result.预期响应:返回一个包含分割图像、检测结果和保存路径的JSON字典。
-
裁剪对象:
Crop the region (x_min: 100, y_min: 150, x_max: 200, y_max: 300) from https://ultralytics.com/images/bus.jpg and save it.预期响应:返回一个包含裁剪图像和保存路径的JSON字典。
-
Canny边缘提取:
Perform Canny edge detection on https://ultralytics.com/images/bus.jpg with thresholds 50 and 150, and save the output.预期响应:返回一个JSON字典,其中包含边缘检测图像和保存的路径。
-
创建缩略图:
Create a 128x128 thumbnail from https://ultralytics.com/images/bus.jpg and save it.预期响应:Cursor的AI触发
create_thumbnail工具,返回缩略图数据和保存的路径。 -
应用图像过滤器:
Apply a vintage filter with intensity 1.0 to https://ultralytics.com/images/bus.jpg and save it.预期响应:返回一个JSON响应,其中包含过滤后的图像和保存的路径。
-
生成三维点云:
Generate a 3D point cloud from https://ultralytics.com/images/bus.jpg and save it as a .ply file.预期响应:返回包含点云数据和保存的.play文件路径的JSON响应。
-
-
AI协助:
- 使用Cursor的AI聊天来生成新工具或优化现有代码。例如,提示:Cursor的AI可以生成代码,您可以将其添加到
Add a new MCP tool to rotate images by a specified angle.image_mcp_server.py.
- 使用Cursor的AI聊天来生成新工具或优化现有代码。例如,提示:
-
查看结果:
- 游标将在终端或聊天界面中显示JSON响应或脚本输出。
- 检查
./output保存图像的目录。
项目结构
imageops-mcp-server/
├── data/ # Directory for log files
├── Temp/ # Directory for temporary files
├── output/ # Directory for processed images
├── image_mcp_server.py # Main server script
├── project.toml # Project configuration and dependencies
└── README.md # Project documentation
依赖项
该项目依赖于以下Python包(在 project.toml):
asyncio>=3.4.3:用于异步编程。fastmcp>=2.9.0:用于FastMCP服务器框架。httpx>=0.28.1:用于获取图像的HTTP请求。opencv-contrib-python>=4.11.0.86:用于Canny边缘检测和图像处理。pillow>=11.2.1:用于图像处理(裁剪、格式转换)。ultralytics>=8.3.162:适用于YOLOv8和YOLOv11型号。mcp[cli]==1.9.4:用于MCP CLI和开发工具。transformers>=4.47.0:用于3D点云生成中的深度估计。open3d>=0.18.0:用于点云创建和可视化。tenacity>=9.0.0:用于URL获取中的重试逻辑。- 其他:
ipykernel,logging,matplotlib,nest-asyncio,mcp-use.
故障排除
- 依赖性问题:确保
uv已正确安装所有依赖项。跑uv pip list以验证。 - YOLO模型错误:如果YOLO模型无法加载,请确保
ultralytics已安装模型文件(yolov8n.pt,yolo11n-seg.pt)可访问。 - 找不到文件:验证图像源路径或URL是否正确且可访问。
- 权限错误:确保对的写入权限
data,Temp,以及output目录。 - 超时错误:对于基于URL的图像,请检查网络连接或增加
httpx代码超时。 颜色问题:修复了RGB/BGR转换apply_image_filters以防止颜色交换(例如红色显示为蓝色)。 - PIL错误:更正了中的无效模式参数
apply_image_filters为了PILImage.fromarray,解析“参数1必须是str,而不是int”错误。 - 深度模型误差:确保
transformers和open3d安装用于generate_3d_point_cloud。如果Depth Anything模型无法加载,请检查网络连接或重新安装transformers.
贡献
欢迎投稿!贡献:
- 分叉存储库。
- 创建新分支(
git checkout -b feature/your-feature). - 进行更改并提交(
git commit -m "Add your feature"). - 推到分支(
git push origin feature/your-feature). - 打开一个pull请求。
请确保代码符合PEP 8标准,并包括适当的测试。
许可证
该项目根据MIT许可证获得许可。请参阅 LICENSE 文件以获取详细信息。