Skip to main content
Glama

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)

브리지

qq-mcp-server.mjs

MCP server: 도구, 배타적 잠금, inbox

브리지

onebot.mjs

OneBot WS 클라이언트(의존성 제로)

브리지

group_llm.mjs

그룹 채팅 순수 LLM 직접 응답

웨이크업

qq-listener.mjs

상주 리스닝 + 호스트 세션 주입(선택적 폐쇄 루프)

제어

qqctl.mjs

프로세스 수명 주기(start/stop/status)

Related MCP server: NapCat MCP Server

빠른 시작

  1. NapCat: 설치하고 QQ 부계정으로 로그인, OneBot WS 활성화(기본 ws://127.0.0.1:3001).

  2. 설정: cp .env.example .env, QQ_BOT, QQ_ALLOWED_SENDERS 입력(LLM_API_KEY 추가 시 그룹 채팅 활성화).

  3. MCP 등록: 호스트가 qq-mcp-server.mjs(stdio)를 가리키게 함. DSH는 dsh-bundle/ 템플릿 사용, INSTALL-DSH.md 참조.

  4. 접속: agent에게 "QQ 접속" 지시 → skills/qq-online/SKILL.md에 따라 attach → 메시지 대기 → 답장.

환경 변수

필수

의미

QQ_BOT

봇 QQ 번호

QQ_ALLOWED_SENDERS

개인 채팅 화이트리스트, 쉼표로 구분

ONEBOT_WS_URL

NapCat WS 주소(기본 ws://127.0.0.1:3001)

QQ_ALLOWED_GROUPS

정적 그룹 화이트리스트(비우면 동적)

LLM_API_KEY / LLM_BASE_URL / LLM_MODEL

그룹 채팅 직접 응답용

.env는 git에서 무시되며 절대 커밋하지 않음.

MCP 도구

도구

설명

qq_attach / qq_detach

배타적 점유 / 브리지 해제(파일 잠금, 호스트 간; 크래시 잔여물 자동 선점)

qq_wait_inbox

개인 채팅을 블로킹 대기(폴링 없음, 루프에 권장)

qq_poll_inbox

inbox 가져오기(타임아웃 설정 가능)

qq_send

현재 대화 상대에게 답장(화이트리스트만)

qq_status

브리지 상태

qq_get_agent_profile

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> 0
QQ 消息 → 监听器(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

F
license - not found
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    7
    24
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Connects QQ via NapCat OneBot v11 to an Astral Code app-server, exposing MCP tools for sending messages, files, images, and fetching conversation history.
    10
    1
    Apache 2.0

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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