Skip to main content
Glama

📊 duduExcel

CI PyPI Python Downloads License: MIT MCP

面向 AI Agent 的 Excel MCP 服务 —— 上下文高效 + 安全读写 + 中文场景 + 公式验证

English | 中文

其他 Excel MCP 会把"已取消"的行和"生效中"的行读成一模一样的字符串, duduExcel 保留删除线 —— 因为作者留下的格式,本身就是语义

pip install "duduexcel[analysis]"    # 或:uvx duduexcel
Agent ──MCP(stdio)──► duduExcel ──► openpyxl/pandas ──► .xlsx

为什么又一个 Excel MCP?

调研 GitHub 上 10+ 个同类项目后发现,它们分裂成两个对立阵营,没人同时做到"能写"和"不炸上下文":

阵营

代表

能写

上下文友好

问题

读写全能型

haris-musa、knorq

整表读进上下文就爆了

原子分析型

jwadow、jdatamunch

❌ 只读

改不了文件

方法论型

Anthropic 官方 xlsx skill

✅(靠写代码)

靠 Agent 自己写 Python,不稳定

duduExcel:三者合一 —— 服务端原子分析(省 token)+ 完整读写 + 内置 Skill。

Related MCP server: MCP Excel Server

✨ 能力(19 个工具)

工具

说明

探查

workbook_info

表清单、行列数、合并单元格数、隐藏行列数、内嵌图片数、文件大小

sheet_profile

列画像:类型/空值率/唯一数/Top值/统计(一次替代十几次调用)

分析

filter_count

条件计数(14 种运算符),只回传数字

aggregate

sum/mean/count/… 支持分组与过滤

top_n

排行榜,只回传前 N 行

读写

read_range

分页读取(默认 limit=200);含格式语义与隐藏处理

write_cells

批量写入,一次调用完成;= 开头即公式

验证

recalculate

公式重算 + 外链熔断(差异化,竞品多不支持)

scan_formula_errors

扫描 7 类公式错误

中文

apply_chinese_style

微软雅黑表头、中文列宽自适应、冻结首行、细边框

set_number_format

¥#,##0 / 0.0% / 0.0x 等内置格式

图表

add_chart

bar/line/pie/scatter

高级

create_pivot

静态透视汇总表(诚实标注不可交互)

add_conditional_format

数据条/色阶/阈值高亮/区间/重复值

list_conditional_formats

读取已有条件格式(写入+读取闭环)

compare_sheets

两表按关键列比对,只回差异摘要

join_sheets

两表关联(left/right/inner/outer),只回前 N 行

list_images

列出内嵌图片(零依赖扫描 xl/media/

安全

revert_last_write

回滚最近一次写入

⭐ = 差异化能力

🔑 汲取的设计(附来源)

设计点

来源

落地

一次调用替代 N 次试探

jwadow get_data_profile

sheet_profile

服务端原子操作(results, not rows)

jwadow

filter_count/aggregate/top_n

_meta.tokens_saved 自报节省

jdatamunch

每个分析工具的 _meta

结果附 Excel 公式(可复现)

jwadow

filter_count/aggregate/top_n

TSV 输出(便于粘回 Excel)

jwadow

aggregate/top_n

批量接口,禁止循环调用

knorq

write_cells

路径白名单 + 拒目录穿越

haris-musa

DUDU_EXCEL_ROOT

外链熔断、诚实截断、交付前验证

官方 recalc.py

recalculate

格式语义、隐藏处理、内嵌图片、原子保存

excel-vision-mcp

read_range 标记 / list_images / 原子保存

⚡ 30 秒快速体验

pip install "duduexcel[analysis]"

仓库自带演示文件 examples/demo.xlsx(内含删除线、黄底高亮、隐藏行、公式埋点)。 接上 MCP 客户端后试试:

读一下 examples/demo.xlsx 的需求清单,哪些条目已经取消了?

→ 返回带格式语义的视图,看得见"已取消"和"已批准"的区别

A3: 旧版导出 [S] | C3: 已取消 [S]          ← [S] = 删除线
A4: 司机点名      | C4: 待审阅 [HL:FFFF00]  ← 黄底 = 待审阅

更多示例见 examples/README.md

🚀 安装与挂载

pip install "duduexcel[analysis]"     # analysis 启用 pandas 分析工具
uvx duduexcel                          # 免安装运行

opencode(~/.config/opencode/opencode.jsonc):

"duduexcel": {
  "type": "local",
  "command": ["python", "-u", "-m", "duduexcel"],
  "enabled": true
}

Claude Desktop / Cursor / Cline:

{ "mcpServers": { "duduexcel": { "command": "uvx", "args": ["duduexcel"] } } }

改完配置需重启客户端生效。

🔄 第二轮调研补齐的盲区

调研 VOYAGER-Inc/excel-vision-mcp 后发现 openpyxl 生态的普遍盲区(duduExcel 原本也有): 内嵌图片、格式语义、隐藏行列全部丢失

修复前  [["旧版导出","已取消"], ["司机点名","待审阅"]]
修复后  A3: 旧版导出 [S] | B3: 已取消 [S]        ← [S]=删除线(已取消)
        A4: 司机点名 | B4: 待审阅 [HL:yellow]    ← [HL:]=黄底(待审阅)

已补齐:格式语义标记、隐藏内容智能处理、内嵌图片清单、原子保存、多目录沙箱。

🔒 安全

  • 多目录沙箱DUDU_EXCEL_ROOT 支持多个目录(Windows ;、其他 :),拒绝绝对路径与 .. 穿越

  • 原子保存:写临时文件成功后再替换,失败的写入永不损坏原文件

  • 备份与回滚:写前 .bak,异常自动还原,revert_last_write 可撤销

  • 外链熔断:拒绝不可逆的重算,除非显式 force=true

  • 本地优先:stdio 传输,文件不出本机

⚠️ 已知限制(诚实清单)

  • 不支持可交互透视表create_pivot 生成静态汇总表(数值已验证,如华东 365 / 华南 210), 但 openpyxl 无法创建真 PivotTable(实测 ws._pivots 为空),故不可点击交互。

  • 条件格式只能写入不能读取 —— 已更正:实测可以完整读回 (作用区域/类型/运算符/阈值/填充色/优先级,4 条规则全部读回)。 此前我照抄竞品 knorq 的 Known Limitations 却未亲自验证,这是错误的。

  • .xlsm:读取保留 VBA,写入不保证

  • 单次写入上限 10 万单元格

  • 重算已在本机打通验证(LibreOffice 26.8):实测 4 秒完成, =SUM(销售!C2:C7) 正确算出 575 并落盘。未装时明确降级,绝不静默假装成功。

    • ⚠️ 中文路径坑(已修复):LibreOffice 在中文路径下原地覆盖会失败 (SfxBaseModel::impl_store failed: 0x4c0c)。改为输出到纯 ASCII 临时目录再移回, 因此 E:\工作类\研发\ 这类路径也能正常重算。

🧪 测试

python tests/test_smoke.py          # M1 读写与分页
python tests/test_m2.py             # M2 服务端分析
python tests/test_m34.py            # M3 重算降级 + M4 中文样式与图表
python tests/test_m6.py             # M6 透视表/条件格式/多表关联
python tests/test_edge_cases.py     # 边界回归(防 BUG 复发)
python tests/test_m7.py             # M7 格式语义/隐藏/图片/原子保存
python tests/test_m8_recalc.py      # M8 真实重算(无 LibreOffice 自动跳过)
python tests/test_m9_conditional.py # M9 条件格式读取

9 个测试文件全部通过,另有 20 项 MCP 端到端验证(覆盖全部 19 个工具)。

🧠 踩过的坑

  1. openpyxl read_only=True 不加载行列维度 —— 隐藏检测会静默失效,改为解析 sheet XML

  2. mcp 2.x 丢弃 str \| None(PEP 604)标注的参数 —— 传了却不生效,改用 Optional[str]

  3. 图表 Reference(range_string="B2:B5") 要求 表名!A1:B2 —— 改用 range_boundaries()

  4. 重复 @mcp.tool() 注册同名函数Tool already exists 且行为异常

  5. 内部函数误加 @mcp.tool()_as_bool 曾成伪工具,污染列表)

  6. 构造结果后漏 rules.append(item) —— 遍历正常却无结果,属静默 BUG

