返回市场
YOLO-MCP-服务器

YOLO-MCP-服务器

作者:GongRzhe26 星标更新:2025-03-11

项目介绍

YOLO MCP 服务

一个强大的 YOLO(You Only Look Once)计算机视觉服务,通过模型上下文协议(MCP)与 Claude AI 集成。此服务使 Claude 能够使用最先进的 YOLO 模型执行对象检测、分割、分类和实时摄像头分析。

功能

  • 对象检测、分割、分类和姿态估计
  • 实时摄像头集成以进行实时对象检测
  • 支持模型训练、验证和导出
  • 结合多个模型的综合图像分析
  • 支持文件路径和 base64 编码的图像
  • 无缝集成到 Claude AI

安装指南

先决条件

  • Python 3.10 或更高版本
  • Git(可选,用于克隆仓库)

环境设置

  1. 创建项目目录并导航到该目录:

    mkdir yolo-mcp-service
    cd yolo-mcp-service
    
  2. 下载项目文件或从仓库克隆:

    # 如果有文件,请将其复制到此目录
    # 如果使用 git:
    git clone https://github.com/GongRzhe/YOLO-MCP-Server.git .
    
  3. 创建虚拟环境:

    # 在 Windows 上
    python -m venv .venv
    
    # 在 macOS/Linux 上
    python3 -m venv .venv
    
  4. 激活虚拟环境:

    # 在 Windows 上
    .venv\Scripts\activate
    
    # 在 macOS/Linux 上
    source .venv/bin/activate
    
  5. 运行安装脚本:

    python setup.py
    

    安装脚本会:

    • 检查你的 Python 版本
    • 创建虚拟环境(如果尚未创建)
    • 安装所需依赖项
    • 生成 MCP 配置文件(mcp-config.json)
    • 输出不同 MCP 客户端的配置信息,包括 Claude
  6. 注意安装脚本的输出,类似于以下内容:

    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 模型

在使用服务之前,需要下载 YOLO 模型。服务会在以下目录中查找模型:

  • 服务运行的当前目录
  • models 子目录
  • server.pyCONFIG["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

要与 Claude 一起使用此服务:

  1. 对于 Claude Web:在本地机器上设置服务,并在 MCP 客户端中使用安装脚本提供的配置。
  2. 对于 Claude Desktop:
    • 运行安装脚本并注意配置输出
    • 找到你的 Claude Desktop 配置文件(路径在安装脚本输出中提供)
    • 将配置添加或合并到你的 Claude Desktop 配置文件中
    • 重启 Claude Desktop

在 Claude 中使用 YOLO 工具

1. 首先检查可用模型

始终首先检查系统中有哪些模型可用:

我想使用 YOLO 工具。你能先检查一下我的系统中有哪些模型可用吗?

<function_calls>
<invoke name="list_available_models">
</invoke>
</function_calls>

2. 分析图像中的对象

对于分析计算机上的图像文件:

你能分析这个图像文件中的对象吗?

<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>

3. 进行综合图像分析

为了进行更详细的分析,结合对象检测、分类等:

你能对这张图像进行综合分析吗?

<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>

4. 图像分割

识别对象边界并创建分割掩模:

你能对这张照片进行图像分割吗?

<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>

5. 图像分类

对整个图像内容进行分类:

这张图像显示了什么?你能对其进行分类吗?

<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>

6. 使用计算机的摄像头

开始实时对象检测:

你能打开我的摄像头并实时检测对象吗?

<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>

7. 高级模型操作

训练自定义模型

我想在我的数据集上训练一个自定义的对象检测模型。

<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>

8. 测试连接

检查 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)以获得更好的性能。