Excel MCP Server for manipulating Excel files
Server has 6 tools with complete input schemas and descriptions. Tool names follow verb_noun convention (apply_formula, validate_formula_syntax, format_range, read_data_from_excel, write_data_to_excel, create_workbook). Descriptions are present but vary in quality, some are generic ('Create new Excel workbook') while others are more detailed. All parameters have type definitions and descriptions. However, output schemas are not documented in the visible code, and error handling is minimal (mostly generic exception catches). Tool annotations (destructiveHint, readOnlyHint) are correctly applied. No enum constraints on string parameters like border_style, alignment, number_format. Parameter descriptions lack format/constraint details (e.g., 'hex code' for colors but no validation pattern shown). The format_range tool has 14 optional parameters, which is high and may confuse LLM selection.
Apply Excel formula to cell. Excel formula will write to cell with verification.
Create new Excel workbook.
Apply formatting to a range of cells.
Read data from Excel worksheet with cell metadata including validation rules. Args: filepath: Path to Excel file sheet_name: Name of worksheet start_cell: Starting cell (default A1) end_cell: Ending cell (optional, auto-expands if not provided) preview_only: Whether to return preview only Returns: JSON string containing structured cell data with validation metadata. Each cell includes: address, value, row, column, and validation info (if any).
Validate Excel formula syntax without applying it.
Write data to Excel worksheet. Excel formula will write to cell without any verification. PARAMETERS: filepath: Path to Excel file sheet_name: Name of worksheet to write to data: List of lists containing data to write to the worksheet, sublists are assumed to be rows start_cell: Cell to start writing to, default is "A1"
Output schemas not documented. Tools return strings (e.g., 'Range formatted successfully') or JSON strings without declared structure. LLMs cannot plan downstream calls or extract typed fields.
format_range has 14 optional parameters with no enum constraints. border_style, alignment, number_format accept free-form strings. LLMs will hallucinate invalid values like 'super-thick' or 'diagonal'.
Error handling is generic. Exceptions caught and returned as strings ('Error: {str(e)}') without recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
create_workbook description is 27 characters ('Create new Excel workbook.'). Lacks context on when to use it, what it returns, or prerequisites (e.g., does filepath need to exist?).
Parameter descriptions lack format constraints. 'Font color (hex code)' does not specify format (#RRGGBB vs RRGGBB). 'Cell reference' does not clarify valid formats (A1, $A$1, Sheet1!A1).