📚 Skill 层

skill/duduexcel/
├── SKILL.md                  # 工具路由 + 5 条铁律 + 公式约束
└── references/
    ├── style.md              # 财务配色语义、数字格式码
    ├── formulas.md           # 函数白名单、_xlfn. 前缀、7 类错误
    └── charts.md             # 图表做法与保真度

合规:Anthropic 官方 xlsx skill 为 Proprietary(禁止衍生作品)。 本 Skill 仅借鉴其工程思想,文字与代码均独立撰写。

🗺️ 路线图

  • M1 核心 + 安全读写

  • M2 服务端分析 + token 自报

  • M3 公式重算 + 外链熔断

  • M4 中文样式 + 图表

  • M5 Skill 层

  • M6 透视表 / 条件格式 / 多表关联

  • M7 格式语义 / 隐藏 / 图片 / 原子保存

  • M8 真实重算闭环(含中文路径修复)

  • M9 条件格式读取

  • 可交互透视表(受 openpyxl 限制)

License

MIT © Shine8592

Available Tools

20 tools
add_chartA

插入图表(差异化能力:官方 xlsx skill 无图表指导,竞品 knorq 明确不支持图表)。

参数:

  • data_range:数据区域,如 "B2:B10"

  • chart_type:bar / line / pie / scatter(默认 bar)

  • categories_range:分类轴区域,如 "A2:A10"

  • title:图表标题

  • anchor_cell:图表左上角锚定位置(默认 E2)

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
titleNo
file_pathYes
chart_typeNobar
data_rangeYes
anchor_cellNoE2
categories_rangeNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It explains parameter defaults and anchoring behavior, but does not explicitly state side effects such as modifying the file, whether an existing chart is replaced, or what return value or confirmation is produced. It adds some context beyond the schema but not comprehensive behavioral disclosure.

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 well-structured with a clear purpose line and bulleted parameter explanations, making key details front-loaded and easy to scan. The competitive differentiation line adds some length but remains relevant to why this tool should be chosen.

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 7-parameter tool with no annotations and no output schema, the description covers most operational details but misses the required file_path and sheet parameters. It also does not explain any post-condition or confirmation behavior, leaving the description adequate but not fully complete for an agent needing to invoke the tool correctly.

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

Parameters3/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 adds useful meaning for data_range, chart_type, categories_range, title, and anchor_cell with concrete examples and defaults. However, it omits the required file_path parameter and the sheet parameter entirely, which are necessary for correct invocation.

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 tool inserts a chart and enumerates supported chart types, giving a specific verb and resource. It does not explicitly differentiate from sibling tools by name, but it does highlight its unique position relative to external skills/competitors.

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 provides clear context by noting that official xlsx skills lack chart guidance and the competitor does not support charts, implying this tool is the one to use when chart insertion is needed. It does not provide explicit exclusions or conditions for when not to use it, but the intended use case is reasonably clear.

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

add_conditional_formatA

添加条件格式(openpyxl 原生规则,真实生效)。

cond_type 可选:

  • data_bar:数据条(无需 value)

  • color_scale:色阶(无需 value)

  • greater_than / less_than / equal:需要 value

  • between:需要 value 与 value2

  • duplicate:高亮重复值(无需 value)

参数:

  • cell_range:作用区域,如 "C2:C100"

  • value / value2:阈值

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
valueNo
value2No
cond_typeYes
file_pathYes
cell_rangeYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states the tool uses openpyxl native rules and that they 'actually take effect,' which is helpful behavioral context. However, it doesn't disclose side effects like whether existing conditional formats are overwritten, whether the file is saved, or error conditions (e.g., invalid cell_range). It's adequate but not comprehensive.

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 well-structured with a clear list of cond_type options and a brief parameters section. It's concise and front-loads the core info. The only minor redundancy is the '参数' list repeating some info already in the cond_type section, but it's not wasteful.

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 the tool's moderate complexity (6 params, 5 cond_type values), the description covers the essential logic for each type and gives examples. It lacks details on return values (but no output schema exists) and edge cases, but for an agent to invoke it correctly with the required parameters, it's largely sufficient. A perfect score would require more on error handling or effects.

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 description coverage is 0%, so the description must compensate. It does well by explaining the purpose of each cond_type and linking them to the value/value2 parameters (e.g., 'between' requires value and value2). It also gives an example for cell_range. This adds significant meaning beyond the bare property names in the schema.

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 it adds conditional formatting with openpyxl native rules and lists specific rule types, which clearly shows the tool's purpose. It's distinct from sibling tools like list_conditional_formats (which lists existing formats) and set_number_format (which sets number formats). However, it doesn't explicitly differentiate from all siblings, but the verb 'add' and resource 'conditional format' are specific enough.

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 gives clear guidance on when each cond_type is appropriate (e.g., which types require value, value2). However, there's no explicit mention of when to use this tool versus alternatives like list_conditional_formats or revert_last_write, nor are there exclusions or prerequisites. The context is implied but not fully spelled out.

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

