qq-onebot-mcp
qq-onebot-mcp
Servidor MCP ligero: conecta QQ (NapCat / OneBot 11) a cualquier host MCP (DSH, Claude, Cursor…).
Cero dependencias npm, Node.js puro ≥ 20, solo usa WebSocket integrado.
Mensajes privados (lista blanca de administradores) → los mensajes entran en la bandeja de entrada → el agente del host los procesa (permisos completos de herramientas) → responde.
Menciones @bot en chats de grupo (grupos en lista blanca) → el puente responde directamente con la API de LLM, sin pasar por el agente ni tocar la máquina local.
Arquitectura
QQ 老大 ──私聊──▶ NapCat(QQ小号) ──OneBot11/WS:3001──▶ qq-mcp-server.mjs ──MCP──▶ 宿主 agent
▲
(inbox / 工具)Capa | Archivo | Responsabilidad |
Acceso | NapCat | Protocolo QQ → OneBot 11 (WS 3001) |
Puente |
| Servidor MCP: herramientas, bloqueo exclusivo, bandeja de entrada |
Puente |
| Cliente OneBot WS (cero dependencias) |
Puente |
| Respuesta directa de LLM para chats de grupo |
Despertar |
| Escucha residente + inyección en la sesión del host (bucle opcional) |
Control |
| Ciclo de vida del proceso (start/stop/status) |
Related MCP server: NapCat MCP Server
Inicio rápido
NapCat: instálalo y ten una cuenta QQ secundaria iniciada, activa OneBot WS (por defecto
ws://127.0.0.1:3001).Configuración:
cp .env.example .env, rellenaQQ_BOT,QQ_ALLOWED_SENDERS(puedes añadirLLM_API_KEYpara activar los chats de grupo).Registra MCP: el host apunta a
qq-mcp-server.mjs(stdio). DSH usa la plantilladsh-bundle/, consultaINSTALL-DSH.md.Conéctate: dile al agente «conéctate a QQ» → sigue
skills/qq-online/SKILL.mdpara el attach → espera mensajes → responde.
Variable de entorno | Obligatoria | Significado |
| ✅ | Número de QQ del bot |
| ✅ | Lista blanca de mensajes privados, separada por comas |
| Dirección WS de NapCat (por defecto | |
| Lista blanca estática de grupos (vacía = dinámica) | |
| Para respuestas directas en chats de grupo |
.envestá en git ignore, nunca se sube.
Herramientas MCP
Herramienta | Descripción |
| Ocupación exclusiva / liberación del puente (bloqueo de archivo, entre hosts; recuperación automática de bloqueos residuales tras un fallo) |
| Espera bloqueante de mensajes privados (cero sondeos, recomendado para bucles) |
| Obtiene la bandeja de entrada (con tiempo de espera configurable) |
| Responde al interlocutor actual (solo lista blanca) |
| Estado del puente |
| Lee la configuración de rol de AGENTS.md |
Modo en espera: el servidor no se conecta a NapCat al iniciar; solo se conecta con qq_attach y se desconecta con qq_detach — cero consumo de recursos.
Bucle automático completo (opcional)
¿Quieres que los mensajes de QQ despierten automáticamente al agente (sin tener que decir «conéctate» cada vez)? Ejecuta qq-listener.mjs como proceso independiente:
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 回复El listener reside de forma independiente a la sesión del agente;
session.prompt(mode: queue) inyecta los mensajes en la sesión del host para activar el turno.Las respuestas se guardan en
<workdir>/outbox/*.json({type:"send", message}), y el listener las envía (si no hay chat target, se conecta directamente al WS de OneBot).Detención limpia: escribe
stop.flagen<workdir>.
⚠️
session.promptno tiene autenticación y solo está limitado a loopback; úsalo solo en entornos locales de confianza.
Seguridad
Mensajes privados: solo lista blanca; los mensajes privados desconocidos se descartan.
Chats de grupo: solo LLM, nunca toca archivos o comandos de la máquina local.
qq_sendsolo puede responder al interlocutor actual (dentro de la lista blanca).Si un usuario de la lista blanca añade al bot a un grupo → se añade automáticamente a la lista blanca y se anuncia.
Personalización
Edita AGENTS.md (personalidad / responsabilidades / límites de seguridad); el puente lo recarga en cada sesión, sin necesidad de reiniciar.
La privacidad local (como relaciones personales importantes) puede ir en
data/(git ignore) y referenciarse desdeAGENTS_MD— no se sube a GitHub.
Descubrimiento dinámico de sesiones (bucle)
El listener ya no tiene DSH_SESSION_ID fijo: cada vez que recibe un mensaje, primero llama a session.list para buscar una sesión en ejecución + cuyo título contenga 上号/QQ/布卡; si no la encuentra, recurre a la variable de entorno. Así, si la sesión «conéctate» se reemplaza o se reabre, el bucle sigue funcionando.
Desarrollo
npm test # 全部入口语法检查Archivos
├── 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 # 配置模板Licencia
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