Skip to main content
Glama
Kookerella-Ltd

Excel MCP Server (FsOpenXmlDsl)

Official

generate_json

Convert an existing Excel workbook (.xlsx/.xlsm) into JSON to inspect, transform, or archive its structure. Works directly from Python, JavaScript, or any language without requiring .NET runtime.

Instructions

Reads an existing Excel workbook and returns it as JSON. The JSON-side equivalent of generate_xml, for a caller whose tooling speaks JSON rather than XML - same use cases (inspect, transform, or archive a workbook's structure without any F#/C# source, or any .NET runtime at all, on the caller's side) and the same worksheet/workbook-level feature set. Usable directly from Python, JavaScript, or any other language, and a human with no MCP client at all can get the same result via fsopenxmldsl-mcp convert <file> --lang json from a plain shell. Unlike generate_xml, there's no runtime JSON Schema validation built into the core library itself (see generate_json_schema's own doc string for why) - but generate_json_schema still returns the documented shape this produces.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesPath to an existing .xlsx/.xlsm file to convert to JSON.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool reads an existing workbook, that it is the JSON equivalent of generate_xml, and that there is no runtime JSON Schema validation built into the core library. However, it does not disclose what happens with unsupported file types, whether the output is a single JSON object or a stream, or any error behavior. The mention of the schema validation gap is useful but the behavioral profile is still incomplete.

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 dense paragraph that front-loads the core action and then adds context about equivalence, use cases, and the schema validation caveat. It is longer than strictly necessary, but every sentence adds useful context. The structure is acceptable, though a bit run-on.

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 single-parameter read-only conversion tool with no output schema, the description covers the input, the output format, the use cases, the sibling alternative, and a notable behavioral caveat (no runtime JSON Schema validation). It doesn't describe the exact JSON shape, but the description points to generate_json_schema for that, which is a reasonable delegation. The main gap is error behavior, but overall it is fairly complete.

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 100%: the only parameter, path, is described as 'Path to an existing .xlsx/.xlsm file to convert to JSON.' The description adds context about the file types and the conversion purpose, but it doesn't add meaning beyond what the schema already provides. Baseline 3 is appropriate.

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 ('Reads'), a specific resource ('existing Excel workbook'), and the output format ('returns it as JSON'). It also distinguishes itself from the sibling generate_xml by naming the JSON-side equivalence and the caller's tooling preference. An agent can tell this apart from generate_xml and read_workbook without opening schemas.

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 names the alternative (generate_xml) and the condition that selects it ('for a caller whose tooling speaks JSON rather than XML'). It also lists the same use cases (inspect, transform, archive) and mentions a shell fallback for humans without an MCP client. This is clear when-to-use guidance with an explicit alternative.

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