qq-onebot-mcp
qq-onebot-mcp
Leichter MCP-Server: bindet QQ (NapCat / OneBot 11) an beliebige MCP-Hosts (DSH, Claude, Cursor…) an.
Null npm-Abhängigkeiten, reines Node.js ≥ 20, nur mit eingebautem WebSocket.
Privatnachrichten (Whitelist-Chef) → Nachrichten gehen in die Inbox → Host-Agent verarbeitet (volle Tool-Berechtigung) → Antwort.
Gruppenchat @Bot (Whitelist-Gruppen) → die Brücke antwortet direkt über die LLM-API, ohne Agent, ohne lokalen Zugriff.
Architektur
QQ 老大 ──私聊──▶ NapCat(QQ小号) ──OneBot11/WS:3001──▶ qq-mcp-server.mjs ──MCP──▶ 宿主 agent
▲
(inbox / 工具)Ebene | Datei | Zuständigkeit |
Anbindung | NapCat | QQ-Protokoll → OneBot 11 (WS 3001) |
Brücke |
| MCP-Server: Tools, exklusive Sperre, Inbox |
Brücke |
| OneBot-WS-Client (null Abhängigkeiten) |
Brücke |
| Gruppenchat reine LLM-Direktantwort |
Weckruf |
| Dauerhaft lauschen + Injektion in Host-Sitzung (optionaler geschlossener Kreislauf) |
Steuerung |
| Prozess-Lebenszyklus (start/stop/status) |
Related MCP server: NapCat MCP Server
Schnellstart
NapCat: installieren und mit einem QQ-Zweitkonto anmelden, OneBot WS aktivieren (Standard
ws://127.0.0.1:3001).Konfiguration:
cp .env.example .env,QQ_BOT,QQ_ALLOWED_SENDERSausfüllen (optionalLLM_API_KEYfür Gruppenchat).MCP registrieren: Host zeigt auf
qq-mcp-server.mjs(stdio). DSH nutzt diedsh-bundle/-Vorlage, sieheINSTALL-DSH.md.Einloggen: dem Agent sagen „Geh auf QQ" → nach
skills/qq-online/SKILL.mdattach → auf Nachrichten warten → antworten.
Umgebungsvariable | Pflicht | Bedeutung |
| ✅ | Bot-QQ-Nummer |
| ✅ | Privatchat-Whitelist, kommagetrennt |
| NapCat-WS-Adresse (Standard | |
| Statische Gruppen-Whitelist (leer = dynamisch) | |
| Für Gruppenchat-Direktantwort |
.envist git-ignoriert, niemals committen.
MCP-Tools
Tool | Beschreibung |
| Exklusiv belegen / Brücke freigeben (Dateisperre, hostübergreifend; automatische Übernahme bei Absturz-Resten) |
| Blockierend auf Privatchat warten (null Polling, für Schleifen empfohlen) |
| Inbox abrufen (mit Timeout möglich) |
| Aktuellem Gesprächspartner antworten (nur Whitelist) |
| Brückenstatus |
| AGENTS.md-Rollenkonfiguration lesen |
Standby-Modus: Der Server verbindet sich beim Start nicht mit NapCat, erst qq_attach verbindet, qq_detach trennt — null Ressourcenverbrauch.
Vollautomatischer geschlossener Kreislauf (optional)
Möchte man, dass QQ-Nachrichten den Agent automatisch aufwecken (ohne jedes Mal „Einloggen" zu rufen): qq-listener.mjs als eigenen Prozess starten:
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 回复Der Listener läuft unabhängig von der Agent-Sitzung dauerhaft;
session.prompt(mode: queue) injiziert Nachrichten in die Host-Sitzung und löst eine Runde aus.Antworten werden in
<workdir>/outbox/*.jsongelegt ({type:"send", message}), der Listener sendet sie (ohne Chat-Target direkt über OneBot WS).Sauberer Stopp:
stop.flagin<workdir>schreiben.
⚠️
session.prompthat keine Authentifizierung und ist nur auf Loopback beschränkt — nur in vertrauenswürdiger lokaler Umgebung verwenden.
Sicherheit
Privatchat: nur Whitelist; fremde Privatnachrichten werden verworfen.
Gruppenchat: reine LLM, berührt niemals lokale Dateien/Befehle.
qq_sendkann nur dem aktuellen Gesprächspartner antworten (innerhalb der Whitelist).Whitelist-Benutzer ziehen den Bot in eine Gruppe → automatische Freischaltung und Bekanntmachung.
Personalisierung
AGENTS.md bearbeiten (Persönlichkeit/Aufgaben/Sicherheitsgrenzen), die Brücke lädt es pro Sitzung neu, kein Neustart nötig.
Lokale private Daten (z. B. wichtige Personenbeziehungen) können in
data/(git-ignoriert) abgelegt und inAGENTS_MDdarauf verwiesen werden — nicht auf GitHub.
Dynamische Sitzungserkennung (geschlossener Kreislauf)
Der Listener schreibt DSH_SESSION_ID nicht mehr fest: Bei jeder Nachricht ruft er zuerst session.list auf, um eine laufende Sitzung mit Titel enthält 上号/QQ/布卡 zu finden, sonst Fallback auf env. So bleibt der geschlossene Kreislauf auch aktiv, wenn die „Einloggen"-Sitzung ersetzt/neu geöffnet wird.
Entwicklung
npm test # 全部入口语法检查Dateien
├── 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 # 配置模板Lizenz
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