Excel MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Excel MCP Serverread the values from A1:C10 in C:\data\monthly_budget.xlsx"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Office MCP Server
A Model Context Protocol (MCP) server for reading, investigating, and editing Microsoft Office files โ Excel and PowerPoint. Originally forked from excel-mcp-server by Kazuki Negoro, this in-house fork has been substantially extended with PowerPoint support, VBA extraction, chart/defined-name/cross-sheet analysis tools, and SharePoint/OneDrive path resolution.
Features
Excel:
Read/Write text values and formulas, with pagination for large sheets
Create, copy, and delete sheets; create Excel Tables; format cell ranges (fonts, fills, borders, number formats)
Structural analysis: workbook triage, formula pattern fingerprinting, defined-name usage tracing, chart data extraction, error scanning, find & replace
VBA source extraction (works even without Excel installed, by parsing
vbaProject.bindirectly)Resolves SharePoint/OneDrive URLs to their locally-synced file paths
PowerPoint (๐ช Windows only):
List slides, describe presentation structure, read full slide content (text, tables, charts, images)
Triage a presentation's slide roles, search text across the deck, extract speaker notes
Export a slide as a high-quality PNG
๐ช Windows only (all file types):
Live editing via Excel/PowerPoint COM automation
Capture screen image from a sheet or slide
For more details, see the tools section.
Related MCP server: BachStudio Excel MCP Server
Requirements
Go 1.23+ (to build the server binary)
Windows is required for VBA/COM-backed tools (live editing, screen capture, PowerPoint support). Excel file reading/writing otherwise works cross-platform via excelize.
Supported file formats
Excel:
xlsx (Excel book)
xlsm (Excel macro-enabled book)
xltx (Excel template)
xltm (Excel macro-enabled template)
xlsb, xls (VBA source extraction only)
PowerPoint (Windows only):
pptx, pptm, ppt
Installation
This is an internal fork, built and run from source rather than installed from a public registry.
git clone https://dev.azure.com/hymans/Market%20Solutions/_git/office-mcp
cd office-mcp
go build -o office-mcp-server.exe ./cmd/office-mcp-serverThen point your MCP client at the built binary:
{
"mcpServers": {
"office": {
"command": "C:\\path\\to\\office-mcp-server.exe",
"env": {
"EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"
}
}
}
}excel_describe_sheets
Detailed per-sheet metadata: used range, Tables, PivotTables, paging ranges, and optional formula counts.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
includeFormulaCountsCount formula cells per sheet (slower). [default: false]
excel_list_sheet_names
Quick inventory: sheet index, name, used-range dimensions, and any defined names, in one lightweight call.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
excel_triage_workbook
Recommended first call on any unfamiliar workbook. Rapidly maps workbook structure without reading all cells: sheet groups classified by role (config, calc_engine, raw_data, results/summary), cross-sheet dependency map, defined-name count, and recommended next tool calls.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
excel_describe_workbook_full
One-call comprehensive workbook description combining sheet inventory, structural role classification, formula-family fingerprinting, cross-sheet dependency map, defined names, chart inventory, and VBA module summary.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
includeVBASourceInclude full VBA module source text in the output. [default: false]
excel_read_sheet
Read values from Excel sheet with pagination. Defaults: TSV output, formulas annotated (=EXPR โ value), empty cells/rows suppressed.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet name in the Excel file
rangeRange of cells to read in the Excel sheet (e.g., "A1:C10"). [default: first paging range]
showFormulaShow formula instead of value [default: true]
showStyleShow style information for cells [default: false]
pagingCellsLimitOverride the paging cell limit for this call
outputFormatOutput format for the returned data (e.g. TSV)
skipEmptySuppress empty cells/rows in the output
headRows/tailRowsRead only the first/last N rows of the range
useCachedValuesUse last-calculated cached values instead of recalculating (useful for
#NAME?/#REF!from missing add-ins)
namedRangeRead by a defined name instead of an explicit range
followReferences/followExternalReferencesTrace and inline values from formulas that reference other sheets/workbooks
forceRecalcForce Excel to recalculate before reading (COM backend only)
excel_screen_capture
[Windows only] Take a screenshot of the Excel sheet with pagination. Best for summary/dashboard sheets where visual layout and conditional formatting carry meaning.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet name in the Excel file
rangeRange of cells to read in the Excel sheet (e.g., "A1:C10"). [default: first paging range]
excel_write_to_sheet
Write values to the Excel sheet.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet name in the Excel file
newSheetCreate a new sheet if true, otherwise write to the existing sheet
rangeRange of cells to read in the Excel sheet (e.g., "A1:C10").
valuesValues to write to the Excel sheet. If the value is a formula, it should start with "="
excel_create_table
Create a table in the Excel sheet
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet name where the table is created
rangeRange to be a table (e.g., "A1:C10")
tableNameTable name to be created
excel_copy_sheet
Create a duplicate of an existing worksheet โ for backups before editing, sandboxing formula changes, or duplicating a template sheet.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
srcSheetNameSource sheet name in the Excel file
dstSheetNameSheet name to be copied
excel_delete_sheet
Permanently delete a worksheet from an Excel workbook. This cannot be undone.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameName of the sheet to delete
excel_format_range
Format cells in the Excel sheet with style information
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet name in the Excel file
rangeRange of cells in the Excel sheet (e.g., "A1:C3")
styles2D array of style objects for each cell. If a cell does not change style, use null. The number of items of the array must match the range size.
Style object properties:
border: Array of border styles (type, color, style)font: Font styling (bold, italic, underline, size, strike, color, vertAlign)fill: Fill/background styling (type, pattern, color, shading)numFmt: Custom number format stringdecimalPlaces: Number of decimal places (0-30)
excel_find_replace
Find and replace text within all formulas in an Excel worksheet โ useful for fixing broken references (e.g. a renamed sheet).
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameName of the sheet to perform find & replace in
findTextText to search for within cell formulas
replaceTextText to replace matches with
matchCaseWhether to match case when searching [default: false]
excel_search_formulas
Search for a substring or regex pattern within all cell formulas (and values) in a worksheet โ for structure discovery, parameter targeting, or debugging.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameName of the sheet to search
queryText substring or regex pattern to search for
useRegexTreat query as a regular expression [default: false]
caseInsensitiveCase-insensitive matching [default: true]
maxResultsMaximum number of matching cells to return [default: 200]
excel_get_formula_patterns
Extract the unique formula templates used in a worksheet, with row/column numbers normalised to # to reveal structural patterns (e.g. =B2*C2+D2 and =B100*C100+D100 collapse to =B#*C#+D#). The primary tool for understanding a sheet's structural logic before replicating it in another language.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameSheet to analyse
rangeRestrict analysis to a specific range
allSheetsScan every sheet and group structurally identical sheets together [default: false]
excel_count_errors
Count and locate Excel error values (#REF!, #VALUE!, #NAME?, #N/A, etc.) in a worksheet.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetNameName of the sheet to scan for errors
excel_get_defined_names
List all defined names (named ranges) in a workbook with their scope, formula/reference, and current resolved value.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
sheetFilterOnly return names whose scope or reference contains this string (case-insensitive)
includeValuesInline the actual cell values for every range name [default: false]
excel_find_named_range_usages
Search every sheet for cells whose formulas reference a specific defined name โ trace the full blast-radius before changing a named constant's value.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
nameThe defined name to search for (whole-word, case-insensitive)
maxResultsMaximum total matches to return [default: 500]
excel_get_chart_data
Extract detailed information about every chart embedded in an Excel workbook โ type, title, axis titles, legend, and every data series with its cell-range references. Works with .xlsx/.xlsm only.
Arguments:
fileAbsolutePathAbsolute path to the Excel file (.xlsx or .xlsm)
sheetNameOnly return charts on this sheet. Omit for all sheets.
excel_get_vba_code
[Windows only] Read VBA source code from an Excel workbook (.xlsm, .xlsb, .xls) โ all modules, class modules, user forms, and sheet/workbook code stubs. Works by parsing vbaProject.bin directly, without requiring Excel or special Trust Center settings.
Arguments:
fileAbsolutePathAbsolute path to the Excel file
moduleRetrieve a single named component (e.g. "Module1", "ThisWorkbook"). Omit for all modules.
pptx_list_slides
[Windows only] Quick inventory of all slides in a PowerPoint presentation โ index, title, layout type, and shape count.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file (.pptx, .pptm, .ppt)
pptx_triage_presentation
[Windows only] Recommended first call on an unfamiliar presentation. Classifies each slide by role (title, content, section_header, data, blank, image_heavy) and suggests which slides to read in detail vs capture visually.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
pptx_describe_presentation
[Windows only] Detailed metadata: slide dimensions, total slide count, per-slide summaries with shape types, text previews, table detection, and whether speaker notes exist.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
pptx_read_slide
[Windows only] Read the full content of a single slide โ all shape text, tables as tab-separated data, chart data, pictures as base64 PNG, shape metadata, and speaker notes.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
slideIndex1-based slide index
pptx_screen_capture
[Windows only] Export a PowerPoint slide as a high-quality PNG image, for visually complex slides where layout and design matter.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
slideIndex1-based slide index to capture
widthOutput image width in pixels, height auto-calculated. [default: 1280]
pptx_get_speaker_notes
[Windows only] Extract speaker notes from one or all slides.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
slideIndex1-based slide index. Omit or 0 for all slides with notes.
pptx_search_text
[Windows only] Search for text across all slides โ shape text, table content, and speaker notes.
Arguments:
fileAbsolutePathAbsolute path to the PowerPoint file
queryText to search for
caseSensitiveCase-sensitive search [default: false]
You can change the MCP Server behaviors by the following environment variables:
EXCEL_MCP_PAGING_CELLS_LIMIT
The maximum number of cells to read in a single paging operation. [default: 4000]
SHAREPOINT_SYNC_MAPPINGS
[Windows only] Manual overrides for mapping SharePoint/OneDrive URLs to locally-synced paths, in addition to mappings auto-discovered from the OneDrive sync engine registry.
Format: url1|path1;url2|path2 (semicolon-separated pairs, pipe-delimited).
License
Copyright (c) 2025 Kazuki Negoro
office-mcp-server is a fork of excel-mcp-server, released under the MIT License.
This server cannot be deployed
Maintenance
Related MCP Connectors
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Real Word and Excel for agents: open your .docx/.xlsm, read, propose, apply, get it back intact.
Real .docx and .xlsx files from structured data, with automatic Hebrew/Arabic RTL.
Open, inspect, filter, edit and convert xlsx and csv files from your AI chat. Processing is local.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides Excel file manipulation capabilities without requiring Microsoft Excel installation, enabling workbook creation, data manipulation, formatting, and advanced Excel features.10MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables creation, reading, and manipulation of Excel workbooks without Microsoft Excel installed, supporting formulas, formatting, charts, pivot tables, and data validation through multiple transport protocols.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, read, write, and manipulate Excel files (.xlsx, .xlsm) without requiring Microsoft Excel, including support for charts, pivot tables, data import/export, and professional formatting across Windows, macOS, and Linux.19 npm33MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading and writing MS Excel data, including values, formulas, sheets, tables, and cell formatting, with optional screen capture on Windows.8,110 npmMIT