Skip to main content
Glama
inzzou

qzone-mcp

by inzzou

qzone-mcp

Independent local MCP wrapper for astrbot_plugin_qzone_ultra + NapCat.

This is an independent community integration. It is not affiliated with, endorsed by, or maintained by QZoneUltra, NapCatQQ, AstrBot, or Tencent.

Architecture:

Codex -> MCP (stdio) -> adapter -> QzoneUltra daemon (127.0.0.1) -> QZone

NapCat (127.0.0.1) -> credentials -> adapter -> daemon /bind

The Ultra source is treated as an external dependency and is not modified or copied into this project.

Credits and licensing

  • astrbot_plugin_qzone_ultra is an external runtime dependency by 雪碧bir, licensed under MIT. Its source is not bundled in this repository.

  • NapCatQQ supplies the external QQ login and OneBot runtime. Its source and binaries are not bundled in this repository. Users must install it separately and comply with its own Limited Redistribution License, including its non-commercial-use terms.

  • This MCP wrapper is licensed under the MIT license in LICENSE.

See THIRD_PARTY_NOTICES.md for the exact upstream references used by this project.

Related MCP server: Zhihu-Collections-MCP

Safety boundary

  • NapCat and Qzone daemon URLs are rejected unless they use 127.0.0.1 or localhost.

  • Cookie/CSRF values are only used internally for daemon binding.

  • MCP results are recursively sanitized to remove credential-like keys.

  • Cookie values are not intentionally logged.

Install

  1. Keep/clone QzoneUltra somewhere on disk and install its own requirements there.

  2. Install this MCP:

cd D:\qzone-mcp
python -m pip install -e .
  1. Set environment variables from .env.example in your Codex MCP configuration.

Example Codex MCP config:

[mcp_servers.qzone]
command = "python"
args = ["-m", "qzone_mcp"]

[mcp_servers.qzone.env]
NAPCAT_URL = "http://127.0.0.1:3000"
NAPCAT_TOKEN = "YOUR_NAPCAT_TOKEN"
QZONE_ULTRA_ROOT = "D:\\path\\to\\astrbot_plugin_qzone_ultra"
QZONE_DATA_DIR = "D:\\qzone-mcp-data"
QZONE_MEDIA_ROOT = "D:\\qzone-mcp-media"
QZONE_DAEMON_PORT = "18999"
QZONE_AUTO_START_DAEMON = "true"
QZONE_AUTO_BIND = "true"

If an Ultra daemon is already running, set QZONE_DAEMON_SECRET to the same secret and optionally set QZONE_AUTO_START_DAEMON=false.

First test

Ask Codex to call qzone_status first. It should verify:

  • local daemon reachable;

  • NapCat returns the logged-in QQ number;

  • QZone cookie exists;

  • p_skey exists if NapCat exposes the required QZone cookie;

  • daemon accepts the internal bind.

Only after that call qzone_publish.

Tools in v0.3

  • qzone_status

  • qzone_list_posts

  • qzone_get_post

  • qzone_publish (direct publish; text + multiple local images)

  • qzone_prepare_publish (preview only; returns one-time confirmation token)

  • qzone_confirm_publish (publishes a prepared preview)

  • qzone_like

  • qzone_unlike

  • qzone_comment

  • qzone_reply_comment

  • qzone_delete

  • qzone_visitors

Video is intentionally left out of the first version.

v0.2 notes

  • Keeps the existing direct publish flow unchanged.

  • Adds an optional two-step preview/confirm publish flow to reduce accidental posts.

  • Retries once with a fresh NapCat QZone credential bind when the daemon reports an authentication/login failure.

  • Tightens local-only URL validation using parsed loopback hostnames (including ::1) instead of string prefixes.

  • Multi-image input continues to use the existing images: list[str] path and is validated against QZONE_MEDIA_ROOT.

  • QZONE_PUBLISH_PREVIEW_TTL controls preview-token lifetime in seconds (default 600).

v0.3 notes

  • Keeps all v0.2 behavior and APIs unchanged.

  • Confirms feed listing, post detail, comments, replies, delete, and like flows are exposed as MCP tools.

  • Adds a dedicated qzone_unlike tool so agents do not need to remember unlike=true.

Available Tools

12 tools
qzone_commentC