aggregateA

服务端聚合:sum / mean / median / min / max / count / std / var / nunique。

关键:聚合在服务端算好,只回传"每组一个数字"。 不要让模型自己遍历数据求和 —— 大数相加模型极易算错。

参数:

  • column:要聚合的列

  • op:聚合运算(默认 sum)

  • group_by:分组列(可多列),给出透视表式结果

  • filters:过滤条件(格式同 filter_count)

  • top_n:分组结果只返回前 N 组(按聚合值降序)

返回:聚合值或分组表,附 tsv(可直接粘回 Excel)与等价 Excel 公式。

ParametersJSON Schema
NameRequiredDescriptionDefault
opNosum
sheetNo
top_nNo
columnYes
filtersNo
group_byNo
file_pathYes

TDQS

A4.1/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 full behavioral burden. It discloses that aggregation is computed server-side, only one number per group is returned, and the output includes a TSV and equivalent Excel formula. It also surfaces a key failure mode (model-side summation). It doesn't explicitly state non-mutation or error behavior, but the main operational traits are covered.

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 well-structured with a concise overview, a critical usage warning, a bulleted parameter list, and a return-value note. Every section earns its place, and the most important behavioral guidance is front-loaded.

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 7-parameter tool with no output schema, the description covers the return format, key parameters, and an important usage caveat. It lacks detail on file_path/sheet and edge cases, but the information needed to call the tool correctly is largely present.

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 description coverage is 0%, so the description compensates by explaining column, op (with default sum), group_by, filters format, and top_n ordering. It leaves file_path and sheet unexplained, though those are largely inferable from context. The parameter explanations add meaningful value beyond the bare schema.

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 defines the tool as server-side aggregation over a column, listing supported operations (sum/mean/median/etc.) and the output shape ('每组一个数字'). It doesn't explicitly name sibling alternatives like filter_count or create_pivot, but the operation list and grouped-result behavior make the purpose clear.

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?

It gives explicit when-to-use guidance: use server-side aggregation rather than having the model iterate and sum data, warning that large-number addition is error-prone. It also references filter_count for filter syntax, which helps the agent reuse known format. It doesn't fully enumerate when to choose this over sibling tools, but the core usage context is present.

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

apply_chinese_styleA

套用中文场景样式:中文字体表头、自动列宽(中文按 2 字符宽)、冻结首行、细边框。

为什么需要它:通用规范常推荐 Arial/Times New Roman,但对中文表格并不适用。 本工具默认使用微软雅黑(屏幕阅读友好),并让中文列宽自适应(中文按 2 字符宽计算)。

参数:

  • header_row:表头行号(默认 1)

  • auto_width:是否自适应列宽(默认 True)

  • freeze_header:是否冻结表头(默认 True)

  • font_name:自定义字体,省略用微软雅黑

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
file_pathYes
font_nameNo
auto_widthNo
header_rowNo
freeze_headerNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does a good job: it discloses the default font (Microsoft YaHei), the two-character-width calculation for Chinese, and the effect set (freeze, border, etc.). It does not explicitly say whether existing cell styles are overwritten or whether the file is saved in place, but the mutating formatting behavior is reasonably clear for a style tool.

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 overview is front-loaded with the core effects, and the parameter list is compact. The rationale block is extra but supports correct usage; no sentence is wasted. It could be trimmed slightly by removing the repeated width explanation.

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?

The definition covers behavior and defaults well but lacks explicit guidance on the required file_path and sheet parameters and on what the tool returns or confirms. Given no output schema or annotations, these omissions leave an agent to infer part of the calling contract.

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

Parameters3/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 add meaning. It usefully documents four parameters (header_row, auto_width, freeze_header, font_name) and their defaults, but it omits the required file_path and the optional sheet parameter, so an agent is not fully told how to target the file/worksheet. This is partial compensation, not complete.

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?

States a specific action ('套用中文场景样式') and names the concrete effects: Chinese-font header, auto column width, frozen first row, and thin borders. This clearly distinguishes it from narrower siblings like set_number_format or add_conditional_format.

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 '为什么需要它' paragraph establishes the intended context: Chinese-table formatting where generic font guidance (Arial/Times New Roman) is unsuitable. It gives a clear when-to-use signal, though it does not explicitly name alternatives or state when not to use it.

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

compare_sheetsA

按关键列比对两个工作表的差异 —— 只回传差异摘要,不回传整表。

用途:版本对比、变更检测、对账。

返回:仅在表1 / 仅在表2 / 值有差异 三类统计, 以及最多 max_diff 条差异明细(超出会明确说明截断数量,以统计值为准)。

ParametersJSON Schema
NameRequiredDescriptionDefault
sheet1Yes
sheet2Yes
max_diffNo
file_pathYes
key_columnYes
compare_columnsNo

TDQS

A3.9/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 and does well by disclosing the output shape: three categories of statistics and up to max_diff detail rows, with explicit truncation behavior. It also signals that the tool is read-only in spirit by emphasizing that it returns only a summary rather than the full sheet.

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 compact and front-loaded with the core behavior, then gives use cases, then return details. Every sentence adds value and there is no redundant filler.

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 6-parameter tool with no output schema and no annotations, the description is fairly complete about output and truncation behavior. It is missing semantics for compare_columns, which could matter for agents deciding how to restrict the comparison, and it does not describe edge cases like missing keys.

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

Parameters3/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 adds meaningful semantics for max_diff (truncation limit) and key_column (comparison key), and '两个工作表' implies sheet1/sheet2. However, compare_columns is not explained, and file_path is left entirely to its name.

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 tool compares two worksheets by key column and returns only a difference summary, not the full table. The stated use cases (version comparison, change detection, reconciliation) further clarify its intended purpose. It does not explicitly name a sibling alternative, but the behavior is specific enough to distinguish it from tools like join_sheets.

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 '用途' section explicitly lists when to use the tool: version comparison, change detection, and reconciliation. This gives the agent clear context for choosing it, though it does not mention when not to use it or name alternatives such as join_sheets.

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

create_interactive_pivotA

Create an INTERACTIVE PivotTable (a real Excel PivotTable object).

Difference from create_pivot (static summary):

  • create_pivot : writes aggregated numbers into cells - fast but static

  • create_interactive_pivot: injects real OOXML pivot parts, so in Excel you can drag fields, expand/collapse and refresh (structure validated with LibreOffice)

Args:

  • rows / columns / values: row / column (cross-tab) / value fields

  • agg_func: sum / count / average / min / max (default sum)

  • page_fields: report filter fields

  • filters: row filters (same format as filter_count)

  • target_sheet: target worksheet (created if missing)

  • location: top-left anchor (default A3)

