Borrowing it
Nothing to install: this file belongs to GarryWhite109909/xmind-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/GarryWhite109909/xmind-mcp-server/main/.claude/skills/mcp-tool/SKILL.mdgit clone --depth 1 https://github.com/GarryWhite109909/xmind-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/garrywhite109909/xmind-mcp-server/mcp-tool)<a href="https://agentmods.dev/skills/garrywhite109909/xmind-mcp-server/mcp-tool"><img src="https://agentmods.dev/badge/skills/garrywhite109909/xmind-mcp-server/mcp-tool/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/garrywhite109909/xmind-mcp-server/mcp-tool"><img src="https://agentmods.dev/badge/skills/garrywhite109909/xmind-mcp-server/mcp-tool.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00048 | $0.00864 |
| Opus 5.5 | $0.00019 | $0.00346 |
| Sonnet 5.5 | $0.00010 | $0.00173 |
| Haiku 4.5 | $0.00005 | $0.00086 |
Grade A, and why
mcp-tool scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
改动 MCP 工具
工具分散在 5 个地方,漏一处就会出现“schema 里有、调用报未知工具”或 “工具组统计不对”。一次改完,再跑测试。
清单
- schema:
tool_schemas.py的build_tool_list()里加/删_tool(...)。- 描述写清楚触发场景和参数含义,不要写营销句。
required只放真正必需的参数。
- 工具组:
tool_schemas.py的TOOLSETS对应组里加/删名字。read/edit/style/export/maintenance必须覆盖全部工具且不重叠。 - handler:
XMindTools._handlers里注册同名方法。 方法签名统一async def _name(self, args: dict)。 - 只读标注:不改文件、不写盘的加进
tool_schemas.py的_READ_ONLY_TOOLS。 只读工具并发执行不加锁;写工具由XMindTools._write_lock串行。 - 破坏性标注:会删除/覆盖内容的加进
_DESTRUCTIVE_TOOLS。
改完同步:
tests/test_server.py里的工具总数(当前 55)。README.md的工具表和总数。- 如果有新参数,确认以
_path结尾的路径参数会被allowed_roots校验。
测试
.venv/Scripts/python.exe -m pytest -q
.venv/Scripts/ruff.exe check src tests
.venv/Scripts/python.exe -m pytest -q tests/test_tools.py -k toolset
现有守卫:
test_every_listed_tool_has_handler:schema 与 handler 必须一一对应。test_toolsets_cover_every_tool_exactly_once:分组覆盖全部且不重叠。test_read_only_flags_match_read_tools:read组必须是只读。test_build_tool_list_filters_by_toolset:过滤与非法组名行为。
新工具至少补一条行为测试:成功路径 + 典型失败(找不到节点、参数非法、 路径越界)。
设计约定
- 返回值可以是
str,也可以是list[TextContent | ImageContent]。 图片必须用_image_block(prepared),不要手写 base64。 - 编辑类工具统一支持
auto_save,用self._auto_save_msg(...)收尾。 - 错误不要抛给客户端裸异常:handler 内返回
❌ 原因,或让call_tool_status的异常分支统一包装。 - 参数校验先全部做完再写数据,保证失败时没有部分修改
(参考
_prepare_style_updates的原子性)。 - 工具名用
snake_case动词短语;已有命名风格优先,不要造同义词。
删除工具
删除是破坏性变更:
- 同步删 schema、分组、handler、read-only/destructive 集合、README、测试计数。
- 在 README / 变更说明里写清楚替代工具(例如 OCR 工具已移除,
图片改用
get_image/read_all)。 - 旧客户端仍可能传旧参数:能兼容就归一化(如
image_mode=ocr→inline), 不要直接 500。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 68 lines · 48 tokens per session scan A b7748490566b
mcp-tool is a skill published in the GitHub repository GarryWhite109909/xmind-mcp-server (0 stars, last pushed 2d ago), licensed MIT. It adds 48 tokens to every session and 864 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-09.
mcp-tool compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| mcp-toolGarryWhite109909/xmind-mcp-server | Skill | 0 | 2d ago | MIT | A | 48 | Claude Code |
| imagegenopenai/codex | Skill | 134k | today | Apache-2.0 | A | 113 | Codex |
| playwright-climicrosoft/playwright | Skill | 100k | today | Apache-2.0 | A | 19 | Claude Code |
| local-ai-agentsmicrosoft/ai-agents-for-beginners | Skill | 79k | 3d ago | MIT | A | 200 | Claude Code, Codex |
| browser-automationopenclaw/openclaw | Skill | 394k | today | MIT | A | 36 | Claude Code |
| systematic-debuggingobra/superpowers | Skill | 315k | 6d ago | MIT | A | 21 | Claude Code |
| next-cache-components-adoptionvercel/next.js | Skill | 143k | today | MIT | A | 95 | Claude Code |