评论一条说说。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
contentYes
hostuinYes

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior, but it only restates the obvious action in Chinese. It does not mention that this creates a public comment, whether authentication/session state is required, whether the action is reversible, or any rate-limit/error considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this is under-specification rather than effective conciseness. A one-sentence phrase adds no structured value beyond the tool name and fails to convey essential details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters, no output schema, and no annotations, the description is far too thin to support correct invocation. It gives no guidance on parameter semantics, required conditions, or result/response expectations, making it incomplete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the parameters. The roles of hostuin, fid, content, and appid are left entirely unexplained, so the agent cannot determine what values to supply or why they are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '评论一条说说' clearly states a specific action (comment) on a specific resource (a QZone status/feed). It is distinguishable from obvious siblings like like, delete, and publish, though it does not explicitly contrast with qzone_reply_comment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives or when not to use it. The name and description imply 'use this to comment on a post,' but no explicit selection criteria are provided relative to sibling tools like reply_comment or unlike.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_confirm_publishA

使用 qzone_prepare_publish 返回的 token 执行一次真实发布;token 使用一次即失效。

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmation_tokenYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that this action performs a real publish (not a dry run) and that the token is single-use and invalidated after one use, which is the key behavioral caveat. It stops short of explaining failure modes for an invalid/expired token.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the action and adds the critical single-use caveat. There is no filler or duplicated information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool, the description covers the action, the token source, and token lifetime. It does not describe the expected return value or error behavior, but no output schema exists and the core invocation contract is adequately specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by explaining that the token comes from qzone_prepare_publish and becomes invalid after a single use. This gives the only parameter, confirmation_token, meaningful semantics beyond the plain string type in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the exact action: use the token returned by qzone_prepare_publish to execute a real publish (执行一次真实发布). This clearly distinguishes it from the preparation step and from other Qzone operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names qzone_prepare_publish as the source of the confirmation token, so the expected precondition is clear. However, it does not explicitly contrast this tool with qzone_publish or state when to prefer this two-step flow over direct publishing, so alternative routing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_deleteC

删除当前登录 QQ 自己发布的说说。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
created_atNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It does reveal that only the current user's own posts can be deleted, but it does not state whether deletion is permanent, what permissions are required, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. The key action and scope are front-loaded, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three parameters, no output schema, and no annotations, the description must explain parameter semantics and side effects. It only states the operation's purpose, leaving critical invocation details absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the roles of fid, appid, or created_at. An agent cannot determine which identifier selects the target post or why the defaults matter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, '删除' (delete), and names the exact resource: the current user's own 说说 (Qzone posts). This clearly distinguishes the operation from sibling tools like qzone_publish or qzone_like.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives, when not to use it, or prerequisites such as needing to be the author of the post. The agent is left to infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_get_postC

读取一条说说详情。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
hostuinYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The verb '读取' implies a read-only operation, but there is no mention of authentication needs, ownership restrictions, error behavior, or whether any side effects occur. This is minimal and not misleading, but far from transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line description is concise and front-loaded, but it is so terse that it under-specifies the tool. It lacks parameter semantics and usage context, making the brevity a deficiency rather than a model of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage, the description is far from complete. It does not explain the meaning of the required parameters, does not state what the response contains, and does not give any context about when this tool is appropriate. An agent would struggle to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters: fid, hostuin, or appid. The required identifiers are completely opaque, so an agent cannot reliably know what values to provide for fid and hostuin. The description adds no parameter-level meaning whatsoever.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: '读取一条说说详情' means read one post's details. This distinguishes it from qzone_list_posts, which implies reading multiple posts. However, it does not explicitly differentiate it from qzone_status, which could be a similar status-related operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool instead of siblings, no preconditions, and no exclusions. An agent can only infer that this tool fetches a single post, likely by fid, but no explicit context is given for choosing it over qzone_status or qzone_list_posts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_likeC

点赞或取消点赞一条说说。为兼容旧调用保留 unlike 参数。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
unlikeNo
hostuinYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the dual like/unlike behavior and that the unlike parameter exists for backward compatibility, which is meaningful. However, it omits side effects such as idempotency, repeated calls, permission needs, or what happens when unliking an already-unliked post.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that names the core operation and includes a relevant compatibility caveat. It wastes no words, though it could be more informative without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters, no annotations, and no output schema, the description is too sparse. It fails to explain the required parameters, the relationship to the sibling qzone_unlike tool, or the expected behavior of the unlike flag. An agent has limited information to invoke this tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only adds context for the unlike parameter. It does not explain the semantics of hostuin, fid, or appid beyond their schema titles. This leaves most parameters underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a specific action — liking or unliking a Qzone post (说说). It states both supported operations and adds a backward-compatibility note about the unlike parameter. However, it does not differentiate this tool from the dedicated sibling qzone_unlike, which weakens sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided for when to use this tool versus qzone_unlike. The phrase '为兼容旧调用保留 unlike 参数' hints that unlike is supported via a legacy parameter, but it never tells an agent when to prefer one tool over the other or whether qzone_unlike is the modern entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_list_postsA

