使用说明

项目简介

ColorsMCP 是一个基于 Model Context Protocol (MCP) 实现的服务器示例项目,使用 .NET 平台构建。它演示了如何创建一个提供特定领域(颜色信息)上下文和功能的 MCP 服务器,支持 STDIO 和 SSE 两种传输协议。

主要功能点

  • 颜色数据查询: 提供查询预设颜色列表的能力。
  • 工具注册: 将查询颜色的功能注册为 MCP 工具,供 MCP 客户端(如 LLM 应用)调用。
  • 支持多种传输协议: 可配置为通过标准输入输出 (STDIO) 或 Server-Sent Events (SSE) 协议与客户端通信。

它通过暴露以下工具,使得 MCP 客户端能够获取颜色信息:

  • 'GetAllColors': 获取所有颜色列表。
  • 'GetColorByFamily': 根据颜色族(如红色系、蓝色系)获取颜色列表。
  • 'GetColor': 根据颜色名称获取特定颜色的详细信息。

安装步骤

  1. 安装 .NET SDK: 确保您的开发环境中安装了 .NET 9.0 或更高版本的 SDK。可以从 Microsoft 官方网站 下载。
  2. 克隆仓库: 使用 Git 克隆 ColorsMCP 仓库到本地。
    git clone https://github.com/markharrison/ColorsMCP.git
    cd ColorsMCP
  3. 构建项目:
    • 对于 STDIO 版本:进入 ColorsMCP 文件夹,运行 'dotnet build'。
    • 对于 SSE 版本:确保 Docker 环境可用。进入项目根目录,运行 Docker 构建命令。

服务器配置 (供 MCP 客户端使用)

MCP 服务器本身是作为后端服务运行的,MCP 客户端(例如 VS Code 中的 Copilot 扩展、或自定义 LLM 应用)需要知道如何连接它。连接信息通常存储在一个 JSON 配置文件中,例如 '.vscode/mcp.json'。

STDIO 版本配置

将以下配置添加到您的 MCP 客户端配置文件(如 '.vscode/mcp.json')中:

{
    "servers": {
        "colorsserver-stdio": {
            "type": "stdio",
            "command": "dotnet",
            "args": [
                "run",
                "--project",
                "<项目根目录>/ColorsMCP/ColorsMCP.csproj"
            ]
        }
    }
}

请将 '<项目根目录>' 替换为您实际克隆仓库的路径,例如 'c:/dev/ColorsMCP'。

  • 'type': 指定传输协议为 STDIO。
  • 'command': 指定用于启动服务器的命令,这里是 'dotnet' 可执行文件。
  • 'args': 启动命令的参数,这里指示 .NET 运行时执行 ColorsMCP 项目。

SSE 版本配置

首先需要构建并运行 SSE 版本的 Docker 镜像:

# 在 ColorsMCP 项目根目录执行
docker build -f colorsmcpsse/Dockerfile -t colorsmcpsse:latest .
docker run -p 3000:8080 -p 3001:8081 -d colorsmcpsse:latest

这将构建一个名为 'colorsmcpsse' 的 Docker 镜像,并在后台运行一个容器,将容器的 8080 端口映射到主机的 3000 端口(用于 SSE 连接)。

然后,将以下配置添加到您的 MCP 客户端配置文件中:

{
    "servers": {
        "colorsserver-sse": {
            "type": "sse",
            "url": "http://localhost:3000"
        }
    }
}
  • 'type': 指定传输协议为 SSE。
  • 'url': 指定 SSE 服务器的基地址。根据上面 Docker 映射的端口,这里是 'http://localhost:3000'。MCP 客户端会自动在此基础上构建完整的 SSE 连接路径(通常是 '/sse')。

基本使用方法

配置好 MCP 客户端后,它会自动检测并连接到 ColorsMCP 服务器。您可以通过客户端的界面或编程接口来与服务器交互。

例如,如果您使用的是支持 MCP 的 LLM 客户端,您可以:

  1. 查看服务器能力: 客户端可以列出服务器提供的所有工具(如 'GetAllColors', 'GetColor' 等)及其描述。
  2. 调用工具: 您可以通过向 LLM 提问来间接或直接调用服务器提供的工具。例如,询问 LLM "What is the hex code for the color Red?",LLM 客户端可能会识别到需要调用 'GetColor' 工具,并以 "Red" 作为参数发送请求给 ColorsMCP 服务器。服务器执行工具后返回结果(如 Red 的十六进制码),客户端再将结果呈现给用户或用于 LLM 的回答生成。

仓库中包含了一个简单的 MCPClient 示例项目 ('MCPClient/Program.cs'),展示了如何以编程方式连接服务器、列出工具和调用工具。您可以参考该客户端代码来理解服务器的工作方式和交互流程。

信息

分类

开发者工具