NapCat OneBot MCP server with stdio and native Streamable HTTP transports
NapCat MCP exposes 46 tools with consistent naming (verb_noun pattern) and basic parameter schemas. All tools have descriptions and input schemas with type definitions. However, descriptions are often terse (10-50 chars), many lack actionable context for LLM selection, and output schemas are not documented. Parameter descriptions exist but frequently omit constraints, ranges, or format guidance. Error handling is minimal, no recovery guidance or categorization. Security concerns: credentials (cookies, domain) exposed as parameters; no permission gates on destructive operations (kick, ban, delete); no audit trail hints. Composition is reasonable (single-responsibility tools), but some tools conflate concerns (send_msg accepts both group and private modes). Overall: functional but below production baseline for agent-facing tools.
Remove a message from essence
Delete a file from a group
Delete a message
Get cookies for a domain
Get credentials for a domain
Get list of essence messages in a group
Get a forward message
Credentials exposed as tool parameters: get_cookies and get_credentials accept 'domain' and return sensitive auth data. Secrets in tool responses enter LLM context and logs. Use server-side secret injection via environment variables or vault.
No permission gates on destructive operations. Tools like set_group_kick, delete_msg, delete_group_file, set_group_leave (dismiss) lack authorization checks. Verify calling agent/user has authority before executing.
Descriptions are terse and lack LLM-actionable context. 35 of 46 tools have descriptions under 50 chars (e.g., 'Get group information', 'Get cookies'). Descriptions should explain WHAT, WHEN to use, and any prerequisites. Expand to 50-200 chars with context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get friend message history
Get list of group announcements
Get remaining @all count for group
Get group file system information
Get URL for a group file
Get group files by folder
Get group honor information
Get group information
Get extended group information
Get list of all groups
Get information about a specific group member
Get list of group members
Get group message history
Get root files of a group
Get an image file
Get a specific message
Get a voice record file
Get information about a stranger
Mark a message as read
Perform OCR on an image
Send a forward message to a group
Send a message to a group
Send a group announcement
Send a like to a user
Send a message to a user or group
Send a private message to a user
Set a message as essence
Handle friend request
Handle group join request
Set or unset a group admin
Mute a user in a group
Set a user's group card (nickname)
Kick a user from a group
Leave a group or dismiss a group
Set group name
Set a user's special title in a group
Enable or disable whole-group mute
Set QQ profile information
Upload a file to a group
Output schemas not documented. No tool description specifies what fields are returned or their types. LLMs cannot plan downstream calls or extract data without knowing response structure. Add output schema documentation to every tool.
No error handling guidance. Tools lack recovery hints, error categorization, or actionable messages. E.g., if get_group_info fails with 'group not found', should the LLM retry, call get_group_list, or ask the user? Add error classification and recovery guidance.