读取 QQ 空间动态。hostuin=0 表示好友动态流;指定 QQ 号时读取其空间。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
hostuinNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It explains the hostuin behavior (friend feed vs. individual space) but omits any mention of pagination (limit/cursor), ordering, authentication, or rate limits. It does not contradict any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero fluff. The purpose is front-loaded, and the key parameter behavior is stated in the second sentence. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with 3 parameters and no output schema, it covers the core behavior but misses essential details about limit/cursor semantics and what the response contains. An agent might make incorrect assumptions about pagination and result shape, so completeness is only adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains hostuin explicitly but says nothing about limit (number of posts) or cursor (pagination token). These are left to inference, leaving 2 of 3 parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb '读取' (read) and resource 'QQ空间动态' (QQ Space posts), with explicit distinction between friend feed (hostuin=0) and a specific user's space. This differentiates it from siblings like qzone_get_post and qzone_status, which likely target single posts or statuses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use each hostuin mode (0 for friend feed, otherwise a specific QQ). It implies this is the tool for listing posts rather than publishing or liking, but does not explicitly name alternatives or state exclusions (e.g., 'use qzone_get_post for a single post').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_prepare_publishA

只生成发布预览,不会真的发说说;返回短时 confirmation_token,确认后调用 qzone_confirm_publish。

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesNo
contentYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the burden and discloses key behavior: it does not actually post a status and it returns a short-lived confirmation token. It stops short of explaining token expiration handling or auth, but these are secondary for a prepare operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler: it front-loads the non-destructive nature, states the returned token, and names the next tool call. Everything is relevant and compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter preparation tool with no output schema, the description covers the essential workflow and return token. It could mention token lifetime more specifically, but it is otherwise sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description adds no parameter-level meaning. The schema names 'content' and 'images' are self-explanatory, but the description does not clarify requirements like image count, format, or the optional/nullable default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it generates a publish preview rather than posting, and it names qzone_confirm_publish as the follow-up. This makes the tool's role unambiguous and distinguishes it from qzone_publish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly defines the tool as a preview-only preparation step and instructs the agent to call qzone_confirm_publish for confirmation. It does not enumerate all excluded siblings, but the workflow is clear enough for correct routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_publishA

直接发布 QQ 空间说说。images 支持多张本机图片绝对路径;如需发前确认,请改用 qzone_prepare_publish。

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesNo
contentYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It does convey that publication is immediate and non-confirmatory, but it does not mention side effects, irreversibility, authentication requirements, or failure behavior. This is useful but partial coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences carry the essential action, image parameter semantics, and alternative tool guidance. No filler or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation tool, the description covers direct usage, image path details, and the key alternative. The lack of return-value or error details is a minor gap given there is no output schema, but the core call is sufficiently specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description compensates by clarifying that images accepts multiple local absolute paths, which is meaningful beyond the schema's array-of-strings type. The required content parameter is not elaborated, but its purpose is already clear from its name and the tool's action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and resource: '直接发布 QQ 空间说说' (directly publish a Qzone status), which is specific and not a tautology. It also implicitly differentiates from the sibling qzone_prepare_publish by emphasizing it is the direct publish path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use qzone_prepare_publish instead if confirmation before publishing is needed, and the word '直接' signals this tool is for immediate publication. This gives an agent a clear when-to-use versus alternative decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_reply_commentC

回复一条说说评论。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
contentYes
hostuinYes
commentidYes
comment_uinYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without explaining side effects, permission requirements, whether the reply is posted immediately, idempotency, or error behavior. The mutation nature is implied but not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no redundant words and is immediately clear in its core action. However, it is arguably too terse relative to the complexity of the tool, trusting the agent to infer too much from a minimal phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with six parameters, no annotations, no output schema, and no parameter documentation. The description provides only the basic action and leaves the agent without enough information about required identifiers, return behavior, or constraints, making it inadequate for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description provides no parameter explanations. Parameter names like hostuin, fid, commentid, and comment_uin are only partially self-explanatory and would be ambiguous without QQ/QZone domain knowledge. The description fails to compensate for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('回复' / reply) and a specific resource ('一条说说评论' / a comment on a status), so an agent can understand the core action. It does not explicitly distinguish itself from the sibling qzone_comment, but the object being replied to is specific enough for basic purpose clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like qzone_comment, qzone_like, or qzone_delete. There are no conditions, prerequisites, or exclusions mentioned, so the agent must infer usage solely from the verb and resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_statusA

