一个强大的 YOLO(You Only Look Once)计算机视觉服务,通过模型上下文协议(MCP)与 Claude AI 集成。此服务使 Claude 能够使用最先进的 YOLO 模型执行对象检测、分割、分类和实时摄像头分析。
创建项目目录并导航到该目录:
mkdir yolo-mcp-service
cd yolo-mcp-service
下载项目文件或从仓库克隆:
# 如果有文件,请将其复制到此目录
# 如果使用 git:
git clone https://github.com/GongRzhe/YOLO-MCP-Server.git .
创建虚拟环境:
# 在 Windows 上
python -m venv .venv
# 在 macOS/Linux 上
python3 -m venv .venv
激活虚拟环境:
# 在 Windows 上
.venv\Scripts\activate
# 在 macOS/Linux 上
source .venv/bin/activate
运行安装脚本:
python setup.py
安装脚本会:
注意安装脚本的输出,类似于以下内容:
MCP 配置已写入:/path/to/mcp-config.json
Cursor 的 MCP 配置:
/path/to/.venv/bin/python /path/to/server.py
Windsurf/Claude Desktop 的 MCP 配置:
{
"mcpServers": {
"yolo-service": {
"command": "/path/to/.venv/bin/python",
"args": [
"/path/to/server.py"
],
"env": {
"PYTHONPATH": "/path/to"
}
}
}
}
若要与 Claude Desktop 一起使用,请将此配置合并到:/path/to/claude_desktop_config.json
在使用服务之前,需要下载 YOLO 模型。服务会在以下目录中查找模型:
models 子目录server.py 中 CONFIG["model_dirs"] 变量配置的任何其他目录创建一个模型目录并下载一些常见模型:
# 创建模型目录
mkdir models
# 下载 YOLOv8n 用于基本对象检测
curl -L https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt -o models/yolov8n.pt
# 下载 YOLOv8n-seg 用于分割
curl -L https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-seg.pt -o models/yolov8n-seg.pt
# 下载 YOLOv8n-cls 用于分类
curl -L https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-cls.pt -o models/yolov8n-cls.pt
# 下载 YOLOv8n-pose 用于姿态估计
curl -L https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-pose.pt -o models/yolov8n-pose.pt
对于 Windows PowerShell 用户:
# 创建模型目录
mkdir models
# 使用 Invoke-WebRequest 下载模型
Invoke-WebRequest -Uri "https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt" -OutFile "models/yolov8n.pt"
Invoke-WebRequest -Uri "https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-seg.pt" -OutFile "models/yolov8n-seg.pt"
Invoke-WebRequest -Uri "https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-cls.pt" -OutFile "models/yolov8n-cls.pt"
Invoke-WebRequest -Uri "https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n-pose.pt" -OutFile "models/yolov8n-pose.pt"
要与 Claude 一起使用此服务:
始终首先检查系统中有哪些模型可用:
我想使用 YOLO 工具。你能先检查一下我的系统中有哪些模型可用吗?
<function_calls>
<invoke name="list_available_models">
</invoke>
</function_calls>
对于分析计算机上的图像文件:
你能分析这个图像文件中的对象吗?
<function_calls>
<invoke name="analyze_image_from_path">
<parameter name="image_path">/path/to/your/image.jpg</parameter>
<parameter name="confidence">0.3</parameter>
</invoke>
</function_calls>
你也可以指定不同的模型:
你能用不同的模型来分析这个图像吗?
<function_calls>
<invoke name="analyze_image_from_path">
<parameter name="image_path">/path/to/your/image.jpg</parameter>
<parameter name="model_name">yolov8n.pt</parameter>
<parameter name="confidence">0.4</parameter>
</invoke>
</function_calls>
为了进行更详细的分析,结合对象检测、分类等:
你能对这张图像进行综合分析吗?
<function_calls>
<invoke name="comprehensive_image_analysis">
<parameter name="image_path">/path/to/your/image.jpg</parameter>
<parameter name="confidence">0.3</parameter>
</invoke>
</function_calls>
识别对象边界并创建分割掩模:
你能对这张照片进行图像分割吗?
<function_calls>
<invoke name="segment_objects">
<parameter name="image_data">/path/to/your/image.jpg</parameter>
<parameter name="is_path">true</parameter>
<parameter name="model_name">yolov8n-seg.pt</parameter>
</invoke>
</function_calls>
对整个图像内容进行分类:
这张图像显示了什么?你能对其进行分类吗?
<function_calls>
<invoke name="classify_image">
<parameter name="image_data">/path/to/your/image.jpg</parameter>
<parameter name="is_path">true</parameter>
<parameter name="model_name">yolov8n-cls.pt</parameter>
<parameter name="top_k">5</parameter>
</invoke>
</function_calls>
开始实时对象检测:
你能打开我的摄像头并实时检测对象吗?
<function_calls>
<invoke name="start_camera_detection">
<parameter name="model_name">yolov8n.pt</parameter>
<parameter name="confidence">0.3</parameter>
</invoke>
</function_calls>
获取最新的摄像头检测结果:
我现在通过摄像头看到了什么?
<function_calls>
<invoke name="get_camera_detections">
</invoke>
</function_calls>
完成时关闭摄像头:
请关闭摄像头。
<function_calls>
<invoke name="stop_camera_detection">
</invoke>
</function_calls>
我想在我的数据集上训练一个自定义的对象检测模型。
<function_calls>
<invoke name="train_model">
<parameter name="dataset_path">/path/to/your/dataset</parameter>
<parameter name="model_name">yolov8n.pt</parameter>
<parameter name="epochs">50</parameter>
</invoke>
</function_calls>
你能验证我的模型在测试数据集上的性能吗?
<function_calls>
<invoke name="validate_model">
<parameter name="model_path">/path/to/your/trained/model.pt</parameter>
<parameter name="data_path">/path/to/validation/dataset</parameter>
</invoke>
</function_calls>
我需要将我的 YOLO 模型导出为 ONNX 格式。
<function_calls>
<invoke name="export_model">
<parameter name="model_path">/path/to/your/model.pt</parameter>
<parameter name="format">onnx</parameter>
</invoke>
</function_calls>
检查 YOLO 服务是否正常运行:
YOLO 服务是否正常运行?
<function_calls>
<invoke name="test_connection">
</invoke>
</function_calls>
如果摄像头无法工作,请尝试不同的摄像头 ID:
<function_calls>
<invoke name="start_camera_detection">
<parameter name="camera_id">1</parameter> <!-- 尝试 0, 1 或 2 -->
</invoke>
</function_calls>
如果找不到模型,请确保已将其下载到配置的目录之一:
<function_calls>
<invoke name="get_model_directories">
</invoke>
</function_calls>
对于资源有限的情况,使用较小的模型(例如,使用 yolov8n.pt 而不是 yolov8x.pt)以获得更好的性能。