LIMITATIONS:

  1. Saving this file again with openpyxl (incl. this server's write_cells) will DROP the PivotTable - openpyxl cannot write pivot parts back. Generate it LAST.

  2. Not supported: field grouping, calculated fields/items, slicers, timelines, multiple sources, data model.

  3. LibreOffice recognizes it but interacts more weakly than Excel.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
valuesYes
columnsNo
filtersNo
agg_funcNosum
locationNoA3
file_pathYes
page_fieldsNo
source_sheetNo
target_sheetNoPivotTable

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full transparency burden, and it excels: it discloses that the tool injects real OOXML pivot parts, is validated with LibreOffice, lists unsupported features (grouping, calculated fields, slicers, etc.), and warns that LibreOffice interacts more weakly than Excel. This goes well beyond a typical description and preempts behavioral surprises.

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 well-structured with clear sections—difference from `create_pivot`, args list, and limitations—and it front-loads the key differentiator. Every sentence serves a purpose, and the length is appropriate for a complex tool with 10 parameters and significant caveats.

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 10-parameter tool with no annotations and no output schema, this description is remarkably complete: it covers purpose, alternatives, parameter meanings, and limitations. Yet it leaves `file_path` and `source_sheet` unexplained and does not mention what the tool returns (e.g., success message), which would be necessary for full standalone completeness.

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 must compensate. It does explain the meanings of rows/columns/values, agg_func, page_fields, filters, target_sheet, and location, which covers most parameters. However, it omits `file_path` and `source_sheet` entirely, leaving those to be inferred from the schema or context, which is a minor gap.

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 exactly what the tool does: 'Create an INTERACTIVE PivotTable (a real Excel PivotTable object).' It then contrasts this with `create_pivot` (static summary), making the purpose and distinction from the sibling tool immediately clear. The verb-resource pair is specific and unambiguous.

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 provides explicit guidance on when to use this tool versus `create_pivot`: use this when you need a real interactive Excel PivotTable with drag/expand/collapse/refresh, and `create_pivot` for fast static aggregations. It also gives a critical usage constraint—'Generate it LAST' because saving with openpyxl will drop the PivotTable—which prevents a common mistake.

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

create_pivotA

生成透视汇总表(写入新工作表)。

⚠️ 诚实说明:openpyxl 无法创建真正可交互的 PivotTable 对象, 本工具生成的是静态汇总表(分组聚合后写回),数值等价但不可交互。 需要可交互透视表时,请在 Excel 中基于结果表插入。

参数:

  • rows:行分组字段(可多列),如 ["部门"]

  • values:要聚合的数值列,如 ["销售额"]

  • agg_func:sum/mean/count/min/max(默认 sum)

  • columns:列分组字段(可选,做交叉表)

  • filters:过滤条件(格式同 filter_count)

  • target_sheet:结果表名(默认"透视表")

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
valuesYes
columnsNo
filtersNo
agg_funcNosum
file_pathYes
source_sheetNo
target_sheetNo透视表

TDQS

A4.3/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 full burden. It honestly discloses the key limitation: openpyxl cannot create interactive pivots, so the result is a static summary. It also notes that it writes to a new worksheet, implying non-destructive behavior. This is transparent and useful.

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 moderately long but every sentence adds value. The warning about interactivity is essential, and the parameter list is structured and readable. It is front-loaded with the main purpose and then provides details, making it easy to scan.

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 the tool's complexity and lack of output schema, the description covers the necessary operational details: it mentions writing to a new sheet, filter format (referencing filter_count), and the limitation of static output. It doesn't explicitly state return values, but since the tool's effect is writing a sheet, that is implicit. It is sufficiently complete for an agent to call correctly.

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 description coverage is 0%, so the description must explain parameters. It does so for rows, values, agg_func, columns, filters, and target_sheet, including examples and defaults. file_path and source_sheet are not explicitly explained, but they are self-explanatory from the tool's context. The description adds significant meaning beyond the bare 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 clearly states the tool generates a pivot summary table written to a new worksheet. It distinguishes itself from interactive pivots by explicitly noting it creates a static summary, which differentiates it from the sibling create_interactive_pivot.

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 provides clear guidance on when not to use it (when an interactive pivot is needed) and directs the user to Excel for that case. It doesn't mention other alternatives like aggregate, but the primary differentiator is covered. The context of writing to a new sheet is also clear.

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

filter_countA

按条件统计行数 —— 只返回计数,不返回数据行。

用途:回答"有多少条满足 X"这类问题。计数在服务端完成, 绝不会把成千上万行搬进上下文。

参数:

  • filters:条件列表,每项 {"column": "部门", "op": "==", "value": "研发"} 支持运算符:== != > < >= <= in not_in contains startswith endswith is_null not_null

  • sample:附带返回的样例行数(默认 3,仅用于确认过滤是否符合预期)

返回:matched_rows、matched_pct、少量样例,以及等价的 Excel COUNTIFS 公式 (可粘回表格动态更新)。

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
sampleNo
filtersNo
file_pathYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It discloses that the tool returns only a count, samples a small number of rows by default, reports matched_pct, and returns an Excel COUNTIFS formula. It also clarifies the sample's purpose is only to confirm filtering, which is helpful behavioral context beyond the schema.

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 well-structured and front-loaded: the core behavior appears first, followed by concise 用途/参数/返回 sections. Every sentence adds useful information without repetition 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?

Even without an output schema, it describes the return fields (matched_rows, matched_pct, samples, Excel formula) and explains the sample's confirmatory role. Minor gaps remain: no explicit guidance on file_path/sheet and no named alternative tools, but overall it is sufficiently complete for correct invocation.

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%, so the description must compensate. It adds strong semantics for filters, including the exact per-item object shape and the full list of supported operators, and explains the sample parameter's default and purpose. However, it does not document file_path or sheet, including that file_path is required, which leaves some parameters to be inferred.

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 gives a specific verb and resource: '按条件统计行数' (count rows by conditions), and explicitly scopes the tool to returning a count, not data rows. This clearly distinguishes it from siblings like read_range and top_n, which return row-level data or ranked rows.

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?

It states when to use the tool: to answer 'how many rows satisfy X' questions, and adds context that counting is done server-side so thousands of rows never enter the context. It does not explicitly name alternatives or give when-not-to-use exclusions, so it stops short of a 5.

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

join_sheetsA

关联两个工作表(类似 SQL JOIN),只回传前 limit 行结果。

参数:

  • on:关联键列名(两表都要有)

  • how:left / right / inner / outer(默认 left)

  • columns:只返回这些列(省 token),省略返回全部

  • limit:返回行数上限(默认 20)

ParametersJSON Schema
NameRequiredDescriptionDefault
onYes
howNoleft
limitNo
columnsNo
file_pathYes
left_sheetYes
right_sheetYes

TDQS

A4.4/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 full burden and does a good job: it discloses the row limit behavior, the column projection behavior, and the default join type. The phrase '只回传' implies a read-only result-returning operation, though it does not explicitly state that no file mutations occur.

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 compact and well-structured: one sentence summarizes the core behavior, followed by a clean bullet list of parameter semantics. Every line adds value and nothing is redundant with the schema.

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 7-parameter tool with no output schema and no annotations, the description covers the essential behavioral and parameter details. It could be more complete by explicitly describing the three file/sheet parameters and any edge-case behavior, but the current content is sufficient for an agent to invoke the tool correctly in most cases.

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 description coverage is 0%, so the description must explain the parameters. It does this well for `on`, `how`, `columns`, and `limit`, adding meaning about key requirements, defaults, and token-saving intent. The three location parameters (`file_path`, `left_sheet`, `right_sheet`) are left to inference, but their names make the meaning obvious.

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 operation: joining two sheets like an SQL JOIN and returning only the first `limit` rows. This distinguishes it from sibling tools such as `compare_sheets` and `filter_count` by using the SQL JOIN framing, so an agent can immediately tell what this tool does.

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 gives clear context for when to use the tool: when two sheets need to be correlated via a key column. However, it does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

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

list_conditional_formatsA

读取工作表中已有的条件格式规则(写入 + 读取闭环)。

用途:接手一张别人的表时,先看清它埋了哪些自动规则(哪些格子会变色/变红), 避免修改时破坏既有规则。

返回:规则条数与明细(作用区域 / 类型 / 运算符 / 阈值公式 / 填充色 / 优先级), 按优先级排序。

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
file_pathYes

TDQS

A3.8/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, and it does so well: it states the operation is read-only ('读取'), and discloses what is returned (rule count, range, type, operator, threshold formula, fill color, priority) and ordering. It does not discuss empty-result or error behavior, but for a read tool the key behavioral facts are present.

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 front-loaded with the core action, then gives a practical use case, then the return details. Every sentence earns its place; there is no fluff or repetition of schema information.

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?

The description compensates for the missing output schema by summarizing the returned fields and ordering. However, with no annotations and zero schema coverage, the lack of any guidance on the sheet parameter leaves a meaningful gap for an agent deciding how to invoke the tool.

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%, so the description needed to explain file_path and sheet, but it adds no parameter-specific meaning. It does not clarify that sheet is optional, what null means, or which worksheet is targeted when sheet is omitted.

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 opens with a specific verb and resource: '读取工作表中已有的条件格式规则' (read existing conditional-format rules in the worksheet). It also positions the tool as the read half of a write/read loop with add_conditional_format, which clearly differentiates it from its sibling.

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 gives a concrete when-to-use scenario: '接手一张别人的表时' (when taking over someone else's sheet), in order to see existing automatic rules before modifying them. It does not name alternatives or exclusions, so it is clear context rather than explicit routing.

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

list_imagesA

列出工作簿内的嵌图片(零依赖,直接扫描 xl/media/)。

为什么需要它:多数 Excel MCP 会静默丢弃所有内嵌图片, 于是贴在单元格里的流程图/截图永远到不了模型眼前。

返回:图片数量、文件名、大小、尺寸(PNG/JPEG/GIF/BMP 可从文件头解析)。 注意:只返回清单而非图片本体,避免 base64 撑爆上下文; 若需模型"看到"图片内容,请解压后交给多模态模型读取。

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden. It discloses the exact approach (zero dependencies, direct scan of xl/media/), what is returned (image count, filenames, size, dimensions, with header parsing for PNG/JPEG/GIF/BMP), and a deliberate design limitation (returns only a list, not base64 image bodies, to avoid context overflow). This is a transparent and complete behavioral contract.

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 moderately long but every sentence earns its place: core action, rationale, return fields, and caveat. It is front-loaded with the main purpose and uses line breaks to separate sections, making it easy to scan despite its length.

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 one-parameter, read-only listing tool with no output schema, the description covers the essential behavior, return fields, and the key limitation. It lacks error-handling details and explicit file-path expectations, but an agent has enough information to invoke it correctly in the intended workflow.

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

Parameters3/5

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

Schema description coverage is 0%, so the description should compensate for the sole file_path parameter. It indirectly clarifies that file_path points to a workbook whose xl/media/ folder is scanned, but it never explicitly defines the parameter, accepted file types, or path format. The compensation is partial at best.

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 opens with a specific verb and object ('列出工作簿内的嵌图片' – list embedded images in a workbook) and states the mechanism (scanning xl/media/). It clearly distinguishes this from the sibling tools, which deal with cell data, formatting, or aggregation, making it immediately identifiable as the image-listing tool.

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 explains why this tool exists ('为什么需要它' – because other Excel MCPs silently discard images), which tells the agent when this tool is valuable. It also gives an explicit when-not: if the model needs to see image content, unzip and pass to a multimodal model rather than relying on this tool. It does not name a specific sibling alternative, but the context and exclusion are clear.

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

read_rangeA

读取工作表数据,支持分页、截断、格式语义与隐藏内容处理。

重要:不要试图一次读完大表。默认 limit=200 行, 超出的部分通过增大 offset 分批获取(truncated 会告诉你是否还有剩余)。

参数:

  • sheet:工作表名,省略则用活动表

  • cell_range:Excel 区域,如 "A1:D50";省略则读整表(仍受 limit 约束)

  • offset / limit:分页,从第 offset 行开始取 limit 行

  • include_format:是否附加格式语义标记(默认 True)

  • include_hidden:是否读取隐藏行列(默认 False)

格式语义标记(汲取自 excel-vision-mcp —— 作者留下的格式是有含义的):

  • [B] 粗体 / [I] 斜体 / [S] 删除线(常表示"已取消/作废")

  • [HL:色] 底色高亮(常表示"待审阅/重点") / [C:色] 字体色

  • [M] 合并单元格 / [HIDDEN-REF] 已隐藏但因被公式引用而保留 注意:只在单元格真的用了格式时才附加,朴素表格不产生任何额外 token。

隐藏内容:默认跳过(作者隐藏通常表示不属于审阅内容), 但被可见公式引用的隐藏单元格仍保留并标记 [HIDDEN-REF], 且始终报告跳过了多少,绝不静默丢弃。

返回:grid(二维值)、cells(坐标→值)、formulas、format_markers。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sheetNo
offsetNo
file_pathYes
cell_rangeNo
include_formatNo
include_hiddenNo

TDQS

A4.1/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 and does well: it discloses hidden-row handling, format-marker semantics, defaults, and the fact that hidden cells referenced by formulas are retained and marked. Minor gap: it promises a truncated indicator and skipped-count reporting, but the listed return fields do not include those values.

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 well organized with a front-loaded warning, a parameter list, format-marker explanations, and a return summary. Despite its length, every section adds necessary behavioral or semantic value, and the structure makes it easy for an agent to scan.

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 7-parameter tool with no output schema, the description is unusually complete: it explains pagination, defaults, hidden-content behavior, format markers, and return fields. It is incomplete only in not listing truncated and skipped-count in the return summary and not documenting the required file_path parameter.

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 description coverage is 0%, and the description compensates by explaining sheet, cell_range, offset/limit, include_format, and include_hidden, including defaults and examples such as 'A1:D50'. It omits file_path, which is the only required parameter, leaving a small but notable gap.

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 it reads worksheet data with pagination, format semantics, and hidden-content handling, and the parameter list confirms the exact resource and scope. It is unambiguous from the name and siblings, though it does not explicitly differentiate itself from sibling read-like tools such as sheet_profile or workbook_info.

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?

It gives explicit practical guidance: do not read large tables in one call, use limit/offset, and rely on the truncated indicator to detect remaining rows. It does not explicitly name alternatives or say when to choose another sibling tool, so it stops short of a 5.

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

recalculateA

重算公式并扫描错误 —— 交付前必做的验证步骤(差异化能力,多数同类项目不支持)。

为什么需要它:openpyxl 写入的公式不带计算结果, 直接用 read_range 读会返回 None。重算能填上缓存值并暴露公式错误。

安全护栏(汲取官方 xlsx skill 的 recalc 思想):

  • 外链熔断:若工作簿引用了外部文件且缓存值已丢失, 重算会把它们变成 #NAME? 并永久删除外链(不可逆)。 此时本工具默认拒绝执行并列出风险项,确认接受损失才传 force=true。

  • 静默失败防护:比对文件指纹,若 LibreOffice 正常退出却没重写文件会明确报错。

参数:

  • timeout:超时秒数(默认 60,大工作簿请加大)

  • force:忽略外链风险强制执行(默认 False)

返回:total_errors、errors_by_type(含位置)、以及"重算通过≠结果正确"的提醒。 环境未装 LibreOffice 时会明确告知,不会静默假装成功。

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
timeoutNo
file_pathYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses key behaviors: it mutates the workbook (recalculates), can permanently delete external links irreversibly, can fail silently if LibreOffice exits without writing, and requires LibreOffice to be installed. It also warns about the false positive of 'recalculation passed' not meaning 'result correct'. This is comprehensive behavioral disclosure that goes beyond what annotations would normally cover.

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 long but every sentence serves a purpose. It front-loads the core purpose and then logically groups safety, parameters, and returns. While concise would ideally be shorter, the density of critical information justifies the length. No fluff.

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

Completeness5/5

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

Given the complexity of this tool (recalculation with external link risks, silent failures), the description is complete. It covers prerequisites (LibreOffice), side effects (permanent deletion), and error handling. With no output schema, it also describes return values in sufficient detail. An agent has everything needed to decide and invoke correctly.

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

Parameters5/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 fully compensates by explaining every parameter: timeout for large workbooks, force for overriding external link risks, and file_path implied as the target. It also describes the return format (total_errors, errors_by_type) even though there is no output schema, which is extra value.

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 that the tool recalculates formulas and scans for errors, and it explicitly distinguishes itself from sibling tools by positioning it as a pre-delivery validation step. The phrase '重算公式并扫描错误' is a specific verb+resource, and the description differentiates it from tools like scan_formula_errors and read_range, which is genuinely useful.

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 gives explicit context for when to use it: after writing formulas with openpyxl, because read_range would return None otherwise. It also explains when not to use it in risky situations (external links) and provides details about the force parameter as a conditional alternative. This is unusually thorough guidance.

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

revert_last_writeA

回滚最近一次由本服务执行的写入(用 .bak 恢复)。

当 write_cells 的结果不符合预期时调用它撤销。 只保留最近一次备份,连续写入时回滚的是最后一次。

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool restores from a .bak file, retains only the most recent backup, and that consecutive writes make it roll back the last write. This is meaningful context, though it does not cover edge cases like what happens if no backup exists or whether the rollback is destructive to concurrent changes.

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 short and front-loaded: it states the action and mechanism first, then gives the trigger condition and the backup-retention caveat. Every sentence earns its place with no filler or repetition.

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?

This is a low-complexity tool with one parameter and no output schema. The description covers what it does, when to use it, and a key limitation. However, it does not mention failure behavior when no backup exists, nor what the return/response signals after a rollback, so it is slightly incomplete.

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 the undocumented file_path parameter. It does not explain what file_path refers to (e.g., the file whose last write should be reverted, or the path to the .bak file). The parameter name is self-explanatory at a basic level, but the description adds no semantic value beyond 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 a specific verb ('回滚' / roll back) and resource ('最近一次由本服务执行的写入' / the most recent write performed by this service), and even mentions the .bak restore mechanism. It clearly differentiates itself from write_cells and the other sibling tools by identifying its exact operation: undoing the last write.

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 when to call it: '当 write_cells 的结果不符合预期时调用它撤销' (call it to undo when write_cells results are unexpected). It also warns about an important limitation: only the most recent backup is kept, so consecutive writes will roll back only the last one. This is clear usage guidance with no ambiguity.

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

scan_formula_errorsA

只扫描公式错误(#VALUE! / #DIV/0! / #REF! / #NAME? / #NULL! / #NUM! / #N/A),不重算。

用途:快速体检现有文件是否有坏公式。 返回 total_errors 与按类型分组的位置明细;位置列表超过 100 条时会 明确说明被截断数量(请以 total_errors 为准,不要以列表长度判断严重程度)。

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A4.3/5.0
Behavior4/5

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

With zero annotations, the description carries the full transparency burden and does well: it discloses that the tool only scans (no recalculation), returns total_errors with per-type location details, truncates the location list beyond 100 entries with an explicit truncated-count message, and warns that severity should be judged by total_errors, not list length. It doesn't address edge-case behavior (e.g., empty result format or missing file), which keeps it from a 5.

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 compact and well-organized: the key differentiator (scan-only, no recalc) is front-loaded in the first line, followed by purpose, then return semantics and truncation warning. Every sentence carries distinct information — error types, no-recalc clause, use case, return structure, and interpretation guidance — with zero waste.

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

Completeness5/5

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

Given there is no output schema, the description appropriately explains the return values (total_errors, grouped location details, truncation count) and how to interpret them correctly. For a single-parameter scan tool with no annotations, this is complete — the agent knows what file to pass, what will be returned, and how to avoid misreading truncated results.

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

Parameters3/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 file_path. It adds slight meaning by specifying '现有文件' (existing file), implying the target must already exist and is not modified. However, file_path is largely self-explanatory, and the description provides no format, path-type, or validation details, so the compensation is modest.

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 and resource: scan only formula errors, enumerating the exact error types (#VALUE!, #DIV/0!, #REF!, #NAME?, #NULL!, #NUM!, #N/A). It also explicitly distinguishes itself from 'recalculate' with '不重算' (does not recalculate), making its scope unambiguous relative to its siblings.

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 use case is clearly stated: '快速体检现有文件是否有坏公式' (quickly check whether existing files have bad formulas). The '不重算' phrase provides an implicit exclusion against the recalculate sibling, but it doesn't explicitly name alternative tools or state when NOT to use this one, so it stops short of full routing guidance.

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

set_number_formatB

设置数字格式。

number_format 可传内置名或自定义格式码:

  • cny → ¥#,##0(人民币整数)

  • cny2 → ¥#,##0.00

  • cny_dash → ¥#,##0;(¥#,##0);-(零显示为短横)

  • percent → 0.0%(注意:值必须存小数,存 0.15 显示 15.0%)

  • multiple → 0.0x(估值倍数)

  • int → #,##0;date → yyyy-mm-dd

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
file_pathYes
cell_rangeYes
number_formatYes

TDQS

B3.3/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 add useful behavioral details, such as the requirement that percent values must be stored as decimals (0.15 displays as 15.0%) and that cny_dash displays zero as a dash. However, it does not disclose whether existing formatting is overwritten, how invalid custom codes are handled, or what the function returns after success.

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 compact and front-loaded with the core purpose, followed by a clean mapping of format codes to their meanings. The list is easy to scan, though a small amount of structure could be improved by separating the int and date mappings onto their own lines.

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?

The description provides enough information to select valid values for the main parameter, but it omits important contextual details for a mutating tool: whether it saves to the file, overwrites existing formatting, handles custom format code syntax, or what it returns. Since there are no annotations and no output schema, these gaps make it less than fully complete.

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 description coverage is 0%, so the description must compensate. It thoroughly documents the number_format parameter, including exact code strings and display behavior, which is especially valuable because the schema has no enums or descriptions for that parameter. The other parameters (file_path, cell_range, sheet) are left implicit, but their names are reasonably self-explanatory in this spreadsheet context.

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 tool sets number formats, and the detailed list of built-in format codes clarifies exactly what kind of formatting is supported. It does not explicitly mention the target resource (file/cell range), but the schema and naming make that evident, and it is distinct from sibling tools like write_cells and apply_chinese_style.

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 versus alternatives. It does not mention exclusions, prerequisites, or how it relates to sibling tools like write_cells or apply_chinese_style, leaving the agent to infer the appropriate context.

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

sheet_profileA

查看工作表的列级画像:类型、空值率、唯一数、Top 值、数值统计。

这是开始分析任何表格前最该先调用的工具 —— 一次调用即可摸清全表 (列类型、哪些列有空值、数值范围、类别分布), 省掉反复试探的十几次调用,且不会把任何数据行塞进上下文。

参数:

  • sheet:工作表名,省略则用活动表(首行作为表头)

返回:每列的 profile(dtype/null_pct/unique/top_values/stats), 以及 _meta.tokens_saved(本次相比"读全表"节省了多少 token)。

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNo
file_pathYes

TDQS

A3.9/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 full burden, and it delivers meaningful behavioral detail: it promises not to put data rows into context, reports _meta.tokens_saved, and states that the first row is treated as the header. It does not explicitly say the operation is read-only or describe error behavior, but the key consumption-relevant traits are disclosed.

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 well-structured with a bold front-loaded directive, a short parameter list, and a return-value list. It is slightly longer than strictly necessary and repeats some field details, but every sentence contributes practical value and the layout aids scanning.

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?

Given no output schema and no annotations, the description does a good job of explaining return values (dtype/null_pct/unique/top_values/stats) and the token-saving metric. However, the required file_path parameter is not explained at all, and there is no mention of failure modes or read-only guarantees, leaving a meaningful completeness gap.

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 documents the sheet parameter well — omission uses the active sheet and implies first-row-as-header — but it completely omits file_path, which is the only required parameter. The '参数:' section misleadingly lists only one parameter, leaving a required argument 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?

The description opens with a specific verb and resource — '查看工作表的列级画像' (view column-level profile of a worksheet) — and enumerates the exact profile fields (类型、空值率、唯一数、Top 值、数值统计). The bold directive also positions it distinctly from siblings as the first tool to call before analysis, making its purpose and scope unambiguous.

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 gives an explicit when-to-use instruction: '开始分析任何表格前最该先调用的工具' (the first tool to call before analyzing any table), and justifies it by saying it saves a dozen probing calls. However, it does not name sibling alternatives or state when NOT to use this tool, so the exclusion guidance is left implicit.

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

top_nA

取排序后的前 N 行(默认降序),只回传这 N 行。

用途:排行榜类问题("销售额前 10 的产品")。 排序在服务端完成,只把 TopN 行回传,而不是把全表交给模型排序。

参数:

  • sort_by:排序列

  • n:返回行数(默认 10)

  • ascending:True 为升序(取最小的),默认 False 降序

  • columns:只返回这些列(省 token),省略返回全部列

  • filters:过滤条件(格式同 filter_count)

返回:带 rank 的行列表、tsv、以及等价的 Excel RANK 公式。

ParametersJSON Schema
NameRequiredDescriptionDefault
nNo
sheetNo
columnsNo
filtersNo
sort_byYes
ascendingNo
file_pathYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It explains that sorting happens server-side, that only N rows are returned rather than the full table, and that the output includes ranked rows, TSV, and an Excel RANK formula. It does not explicitly state read-only behavior, but the wording strongly implies a non-mutating query.

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 compact and well-structured: core behavior first, then use case, then parameter details. Every sentence adds value, and the formatting makes it easy to scan.

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 tool with no output schema and 7 parameters, the description covers the main behavior, use case, parameter semantics, and return format. It relies on a reference to filter_count for filter syntax, which is acceptable given the sibling relationship, and does not mention edge cases like n exceeding row count, but overall it is sufficiently complete.

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

Parameters5/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, and it does. It explains sort_by, n, ascending, columns, and filters, including defaults and the purpose of columns for token savings. The only unmentioned parameters are file_path and sheet, which are self-evident from 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 clearly states the tool's function: take sorted rows and return only the top N, with a specific default ordering. It also distinguishes itself from a full-table read by emphasizing that sorting is done server-side and only the TopN rows are returned, not the whole table.

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?

It explicitly identifies the intended use case: ranking/leaderboard questions such as 'top 10 products by sales'. It does not explicitly name alternative tools or state when not to use it, but the use-case framing gives clear contextual guidance.

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

workbook_infoA

查看 Excel 工作簿结构:工作表清单、每张表的行列数、合并单元格数、隐藏行列数、内嵌图片数与文件大小。

用途:开始处理任何 Excel 文件前先调用这个,用一次调用摸清结构, 避免为了知道有哪些表就把整张表读进上下文。

返回:文件路径、大小、活动表名、每个工作表的 name/rows/columns/merged_cells/hidden_rows/hidden_columns。

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

TDQS

A4/5.0
Behavior4/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 enumerates the return payload (file path, size, active sheet, per-sheet metrics) and explains that the tool avoids loading the full sheet into context, implying a lightweight metadata-only operation. It does not explicitly state read-only semantics, but the wording strongly implies it.

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 compact and well-organized: the first sentence lists the concrete outputs, and the second section adds usage rationale and return fields. Every sentence adds value and there is no filler or redundancy.

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 one-parameter inspection tool with no output schema, the description is nearly complete: it explains what the tool does, when to call it, and what it returns. It omits error/precondition details, but these are not critical for such a straightforward informational tool.

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

Parameters3/5

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

The only parameter, file_path, has no schema description and the description does not elaborate on its expected format or constraints. The parameter name is self-explanatory and the description references 'Excel 文件', providing some context, but with 0% schema coverage the description should have compensated more explicitly.

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 tool's function: inspect an Excel workbook's structure, listing sheets, row/column counts, merged cells, hidden rows/columns, images, and file size. This is a specific verb+resource. However, it does not explicitly differentiate itself from the sibling tool sheet_profile, which may provide overlapping per-sheet structural information.

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 advises calling this tool before processing any Excel file, giving a clear when-to-use instruction. It does not, however, name alternatives or state when not to use it, so it stops short of full routing guidance.

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

write_cellsA

批量写入多个单元格 —— 一次调用完成,不要用单格写入循环调用。

这是批量接口:请在一次调用里传入所有要写的单元格, 服务只做一次文件读写周期。逐格循环调用会慢很多且反复触发备份。

参数:

  • cells:列表,每项 {"cell": "B2", "value": "内容"}; value 以 "=" 开头会被当作公式写入(如 "=SUM(B3:B9)")

  • sheet:工作表名,省略则写活动表

  • create_sheet_if_missing:工作表不存在时是否新建(默认 False,避免误建表)

安全:写入前自动生成 .bak 备份 + 原子保存,可用 revert_last_write 回滚。 限制:单次最多 10 万个单元格。

ParametersJSON Schema
NameRequiredDescriptionDefault
cellsYes
sheetNo
file_pathYes
create_sheet_if_missingNo

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and delivers: writes are atomic, a .bak backup is created, revert_last_write can roll back, formulas are recognized by '=' prefix, and there is a 100k-cell limit. This goes well beyond the bare schema.

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 front-loaded with the batch mandate, then uses compact labeled sections for parameters, safety, and limits. Every sentence adds operational value; no filler.

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

Completeness5/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the description covers purpose, all non-obvious parameters, safety/rollback behavior, and hard limits. Nothing required to call it correctly is missing; return-value detail is not essential for a write operation.

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%, so the description must add meaning. It thoroughly explains cells (list of {cell, value} objects and formula behavior), sheet (defaults to active sheet), and create_sheet_if_missing (default False). Only file_path is not discussed, though its name/title makes it self-explanatory.

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 opens with a specific verb and resource ('批量写入多个单元格') and immediately frames it as a batch interface. It distinguishes itself from a single-cell write loop, so an agent knows exactly what the tool does and how it differs from the naive alternative.

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?

It explicitly instructs '请在一次调用里传入所有要写的单元格' and warns '不要用单格写入循环调用', giving a clear when-to-use and when-not-to-use. It also explains the rationale (single file read/write cycle vs slow repeated backups) and notes create_sheet_if_missing defaults to False to avoid accidental sheet creation.

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.

  1. 20 tool updatesv0.3.0
    • First observedadd_chart
    • First observedadd_conditional_format
    • First observedaggregate
    • First observedapply_chinese_style
    • First observedcompare_sheets
    • First observedcreate_interactive_pivot
    • First observedcreate_pivot
    • First observedfilter_count
    • First observedjoin_sheets
    • First observedlist_conditional_formats
    • First observedlist_images
    • First observedread_range
    • First observedrecalculate
    • First observedrevert_last_write
    • First observedscan_formula_errors
    • First observedset_number_format
    • First observedsheet_profile
    • First observedtop_n
    • First observedworkbook_info
    • First observedwrite_cells

TDQS

A3.9/5.0

Scored across 20 tools

Disambiguation5/5

Each tool targets a distinct operation: reading, writing, formatting, analysis, or structure inspection. Even similar tools like recalculate vs. scan_formula_errors and create_pivot vs. create_interactive_pivot are explicitly contrasted in their descriptions, making misselection unlikely.

Naming Consistency4/5

The majority follow a clear verb_noun pattern (write_cells, add_chart, compare_sheets, revert_last_write). Minor deviations like workbook_info, sheet_profile, aggregate, and top_n break the pattern slightly, but they are still readable and predictable.

Tool Count4/5

With 20 tools, the server covers a broad Excel domain including writing, reading, formatting, formula handling, charting, pivots, and data analysis. While slightly heavier than the typical 3-15 range, each tool serves a distinct purpose and the count feels justified for a comprehensive Excel MCP.

Completeness4/5

The tool surface is strong for reading, writing, analysis, and formatting. Minor structural gaps exist—there is no direct way to delete/insert rows or columns or merge cells—but these can be worked around with write_cells and are not core to the server's apparent emphasis on data analysis and formatting.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to create, read, and manipulate Excel files without requiring Microsoft Excel installation. Supports comprehensive spreadsheet operations including formulas, formatting, charts, pivot tables, and data validation.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to automate Excel file operations including workbook creation, worksheet management, and data manipulation. It provides a standardized interface for reading, writing, merging, and filtering cell ranges within Excel documents.
    4
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that turns Excel files into queryable databases, enabling AI agents to filter, aggregate, group, sort data and export results as new Excel files.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Exposes Excel operations (open/close files, read/write cells, create sheets, apply formulas, and run existing VBA macros by name) to AI agents like Claude Desktop or Claude Code via MCP.
    -