Excel Mcp

io.github.wesseltl由 GitHub 帳號 wesseltl 發布v0.1.2更新於 Oct 24, 2026

Read real, messy Excel files from an agent: multiple sheets, title rows, merged cells.

已驗證STDIO僅桌面檔案與儲存資料與分析

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理以確定性的方式讀取真實而凌亂的 Excel 活頁簿(多工作表、標題列、合併儲存格),取得精確資料。

可以做什麼
  • 列出活頁簿中的每個工作表及其大小
  • 以格狀預覽工作表頂端數列,檢視版面配置
  • 將工作表的實際資料表讀取為記錄,並回報表頭辨識來源與信心度
  • 將工作表的資料表匯出為乾淨的 CSV 文字
適用情境
適合助理需要回答使用者本機 .xlsx 檔案相關問題時,尤其是表格並非從 A1 開始、表頭上方有標題列或使用合併儲存格、直接貼進提示詞會讓模型用猜的情況。
執行需求
以本機 stdio 程序執行,從 PyPI 套件 excel-agent-mcp(含 mcp 額外相依)安裝,並以 excel-agent-mcp 指令啟動;需在 Claude Desktop、Cursor、VS Code/Copilot、Windsurf 或 Cline 等 MCP 用戶端中設定。未宣告帳號或 API 金鑰。可選擇設定 EXCEL_MCP_ALLOWED_DIR 將檔案存取限制在單一資料夾。
安裝前請注意
若未設定 EXCEL_MCP_ALLOWED_DIR,伺服器可讀取程序能觸及的任意 .xlsx 檔案,有需要請限定資料夾。合併儲存格的值是向下填補推論而來,並非逐格讀取;自動辨識的表頭在 header_confidence 偏低時可能出錯,依賴結果前請先核對。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Excel Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

excel-mcp

[Python] [MCP] [License]

Let your AI agent read real, messy Excel files. An MCP server that handles the things LLMs choke on: multiple sheets, title rows sitting above the actual table, and merged cells.

If you paste a spreadsheet into a prompt, the model has to guess where the data starts and what the merged cells mean, and it often gets it wrong. This reads the file properly with deterministic code, so the values are exact and the model never invents cell contents.

The problem it solves

A real spreadsheet almost never starts cleanly at cell A1:

A1:  Quarterly Sales Report 2024      <- title, not dataA2:  Generated by finance             <- note, not dataA3:  (blank)A4:  Region | Product | Units         <- the actual headerA5:  North  | Widget  | 120...

Ask an LLM to read that and it'll often treat the title as a column. read_table auto-detects that the header is on row 4 and returns clean records. Merged cells (a value spanning several rows) get forward-filled, so rows don't lose their category.

The tools it gives an agent

ToolWhat it does
list_sheets(path)Every sheet in the workbook, with its size
preview_sheet(path, sheet, rows)Top rows as a grid, so the agent can see the layout
read_table(path, sheet)The actual data table as records. Reports the decisions that could be wrong: header_source (explicit / auto-detected), header_confidence, and forward_filled_columns (values inferred from merged cells, not read)
sheet_to_csv(path, sheet)The table as clean CSV text

Getting started (Claude Desktop)

The fastest way to use this is with an MCP client like Claude Desktop. Three steps:

1. Install it

bash
pip install "excel-agent-mcp[mcp]"

2. Add it to your client's config

Claude Desktop's config lives here:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the server:

json
{  "mcpServers": {    "excel": { "command": "excel-agent-mcp" }  }}

3. Restart Claude Desktop. You'll see a tools icon appear, meaning the server is connected.

That's it. Now ask about any .xlsx file on your machine:

You:  What's in /Users/me/reports/sales.xlsx?
Agent (calls list_sheets, then read_table):  The workbook has one sheet, "Q1". The table starts on row 4 (the rows above  are a title). 3 rows: North/Widget/2400, South/Widget/3000, South/Gadget/2400.  Total revenue 7800.

The agent reads the real file instead of guessing, so the numbers are exact.

Restricting file access: to stop the agent reading anything outside one folder, set EXCEL_MCP_ALLOWED_DIR. See SECURITY.md.

Use it with other MCP clients

The same server works in any MCP client, only the config differs. Use excel-agent-mcp as the command.

Cursor — ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project). Same shape as Claude Desktop, and it hot-reloads (no restart):

json
{ "mcpServers": { "excel": { "command": "excel-agent-mcp" } } }

VS Code / GitHub Copilot — .vscode/mcp.json. Note the different key (servers, not mcpServers) and the required type. Tools only run in Copilot Agent mode:

json
{ "servers": { "excel": { "type": "stdio", "command": "excel-agent-mcp" } } }

Windsurf — ~/.codeium/windsurf/mcp_config.json (create it if missing). Same shape as Claude Desktop:

json
{ "mcpServers": { "excel": { "command": "excel-agent-mcp" } } }

Cline — add it from the extension's MCP settings panel in VS Code (command: excel-agent-mcp).

Understanding the output

read_table doesn't just return the data, it tells you how confident it is, so you can trust a clean parse and double-check a guess:

json
{  "columns": ["Region", "Product", "Revenue"],  "rows": [ ... ],  "header_row": 3,  "header_source": "auto-detected",  "header_confidence": 0.42,  "forward_filled_columns": ["Region"]}
  • header_source — "explicit" if you told it which row is the header, "auto-detected" if it guessed.
  • header_confidence — 0..1 for an auto-detected header. A low value means it was a close call; if the result looks off, pass an explicit header_row.
  • looks_clean + table_warnings — a verdict on the table as a whole (flags low header confidence, unnamed columns, mostly-empty tables), separate from the per-column signals below.
  • forward_filled_columns — columns whose values came from a merged cell. Those values are inferred (copied down to fill the block), not read cell-by-cell, so treat them accordingly.

The idea: surface the decisions that could be wrong, instead of handing back tidy-looking output that hides a guess.

Also usable from plain Python

python
from excel_mcp import reader
reader.list_sheets("report.xlsx")reader.read_table("report.xlsx", "Sales")     # {'columns': [...], 'header_source': ..., ...}reader.sheet_to_csv("report.xlsx", "Sales")

Tests

bash
python -m unittest discover -s tests     # builds its own messy xlsx, runs anywhere

License

MIT

來源:README.md,提交 87abfc9

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分