MCP Server wrapping NapCatQQ for AI-driven QQ interactions
This server has 8 tools with reasonable naming (all start with action verbs) and descriptions present for most tools. However, there are significant gaps in parameter descriptions, schema completeness, and error handling guidance. The tool definitions are explicitly visible in src/qq_agent_mcp/tools.py and src/qq_agent_mcp/onebot.py, so no inference penalty applies. Descriptions average ~100-150 characters, which is acceptable but some lack context on WHEN to use the tool or what prerequisites exist. Parameter descriptions are present but inconsistent in detail, some parameters have good descriptions (e.g., target_type with enum and clear text), while others are sparse. No output schemas are documented, and error handling provides no recovery guidance to the LLM. The tool set addresses a specific domain (QQ messaging via NapCat) with reasonable separation of concerns, but falls short of production-grade quality due to missing output documentation and incomplete parameter guidance.
Check QQ login status and NapCat connection status.
Get detailed information about a specific group.
Retrieve recent messages from a specific QQ target (group or private chat).
Get the MCP server uptime since startup.
List all friends in the contact list.
List all groups the bot has joined.
Take a screenshot of the QQ chat window for a group or friend using Playwright browser automation.
No output schemas documented for any tool. LLM cannot infer what fields to expect in responses, limiting downstream tool composition and forcing the agent to guess at available data.
list_groups and list_friends lack pagination parameters (limit, offset, page_size). Returning all groups/friends without bounds risks context window exhaustion and poor LLM performance on large contact lists.
No error handling guidance in tool descriptions. When a send_message fails or a target_id is invalid, the LLM has no actionable recovery path. Descriptions do not explain what errors might occur or what to do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Send a message to a QQ target (group or private chat) with human-like typing delays and optional chunking.
check_status, list_groups, list_friends, and get_server_uptime have minimal descriptions (45-60 chars). Descriptions should explain WHEN to use the tool, what context it provides, and any prerequisites. Example: 'List all groups the bot has joined.' lacks context on why an LLM would call this (e.g., 'to discover available target groups before sending a message').
send_message accepts optional parameters (split_content, num_chunks, reply_to) but interdependencies are not documented. If both split_content and num_chunks are provided, which takes precedence? The description does not clarify.
screenshot_chat has no mention of prerequisites (e.g., QQ web interface must be accessible, Playwright browser must be running). If the browser is not available, the tool fails opaquely.