检查 QZone daemon、NapCat 登录凭证和绑定状态;不会返回 Cookie/CSRF。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly states it '不会返回 Cookie/CSRF' (will not return Cookie/CSRF), which is a meaningful security-related behavior beyond the schema. The verb '检查' implies a read-only operation, though it doesn't explicitly guarantee no side effects; overall this is good transparency for a zero-parameter status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, dense Chinese sentence that front-loads the core purpose and appends the most consequential limitation (no Cookie/CSRF return). Every element earns its place, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description adequately covers what the tool checks and what it deliberately hides for security. It doesn't describe the exact return format, but for a simple status probe the missing return details are minor and the explicit exclusions add important context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters in the schema, so schema coverage is trivially 100% and the baseline is 4. The description adds no parameter-specific meaning, but none is needed since the tool takes zero arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('检查' - check) and identifies exact resources: QZone daemon, NapCat login credentials, and binding status. It clearly distinguishes itself from siblings like qzone_publish or qzone_delete, which are mutation tools, by framing this as a status inspection tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a diagnostic/status check before or alongside other QZone operations, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. The sibling list helps, but the description itself offers no direct routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_unlikeB

取消点赞一条说说。

ParametersJSON Schema
NameRequiredDescriptionDefault
fidYes
appidNo
hostuinYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action, but does not mention side effects, whether it is idempotent, what happens if the moment is not currently liked, or any permission/authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant wording. It is extremely concise, though its brevity comes at the cost of missing important behavioral and parameter context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three parameters, no annotations, and no output schema, this minimal description is not sufficient for confident invocation. Essential context about the parameter roles and expected behavior is missing, so an agent would likely need to infer too much.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for explaining the parameters. It does not clarify the meaning of hostuin, fid, or appid beyond the opaque schema, and it adds essentially no value for param understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '取消点赞一条说说' clearly states the specific verb (unlike) and the resource (a QZone moment). It is directly distinguishable from the sibling qzone_like, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the verb '取消点赞' — it is used when the agent needs to remove a like from a moment. However, it does not explicitly mention when not to use it, nor does it reference the sibling qzone_like as the alternative for adding a like.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

qzone_visitorsC

读取当前 QQ 空间最近访客。

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
countNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It indicates a read operation but does not explain return shape, ordering of 'recent', pagination behavior, authentication requirements, or whether any side effects occur. This leaves an agent without important expectations beyond the one-line summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no filler, and the core action and resource are front-loaded. It is concise and easy to parse, though it may be too terse to carry the behavioral and parameter information an agent would benefit from.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description itself must provide enough context, but it only states that recent visitors are read. Missing response format, pagination semantics, and any session or permission context make it incomplete for a robust agent decision, even though the tool can be invoked with defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning for the 'page' or 'count' parameters beyond what their names and defaults already imply. It doesn't explain how pagination works, what each value controls, or what ranges are valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('读取') and a clear resource ('当前 QQ 空间最近访客'), uniquely identifying a visitor-retrieval operation. This is distinct from sibling tools focused on posts, publishing, likes, comments, and deletion, so an agent can tell them apart without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned. The read intent is implied by the verb, but the description doesn't say when an agent should choose this over sibling QZone tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv0.3.0
    • First observedqzone_comment
    • First observedqzone_confirm_publish
    • First observedqzone_delete
    • First observedqzone_get_post
    • First observedqzone_like
    • First observedqzone_list_posts
    • First observedqzone_prepare_publish
    • First observedqzone_publish
    • First observedqzone_reply_comment
    • First observedqzone_status
    • First observedqzone_unlike
    • First observedqzone_visitors

TDQS

B3.2/5.0

Scored across 12 tools

Disambiguation4/5

工具总体边界清晰,按帖子、点赞、评论、访客等资源区分明确。但 qzone_like 兼容 unlike 参数与独立 qzone_unlike 功能重叠,可能在取消点赞时造成选择歧义。

Naming Consistency4/5

大多数工具遵循 qzone_<动词> 的 snake_case 命名,整体可预测。但 qzone_status 和 qzone_visitors 是名词形式,qzone_delete 也缺少明确宾语,存在少量不一致。

Tool Count5/5

12 个工具覆盖状态检查、说说读写、点赞评论和访客信息,规模适中。即使包含 prepare/confirm 两步发布和独立 unlike,也没有臃肿感,每个工具都有明确用途。

Completeness4/5

覆盖了说说读取、发布、删除以及点赞、评论、回复、访客等核心社交动作,整体闭环较完整。但缺少更新说说、独立评论列表和删除评论等能力,属于可绕过的小缺口。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

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
    25
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for automatically publishing text, image, and video notes to Xiaohongshu (Little Red Book).
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    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

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/inzzou/qzone-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server