使用说明

项目简介

本项目 'qq-mcp-server' 是一个基于 Model Context Protocol (MCP) 标准构建的服务器端应用。它主要用于为QQ机器人等LLM客户端提供上下文信息和外部功能调用能力。通过该服务,LLM客户端可以获取预定义的Prompt模板,并调用注册的工具来扩展其功能,例如查询天气、获取游戏数据等。本项目使用SSE (Server-Sent Events) 作为传输协议,简化了客户端与服务器的交互。

主要功能点

  • Prompt 模板管理: 服务器预置并管理Prompt模板,客户端可以请求获取这些模板,用于指导LLM生成特定格式的对话内容,例如获取天气预报的Prompt。
  • 工具注册与调用: 服务器注册并管理可被LLM客户端调用的外部工具,例如本项目中实现了查询天气和获取DNF金币价格的工具。客户端可以通过MCP协议请求调用这些工具,扩展LLM的功能边界。
  • SSE通信: 使用 Server-Sent Events (SSE) 协议与客户端进行通信,简化了实时数据推送和事件通知的实现。
  • 基础的资源管理: 虽然代码中没有显式的资源管理功能,但Prompt模板和工具定义可以被视为一种静态资源管理。

安装步骤

  1. 确保已安装 Node.js 和 npm: 本项目是基于 Node.js 开发的,请确保您的环境中已安装 Node.js 和 npm (Node.js 包管理器)。您可以访问 https://nodejs.org/ 下载并安装。

  2. 克隆仓库: 使用 git 命令克隆 'qq-mcp-server' 仓库到本地:

    git clone https://github.com/kirikoko1213/qq-mcp-server.git
    cd qq-mcp-server
  3. 安装依赖: 在项目根目录下,使用 npm 安装项目依赖:

    npm install
  4. 配置环境变量 (可选): 如果需要使用天气查询工具,您需要在环境变量中配置聚合数据 (Juhe Data) 的 API Key。在您的系统环境变量中添加 'JUHE_API_KEY',并设置为您在聚合数据申请的天气API的Key。 (本项目代码中使用了 'process.env.JUHE_API_KEY' 来获取,但实际代码中没有使用到,可能需要您自行配置并确保API Key的正确使用)

  5. 构建项目 (如果需要): 虽然 'README.md' 中有 Python 的构建说明,但实际代码是 TypeScript,可能需要构建步骤。不过根据提供的代码,直接运行 'src/index.js' 也可以,更严谨的方式是先进行 TypeScript 编译。 但根据 'README.md' 的描述和实际代码结构,更倾向于直接运行,以下使用说明也以此为基础。如果需要构建,请参考标准的 TypeScript 项目构建流程。

服务器配置

对于 MCP 客户端,您需要配置以下信息以连接到 'qq-mcp-server' 服务器。以下是一个 JSON 格式的配置示例:

{
  "server name": "qq-mcp-server",
  "command": "node",
  "args": ["src/index.js"],
  "transport": {
    "type": "sse",
    "endpoint": "/sse",
    "messagesEndpoint": "/messages",
    "baseURL": "http://localhost:3001"
  }
}

参数注释:

  • 'server name': 服务器的名称,可以自定义,用于在客户端标识服务器。
  • 'command': 启动服务器的命令,这里使用 'node' 表示使用 Node.js 运行。
  • 'args': 启动命令的参数,这里指定运行 'src/index.js' 文件。
  • 'transport': 定义传输协议的配置。
    • 'type': 传输协议类型,这里使用 'sse' (Server-Sent Events)。
    • 'endpoint': SSE 连接的端点,客户端需要连接到 '/sse' 建立 SSE 连接。
    • 'messagesEndpoint': 接收客户端消息的 HTTP POST 端点,客户端通过 POST 请求向 '/messages' 发送消息。
    • 'baseURL': 服务器的基础 URL,客户端需要根据此 URL 构建完整的请求地址,这里假设服务器运行在本地的 3001 端口。

注意: 请确保服务器启动后,客户端能够通过 'http://localhost:3001/sse' 地址建立 SSE 连接,并通过 'http://localhost:3001/messages' 地址发送消息。 您可能需要根据实际情况调整 'baseURL' 和端口号。

基本使用方法

  1. 启动服务器: 在项目根目录下,运行以下命令启动 MCP 服务器:

    node src/index.js

    服务器默认监听 3001 端口。

  2. 配置 MCP 客户端: 根据您使用的 MCP 客户端的文档,配置服务器连接信息,使用上面提供的服务器配置 JSON。

  3. 客户端与服务器交互: 客户端启动后,会尝试连接到服务器的 '/sse' 端点。连接成功后,客户端可以发送 MCP 请求到 '/messages' 端点,例如:

    • 列出 Prompt 模板: 客户端可以发送 'ListPromptsRequest' 请求获取服务器支持的 Prompt 模板列表。
    • 获取 Prompt 模板: 客户端可以发送 'GetPromptRequest' 请求获取指定名称的 Prompt 模板。
    • 列出工具: 客户端可以发送 'ListToolsRequest' 请求获取服务器注册的工具列表。
    • 调用工具: 客户端可以发送 'CallToolRequest' 请求调用指定的工具,并传递工具所需的参数。
  4. 查看服务器响应: 服务器会根据客户端的请求,返回相应的 JSON-RPC 响应或发送 SSE 通知。客户端需要解析服务器的响应,并根据响应内容进行后续处理。 例如,调用天气查询工具后,服务器会返回包含天气信息的 JSON 响应。

请参考 Model Context Protocol (MCP) 的官方文档和您使用的 MCP 客户端的文档,了解更详细的协议细节和客户端操作方法。

信息

分类

AI与计算