Amadeus-QQ-MCP
使用说明(Markdown 格式)
-
项目简介
- 这是一个基于 MCP(Model Context Protocol)的服务器实现,运行在 QQ 端,通过 NapCat 的 OneBot v11 HTTP/API 与 QQ 通信。服务器提供标准化的资源、工具与提示模板管理能力,允许 LLM 客户端通过 JSON-RPC 与之对话、查询上下文、调用工具、压缩上下文等。
- 架构要点包括:MCP Client(stdio)与 MCP 服务器交互、后端通过 WebSocket 监听 QQ 消息、缓冲区管理上下文、提供多种工具接口、以及可扩展的通讯传输。
-
主要功能点
- MCP 服务端实现:使用 FastMCP 注册多组工具,遵循 JSON-RPC 请求/响应模式。
- 工具集成:check_status、get_group_list、get_recent_context、batch_get_recent_context、send_message、compress_context 等。
- 上下文管理:通过 WebSocket 实时监听 QQ 消息,提供消息缓冲、回填历史、按 target(群/私聊)分组管理。
- 自动化消息拆分与打字延迟:发送消息时自动分 chunk,并模拟人类打字节奏。
- 白名单与访问控制:对群组、好友进行监控和访问控制,防止越权操作。
- 压缩与摘要:将历史消息压缩为摘要,替换为摘要块以节省资源。
- 兼容性与传输:支持标准 IO(stdio)作为 MCP 客户端入口,NapCat HTTP/WebSocket 支持的交互,以及后端对 WebSocket 的自动重连。
-
安装步骤(简要)
- Linux
- 运行脚本安装依赖与环境:scripts/install-linux.sh
- 配置 NapCat:scripts/setup-linux.sh
- 启动 NapCat:scripts/start-docker-linux.sh
- 测试 MCP 连接:uv run python 脚本/scripts/test-mcp-linux.py
- 启动 MCP 服务器:uv run qq-agent-mcp --qq <你的 QQ 号>(最小参数)或带更多选项
- Windows
- 配置 NapCat:scripts/setup-windows.ps1
- 启动 NapCat:脚本 start-docker-windows.ps1
- 启动 MCP 服务器:uv run qq-agent-mcp --qq <你的 QQ 号>
- 通用要点
- 该服务器通过 stdio 作为 MCP 服务器入口,客户端需要提供一个配置来连接服务器的启动命令与参数(示例见下文 JSON 配置部分)。
- NapCat 提供 QQ 上下文与 OneBot v11 的接口,服务器端会通过 HTTP API 与 WebSocket 进行交互。
- Linux
-
服务器配置(MCP 客户端需要的配置示例) 说明:MCP 客户端(LLM 前端)需要知道如何启动并连接到 MCP 服务器。本示例给出一个 JSON 结构,包含服务器名称、启动命令和参数。请将实际参数替换为你的环境配置。 配置示例(JSON 形式): { "mcpServers": { "qq-agent": { "server_name": "qq-agent-mcp", "command": "uv", "args": "run qq-agent-mcp --qq <你的QQ号> --napcat-host 127.0.0.1 --napcat-port 3000 --ws-port 3001" } // 备注:若直接使用 Python 启动,可将 command 换成 Python 可执行路径与模块启动参数,例如: // "command": "python", "args": " -m qq_agent_mcp --qq <你的QQ号>" } }
-
基本使用方法
- 启动前提:确保 NapCat/OneBot 已正确运行并可访问,QQ 账号已登录,服务器具备网络访问权限。
- 启动 MCP 服务器后,LLM 客户端通过 MCP 协议向服务器发送请求,如 initialize、tools/list、tools/call 等来探测能力、调用工具并获取上下文。
- 使用示例流程(由客户端发起,服务器端响应):
- initialize:建立会话、协商协议版本与能力。
- tools/list:获取可用的工具清单。
- tools/call:调用像 check_status、get_recent_context 等工具,获取 QQ 群/私聊的上下文、实时消息等信息。
- get_recent_context / batch_get_recent_context:获取目标的最近消息上下文,用于 LLM 进行上下文推理。
- send_message:向群组或私聊发送分段消息,带打字节奏、可设定回复目标、分段策略等。
- compress_context:对指定目标的消息缓冲区进行摘要压缩,释放历史缓冲以节省资源。
- 客户端配置完成后,LLM 客户端即可通过 MCP 协议与服务器对话,获取上下文、执行工具、获取和渲染 Prompt 模板等。
-
其他注意
- 本实现包含集成测试脚本(tests/ 目录下的测试),用于验证握手、工具列表、上下文获取等功能,实际生产应关闭测试或在受控环境中运行。
- 该服务器能在多种场景下工作,包括群组与私聊的上下文管理、消息分段发送与摘要压缩,方便将 LLM 的上下文服务与 QQ 聊天场景对接。
-
小结
- 该仓库实现了一个完整的 MCP 服务器端,具备核心 MCP 功能、工具注册、上下文缓冲、历史回填、消息分段发送与摘要压缩等能力,且通过 NapCat QQ 实现与 OneBot v11 的实际对接,能够为 LLM 客户端提供标准化的上下文服务。