Most spreadsheet tools read values and lose the logic that produced them. Parsing, compiling and evaluating formulas — and tracing dependencies between cells — means you can ask which inputs a total actually rests on, which is the question that matters when a number looks wrong. The parameter-suggestion tools are the other quiet win: real workbooks have merged headers and stray title rows, and getting the read wrong silently poisons everything after it.
A Python MCP server for Excel work, built on a two-engine architecture: pandas for analysis and a Go service using excelize for the file handling. It covers thirty-one tools spanning reading, writing, verification, charts, formula evaluation and data-quality cleanup.
- Read a workbook without guessing at it — read_metadata, read_excel_metadata, excel_read_enhanced and excel_info_enhanced, with encoding detection and structure analysis
- Get the read parameters right before reading — suggest_excel_read_parameters_tool, detect_excel_file_structure_tool and create_excel_read_template_tool, which is what saves you from a header row landing in the data
- Run your own code against a sheet — run_excel_code and run_code execute pandas inside a sandbox with a module blacklist, rather than limiting you to fixed operations
- Write back — excel_write_enhanced with formatting and styles, and batch_process_excel_files for a folder at a time
- Interactive charts as HTML — bar_chart_to_html, pie_chart_to_html, line_chart_to_html and excel_chart_enhanced
- Check the data — verify_data_integrity, validate_data_quality, comprehensive_data_verification_tool and batch_data_verification_tool
- Clean it — enhanced_data_quality_check, clean_excel_data, convert_character_formats, extract_cell_content_advanced, extract_multi_condition_data and merge_multiple_tables
- Excel formulas as first-class objects — parse_formula, compile_workbook, execute_formula, validate_formula and analyze_dependencies, so you can find out what a cell depends on rather than reading the formula bar
- excel_performance_comparison, for when you need to know which engine to use on a large file
Python, installed as chatexcel-mcp and launched as chatexcel-server. The dependency list is large — pandas, numpy, openpyxl, matplotlib, plotly, duckdb and more — so expect a substantial environment rather than a small binary, and a self-check command ships with it. Local files only; no account and no key. Code execution runs sandboxed with a module blacklist, but it is still code execution against your machine, so treat what you paste in accordingly.
One command — docker pull chatexcel/mcp-server:latest
