qq-onebot-mcp
qq-onebot-mcp
Легковесный MCP-сервер: подключает QQ (NapCat / OneBot 11) к любому MCP-хосту (DSH, Claude, Cursor…).
Ноль npm-зависимостей, чистый Node.js ≥ 20, только встроенный WebSocket.
Личные сообщения (белый список владельца) → сообщение попадает в inbox → агент хоста обрабатывает (полные права на инструменты) → ответ.
Групповой чат @бота (белый список групп) → мост отвечает напрямую через LLM API, минуя агента и не касаясь локальной машины.
Архитектура
QQ 老大 ──私聊──▶ NapCat(QQ小号) ──OneBot11/WS:3001──▶ qq-mcp-server.mjs ──MCP──▶ 宿主 agent
▲
(inbox / 工具)Слой | Файл | Назначение |
Шлюз | NapCat | Протокол QQ → OneBot 11 (WS 3001) |
Мост |
| MCP-сервер: инструменты, эксклюзивная блокировка, inbox |
Мост |
| OneBot WS-клиент (без зависимостей) |
Мост |
| Чистый LLM-ответ в групповом чате |
Пробуждение |
| Постоянный слушатель + инъекция в сессию хоста (опциональный замкнутый цикл) |
Управление |
| Жизненный цикл процесса (start/stop/status) |
Related MCP server: NapCat MCP Server
Быстрый старт
NapCat: установите и войдите в QQ-аккаунт-болванку, включите OneBot WS (по умолчанию
ws://127.0.0.1:3001).Конфигурация:
cp .env.example .env, заполнитеQQ_BOT,QQ_ALLOWED_SENDERS(можно добавитьLLM_API_KEYдля группового чата).Регистрация MCP: хост указывает на
qq-mcp-server.mjs(stdio). Для DSH используйте шаблонdsh-bundle/, см.INSTALL-DSH.md.Вход: скажите агенту «зайди в QQ» → следуйте
skills/qq-online/SKILL.mdдля attach → ждите сообщения → отвечайте.
Переменная окружения | Обязательна | Значение |
| ✅ | Номер QQ-бота |
| ✅ | Белый список личных сообщений, через запятую |
| Адрес WS NapCat (по умолчанию | |
| Статический белый список групп (пусто = динамический) | |
| Для прямых ответов в групповом чате |
.envв git-игноре, никогда не коммитьте.
MCP-инструменты
Инструмент | Описание |
| Эксклюзивный захват / освобождение моста (файловая блокировка, кросс-хост; автоматический захват при остатках после сбоя) |
| Блокирующее ожидание личного сообщения (без поллинга, рекомендуется для циклов) |
| Получить из inbox (с таймаутом) |
| Ответ текущему собеседнику (только белый список) |
| Статус моста |
| Читает ролевую настройку из AGENTS.md |
Режим ожидания: сервер при запуске не подключается к NapCat, подключение происходит только при qq_attach, отключение — при qq_detach — нулевое потребление ресурсов.
Полностью автоматический замкнутый цикл (опционально)
Хотите, чтобы QQ-сообщения автоматически будили агента (без необходимости каждый раз говорить «зайди»): запустите qq-listener.mjs как отдельный процесс:
DSH_API_URL=http://127.0.0.1:3080 DSH_SESSION_ID=<session-id> \
node qq-listener.mjs <tag> <workdir> 0QQ 消息 → 监听器(wait_inbox) → 写入 <workdir>/inbox/ + POST http://127.0.0.1:3080/api/session.prompt
│
agent 自动醒来处理 → <workdir>/outbox/ → qq_send 回复Слушатель работает постоянно независимо от сессии агента;
session.prompt(mode: queue) инъектирует сообщение в сессию хоста, запуская раунд.Ответы кладутся в
<workdir>/outbox/*.json({type:"send", message}), слушатель отправляет их (при отсутствии chat target — напрямую через OneBot WS).Корректная остановка: запишите
stop.flagв<workdir>.
⚠️
session.promptне имеет аутентификации и работает только на loopback — используйте только в доверенном локальном окружении.
Безопасность
Личные сообщения: только белый список; незнакомые личные сообщения отбрасываются.
Групповой чат: чистый LLM, никогда не касается локальных файлов/команд.
qq_sendможет отвечать только текущему собеседнику (в белом списке).Пользователь из белого списка добавляет бота в группу → автоматическое добавление в белый список и объявление.
Персонализация
Отредактируйте AGENTS.md (личность/обязанности/границы безопасности), мост перезагружает его в каждой сессии, без перезапуска.
Локальные приватные данные (например, важные личные связи) можно положить в
data/(git-игнор) и указать на них вAGENTS_MD— на GitHub не попадут.
Динамическое обнаружение сессии (замкнутый цикл)
Слушатель больше не зашивает DSH_SESSION_ID: при каждом сообщении сначала вызывает session.list, чтобы найти сессию со статусом running + заголовок содержит 上号/QQ/布卡, если не находит — откатывается на env. Так замкнутый цикл продолжает работать, даже если сессию «зайди» заменили или переоткрыли.
Разработка
npm test # 全部入口语法检查Файлы
├── qq-mcp-server.mjs # MCP server(主入口)
├── onebot.mjs # OneBot WS 客户端
├── group_llm.mjs # 群聊 LLM 直答
├── bridge.mjs # 独立触发桥(无 MCP 宿主)
├── bridge-acp.mjs # ACP 连接器(持久 DSH 会话)
├── qq-listener.mjs # 闭环监听器
├── qqctl.mjs # 进程控制
├── dsh-bundle/ # DSH profile bundle 模板
├── skills/qq-online/ # 「上QQ号」技能
├── INSTALL-DSH.md # 新用户自装指南
└── .env.example # 配置模板Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI clients to send and receive QQ messages through NapCatQQ (OneBot v11) for both private and group chats. It supports message context management, real-time WebSocket listening, and human-like typing simulation.724MIT
- FlicenseNot gradedqualityBmaintenanceEnables interaction with NapCat QQ bot APIs for group management, messaging, and system operations. Supports HTTP and WebSocket modes with security features like group restrictions and readonly mode.4
- AlicenseNot gradedqualityCmaintenanceA MCP server that exposes QQ bot capabilities over Streamable HTTP, enabling clients to query bot status, read group and friend info, fetch chat history, and send group/private text messages.2MIT
- AlicenseBqualityBmaintenanceConnects QQ via NapCat OneBot v11 to an Astral Code app-server, exposing MCP tools for sending messages, files, images, and fetching conversation history.101Apache 2.0
Related MCP Connectors
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HUliangwei/qq-onebot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server