Skip to main content
Glama
Kookerella-Ltd

Excel MCP Server (FsOpenXmlDsl)

Official

generate_xml

Convert an Excel workbook to schema-validated XML for inspection, transformation, or archiving. Returns data directly, so any language or plain shell can use it without .NET.

Instructions

Reads an existing Excel workbook and returns it as XML, validated against Kookerella.FsOpenXmlDsl's own embedded schema (Xml.xsd). A plain-data alternative to generate_fsharp_script/generate_csharp_script for a caller who wants to inspect, transform (e.g. via XSLT), or archive a workbook's structure without any F#/C# source involved - and without any .NET runtime on the caller's side either: the .NET work happens inside this server, so Python, JavaScript, or any other language can call this tool directly, and a human with no MCP client at all can get the same result via fsopenxmldsl-mcp convert <file> --lang xml from a plain shell. Unlike those two, this returns data, not a runnable script, so there is no output-filename parameter to control what a rebuild saves as. Covers the same worksheet/workbook-level feature set generate_fsharp_script does.

Input Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

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, and it does so well: it clarifies that the tool reads, not mutates; returns data, not a script; validates against a schema; and performs .NET work server-side. It also discloses the lack of an output-filename parameter. It omits edge-case behavior such as error handling on invalid files, but core call behavior is transparent.

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 essential purpose is front-loaded, followed by relevant differentiators, use cases, and a CLI equivalent. The description is longer than strictly necessary and contains some redundancy around the absence of F#/C# source and .NET runtime, but each sentence still contributes to tool selection or invocation.

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

Completeness4/5

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

For a one-parameter conversion tool with no output schema, the description covers the operation, return form, validation, sibling alternatives, and even a non-MCP invocation path. The remaining gaps are precise return encoding and failure behavior, which are minor given the tool's simplicity.

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 single path parameter is already fully described in the schema as an existing .xlsx/.xlsm file, so the baseline is 3. The description adds useful context about why there is no output parameter and about the tool's conversion behavior, but it does not substantially extend the meaning of the path parameter itself.

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 opening sentence states a precise conversion behavior: reads an existing Excel workbook and returns it as XML, validated against the embedded Xml.xsd schema. It also distinguishes itself from generate_fsharp_script/generate_csharp_script by clarifying that it returns data, not a runnable script.

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 generate_fsharp_script and generate_csharp_script as alternatives and identifies the intended use cases: inspection, transformation via XSLT, or archival without F#/C# source. It also states what the tool is not for—producing a runnable script—and explains the resulting absence of an output-filename parameter.

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