Supports downloading and using models from Hugging Face Hub for various computer vision tasks like object detection.
Uses Imgur for image hosting and sharing in the demonstration examples, displaying the results of image processing operations.
Utilizes NumPy for image manipulation operations, particularly for the cropping functionality through OpenCV's NumPy slicing approach.
🪄 ImageSorcery MCP
基于 ComputerVision 的🪄 图像识别和编辑工具,适用于 AI 助手
❌ 不使用 ImageSorcery MCP
AI助手在处理图像时受到限制:
- ❌无法直接修改或分析图像
- ❌ 无法裁剪、调整大小或处理图像
- ❌ 一些 LLM 无法检测物体或从图像中提取文本
- ❌ 仅限于口头描述,没有视觉处理
✅ 使用 ImageSorcery MCP
🪄 ImageSorcery
为 AI 助手提供强大的图像处理能力:
- ✅ 精确裁剪、调整大小和旋转图像
- ✅ 在图像上绘制文本和形状
- ✅ 使用最先进的模型检测物体
- ✅ 使用 OCR 从图像中提取文本
- ✅ 获取详细的图像元数据
- ✅ 使用各种预先训练的模型进行物体检测、OCR 等
只需让你的人工智能帮助完成图像任务:
“将带有宠物的照片从
photos
夹复制到pets
文件夹”
“在 photo.jpg 中找到一只猫,并将图像的高度和宽度裁剪一半,使猫位于中心” 😉***提示:*使用文件的完整路径”。
“使用
foduucom/web-form-ui-field-detection
模型对这个form.jpg
上的表单字段进行计数,并使用已描述字段的列表填充form.md
” 😉***提示:*指定模型和置信度”。
😉***提示:*添加“使用 imagesorcery”以确保它将使用适当的工具。
您的工具将结合下面列出的多个工具来实现您的目标。
🛠️ 可用工具
工具 | 描述 | 示例提示 |
---|---|---|
crop | 使用 OpenCV 的 NumPy 切片方法裁剪图像 | “将我的图像‘input.png’从坐标(10,10)裁剪到(200,200)并将其保存为‘cropped.png’” |
resize | 使用 OpenCV 调整图像大小 | “将我的图像‘photo.jpg’调整为 800x600 像素并将其保存为‘resized_photo.jpg’” |
rotate | 使用 imutils.rotate_bound 函数旋转图像 | “将我的图像‘photo.jpg’旋转 45 度并将其保存为‘rotated_photo.jpg’” |
draw_texts | 使用 OpenCV 在图像上绘制文本 | “在位置 (50,50) 添加文字‘Hello World’,并在我的图片‘photo.jpg’的右下角添加‘Copyright 2023’” |
draw_rectangles | 使用 OpenCV 在图像上绘制矩形 | “在我的图片‘photo.jpg’上从 (50,50) 到 (150,100) 绘制一个红色矩形,并从 (200,150) 到 (300,250) 绘制一个填充的蓝色矩形” |
get_metainfo | 获取图像文件的元数据信息 | “获取有关我的图像‘photo.jpg’的元数据信息” |
detect | 使用 Ultralytics 的模型检测图像中的物体 | “检测我的图像‘photo.jpg’中的物体,置信度阈值为 0.4” |
find | 根据文本描述查找图像中的对象 | “在我的图片‘photo.jpg’中查找所有置信度阈值为 0.4 的狗” |
get_models | 列出模型目录中所有可用的模型 | “列出模型目录中所有可用的模型” |
ocr | 使用 EasyOCR 对图像进行光学字符识别 (OCR) | “使用 OCR 从我的图像‘document.jpg’中提取英语文本” |
😉***提示:*每个工具的详细信息和使用说明可以在工具的/src/imagesorcery_mcp/tools/README.md
中找到。
🚀 入门
要求
Python 3.10
或更高版本Claude.app
、Cline
或其他 MCP 客户端
安装
- **创建并激活虚拟环境(强烈推荐):**为了可靠地安装所有组件,尤其是
clip
包(通过安装后脚本安装),强烈建议使用 Python 的内置venv
模块而不是uv venv
。 - **将包安装到激活的虚拟环境中:**您可以使用
pip
或uv pip
。 - **运行安装后脚本:**此步骤至关重要。它会下载所需的模型,并尝试将 GitHub 上的
clip
Python 包安装到活动的虚拟环境中。
- 创建一个
models
目录(通常在虚拟环境的站点包目录内,或者如果全局安装则在用户特定位置)来存储预先训练的模型。 - 在那里生成初始
models/model_descriptions.json
文件。 - 将
detect
工具所需的默认 YOLO 模型(yoloe-11l-seg-pf.pt
、yoloe-11s-seg-pf.pt
、yoloe-11l-seg.pt
、yoloe-11s-seg.pt
)下载到此models
目录中。 - 尝试将 Ultralytics GitHub 仓库中的
clip
Python 包直接安装到活动的 Python 环境中。这是find
工具中文本提示功能所必需的。 - 将
find
工具所需的 CLIP 模型文件下载到models
目录中。
您可以随时运行此过程来恢复默认模型并尝试安装clip
。
- **使用
uv venv
创建虚拟环境:**根据测试,使用uv venv
创建的虚拟环境可能无法包含pip
,从而导致imagesorcery-mcp --post-install
脚本无法自动从 GitHub 安装clip
包(这可能会导致在clip
安装步骤中出现“没有名为 pip 的模块”错误)。如果您选择使用uv venv
:- 创建并激活您的
uv venv
。 - 安装
imagesorcery-mcp
:uv pip install imagesorcery-mcp
。 - 将
clip
包手动安装到活动的uv venv
中: - 运行
imagesorcery-mcp --post-install
。这将下载模型,但可能无法安装clip
Python 包。为了通过安装后脚本更顺畅地自动安装clip
,建议使用python -m venv
(如上文步骤 1 所述)来创建虚拟环境。
- 创建并激活您的
- **使用
uvx imagesorcery-mcp --post-install
:**直接使用uvx
运行安装后脚本(例如,uvx imagesorcery-mcp --post-install
)可能会导致clip
Python 包安装失败。这是因为uvx
创建的临时环境通常不提供脚本可用的pip
。此命令会下载模型,但不会安装clip
包。如果您打算使用uvx
运行主imagesorcery-mcp
服务器并需要clip
功能,则需要确保clip
包安装在uvx
可以找到的 Python 环境中,或者考虑将imagesorcery-mcp
安装到使用python -m venv
创建的持久环境中。
⚙️ 配置 MCP 客户端
将这些设置添加到您的 MCP 客户端。如果imagesorcery-mcp
安装后位于系统 PATH 中,您可以直接使用imagesorcery-mcp
作为命令。否则,您需要提供可执行文件的完整路径。
📦其他型号
某些工具要求在models
目录中提供特定模型:
下载模型时,脚本会自动更新models/model_descriptions.json
文件:
- 对于 Ultralytics 模型:描述在
src/imagesorcery_mcp/scripts/create_model_descriptions.py
中预定义,包括有关每个模型的用途、大小和特征的详细信息。 - 对于 Hugging Face 模型:描述会自动从 Hugging Face Hub 上的模型卡中提取。脚本会尝试使用模型索引或描述第一行中的模型名称。
下载模型后,建议检查models/model_descriptions.json
中的描述,并根据需要进行调整,以提供有关模型功能和用例的更准确或详细的信息。
🤝 贡献
目录结构
该存储库的组织结构如下:
开发设置
- 克隆存储库:
- (推荐)创建并激活虚拟环境:
- 以可编辑模式安装软件包以及开发依赖项:
这将安装imagesorcery-mcp
以及来自[project.dependencies]
和[project.optional-dependencies].dev
所有依赖项(包括build
和twine
)。
规则
这些规则适用于所有贡献者:人类和人工智能。
- 阅读项目中的所有
README.md
文件。了解项目结构和目的。了解贡献指南。仔细思考它与你的任务有何关联,以及如何进行相应的修改。 - 阅读
pyproject.toml
。重点关注以下几个部分:[tool.ruff]
、[tool.ruff.lint]
、[project.optional-dependencies]
和[project]dependencies
。严格遵循pyproject.toml
中定义的代码风格。遵循pyproject.toml
依赖项中定义的技术栈,如果没有充分的理由,请勿添加任何新的依赖项。 - 在新文件和现有文件中编写代码。如果需要新的依赖项,请更新
pyproject.toml
并通过pip install -e .
或pip install -e ".[dev]"
安装它们。请勿直接通过pip install
安装。请查看现有源代码以获取示例(例如src/imagesorcery_mcp/server.py
、src/imagesorcery_mcp/tools/crop.py
)。请遵循现有代码的代码风格、命名约定、输入输出数据格式、代码结构、架构等。 - 使用您的更改更新相关的
README.md
文件。请遵循现有README.md
文件的格式和结构。 - 为你的代码编写测试。查看现有测试用例(例如
tests/test_server.py
、tests/tools/test_crop.py
)。遵循现有测试用例的代码风格、命名规范、输入输出数据格式、代码结构、架构等。 - 运行测试和 linter 以确保一切正常:
如果失败,请修复代码并进行测试。所有新代码必须符合 Linter 规则并通过所有测试。
编码提示
- 在适当的情况下使用类型提示
- 使用 pydantic 进行数据验证和序列化
📝 有疑问吗?
如果您对此项目有任何疑问、问题或建议,请随时联系:
您还可以在存储库中打开问题以报告错误或请求功能。
📜 许可证
本项目遵循 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。
Related MCP Servers
- Rust
- GoMIT License
- TypeScript
- -securityAlicense-qualitymcp-victoriametricsLast updated -25GoApache 2.0