qq-onebot-mcp
qq-onebot-mcp
경량 MCP server: QQ(NapCat / OneBot 11)를 임의의 MCP 호스트(DSH, Claude, Cursor…)에 연결합니다.
npm 의존성 제로, 순수 Node.js ≥ 20, 내장 WebSocket만 사용.
개인 채팅(화이트리스트 관리자) → 메시지가 inbox로 들어옴 → 호스트 agent가 처리(전체 도구 권한) → 답장.
그룹 채팅 @봇(화이트리스트 그룹) → 브리지가 LLM API로 직접 응답, agent를 거치지 않고 로컬에 접촉하지 않음.
아키텍처
QQ 老大 ──私聊──▶ NapCat(QQ小号) ──OneBot11/WS:3001──▶ qq-mcp-server.mjs ──MCP──▶ 宿主 agent
▲
(inbox / 工具)계층 | 파일 | 역할 |
연동 | NapCat | QQ 프로토콜 → OneBot 11(WS 3001) |
브리지 |
| MCP server: 도구, 배타적 잠금, 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참조.접속: agent에게 "QQ 접속" 지시 →
skills/qq-online/SKILL.md에 따라 attach → 메시지 대기 → 답장.
환경 변수 | 필수 | 의미 |
| ✅ | 봇 QQ 번호 |
| ✅ | 개인 채팅 화이트리스트, 쉼표로 구분 |
| NapCat WS 주소(기본 | |
| 정적 그룹 화이트리스트(비우면 동적) | |
| 그룹 채팅 직접 응답용 |
.env는 git에서 무시되며 절대 커밋하지 않음.
MCP 도구
도구 | 설명 |
| 배타적 점유 / 브리지 해제(파일 잠금, 호스트 간; 크래시 잔여물 자동 선점) |
| 개인 채팅을 블로킹 대기(폴링 없음, 루프에 권장) |
| inbox 가져오기(타임아웃 설정 가능) |
| 현재 대화 상대에게 답장(화이트리스트만) |
| 브리지 상태 |
| AGENTS.md 역할 설정 읽기 |
대기 모드: server 시작 시 NapCat에 연결하지 않고, qq_attach 시에만 연결, qq_detach 시 연결 해제 — 리소스 점유 제로.
완전 자동 폐쇄 루프(선택)
QQ 메시지가 agent를 자동으로 깨우게 하려면(매번 "접속"을 부르지 않아도): 독립 프로세스로 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 回复리스너는 agent 세션과 독립적으로 상주;
session.prompt(mode: queue)가 메시지를 호스트 세션에 주입하여 턴을 트리거.답장은
<workdir>/outbox/*.json({type:"send", message})에 저장, 리스너가 전송(chat target이 없으면 OneBot WS에 직접 연결).우아한 종료:
<workdir>에stop.flag작성.
⚠️
session.prompt는 인증이 없고 루프백 전용이므로, 본인 로컬의 신뢰 환경에서만 사용.
보안
개인 채팅: 화이트리스트만; 낯선 개인 채팅은 폐기.
그룹 채팅: 순수 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 # 配置模板License
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