
APISIX-MCP:利用 AI + MCP 擁抱 API 智能化管理
But,面對一些數據規模灰常龐大,又要與不同業務部門頻繁協作的應用場景,常規的手動操作Excel恐怕是會把我們整個人搞崩潰。Excel純桌面應用客戶端是很難滿足高效、自動化、多端協同的需求場景,那么,怎么才能將Excel從本地工具升級為可編程、可集成的服務化平臺呢?Excel-MCP-Server(下面簡稱EMS)就是解決這個問題的一大利器,下面將從功能解析、技術實現到應用場景,全面解讀這一開源項目的方方面面。
Excel MCP Server是一款基于Python開發的服務器應用,它的神奇之處在于,支持用戶在不安裝Microsoft Excel的情況下,利用MCP協議提供對Excel文件的操作能力,并且支持工作簿的創建和修改,能夠管理工作表和單元格范圍數據處理。
同時支持處理格式和樣式,甚至支持圖表和透視表等高級功能,這就讓我們在日常工作中面臨自動化數據處理、報告生成以及數據分析等方面工作具有了一個神級助手,讓我們面對復雜的數據處理工作場景不再束手無策,被搞的焦頭爛額。
Excel MCP Server支持多維度數據管理工作,包括:
EMS采用分層架構,分為接口層、業務邏輯層、數據層:
其關鍵技術點在于,架構上采用異步任務隊列,通過Celery實現異步處理,避免長時間操作阻塞主線程,以及動態模板引擎,允許用戶上傳Excel模板,并通過占位符動態填充數據,支持條件格式與圖表生成。
Excel MCP Server的應用場景那是非常的廣泛,下面我們就拿幾個典型的使用場景舉例來說:
可以使用以下環境變量配置服務器:
EXCEL_FILES_PATH:將存儲Excel文件的目錄(默認:
./excel_files)
我們也可以通過不同的方式進行設置:
set EXCEL_FILES_PATH=C:pathtoexcelfiles
uv run excel-mcp-server
$env:EXCEL_FILES_PATH="C:pathtoexcelfiles"
uv run excel-mcp-server
export EXCEL_FILES_PATH=/path/to/excel/files
uv run excel-mcp-server
或者在Claude Desktop配置中:
{
"mcpServers": {
"excel": {
"command": "uv run excel-mcp-server",
"transport": "sse",
"env": {
"EXCEL_FILES_PATH": "/path/to/excel/files"
}
}
}
}
uv run excel-mcp-server
服務器將以SSE模式啟動并等待來自MCP客戶端的連接。在Cursor IDE中連接,啟動服務器后,連接到Cursor IDE中的SSE端點:
http://localhost:8000/sse
create_workbook(filepath: str) -> str
filepath:創建工作簿的路徑;返回:包含已創建文件路徑的成功消息;
create_worksheet(filepath: str, sheet_name: str) -> str
filepath:Excel文件的路徑;
sheet_name:新工作表的名稱;返回:Success message;
get_workbook_metadata(filepath: str, include_ranges: bool = False) -> str
filepath:Excel文件的路徑
include_ranges:是否包含范圍信息返回:工作簿元數據的字符串表示形式
write_data_to_excel(
filepath: str,
sheet_name: str,
data: List[Dict],
start_cell: str = "A1"
) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
data:包含要寫入的數據的字典列表;
start_cell:起始單元格(默認值:“A1”);返回:Success message;
read_data_from_excel(
filepath: str,
sheet_name: str,
start_cell: str = "A1",
end_cell: str = None,
preview_only: bool = False
) -> str
filepath:Excel文件的路徑;
sheet_name:源工作表名稱;
start_cell:起始單元格(默認值:“A1”);
end_cell:可選的結束單元格;
preview_only:是否僅返回預覽;返回:數據的字符串表示形式;
format_range(
filepath: str,
sheet_name: str,
start_cell: str,
end_cell: str=None,
bold: bool=False,
italic: bool=False,
underline: bool=False,
font_size: int=None,
font_color: str=None,
bg_color: str=None,
border_style: str=None,
border_color: str=None,
number_format: str=None,
alignment: str=None,
wrap_text: bool=False,
merge_cells: bool=False,
protection: Dict[str, Any] =None,
conditional_format: Dict[str, Any] =None
) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
start_cell:范圍的起始單元格;
end_cell:范圍的可選結束單元格;各種格式選項(請參閱參數);返回:Success message;
merge_cells(filepath: str, sheet_name: str, start_cell: str, end_cell: str) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
start_cell:范圍的起始單元格;
end_cell:范圍的結束單元格;返回:Success message;
unmerge_cells(filepath: str, sheet_name: str, start_cell: str, end_cell: str) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
start_cell:范圍的起始單元格;
end_cell:范圍的結束單元格;返回:Success message;
apply_formula(filepath: str, sheet_name: str, cell: str, formula: str) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
cell:目標單元格引用;
formula:要應用的Excel公式;返回:Success message;
validate_formula_syntax(filepath: str, sheet_name: str, cell: str, formula: str) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
cell:目標單元格引用;
formula:要驗證的Excel公式;返回:Validation result message;
create_chart(
filepath: str,
sheet_name: str,
data_range: str,
chart_type: str,
target_cell: str,
title: str = "",
x_axis: str = "",
y_axis: str = ""
) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
data_range:包含圖表數據的范圍;
chart_type:圖表類型(折線圖、條形圖、餅圖、散點圖、面積圖);
target_cell:放置圖表的單元格;
title:可選圖表標題;
x_axis:可選X軸標簽;
y_axis:可選Y軸標簽;返回:Success message;
create_pivot_table(
filepath: str,
sheet_name: str,
data_range: str,
target_cell: str,
rows: List[str],
values: List[str],
columns: List[str] = None,
agg_func: str = "mean"
) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
data_range:包含源數據的范圍;
target_cell:放置數據透視表的單元格;
rows:行標簽的字段;
values:值的字段;
columns:列標簽的可選字段;
agg_func:聚合函數(sum、count、average、max、min);返回:Success message;
copy_worksheet(filepath: str, source_sheet: str, target_sheet: str) -> str
filepath:Excel文件的路徑;
source_sheet:要復制的圖紙名稱;
target_sheet:新工作表的名稱;返回:Success message;
delete_worksheet(filepath: str, sheet_name: str) -> str
filepath:Excel文件的路徑;
sheet_name:要刪除的工作表的名稱;返回:Success message;
rename_worksheet(filepath: str, old_name: str, new_name: str) -> str
filepath:Excel文件的路徑;
old_name:當前圖紙名稱;
new_name:新工作表名稱;返回:Success message;
copy_range(
filepath: str,
sheet_name: str,
source_start: str,
source_end: str,
target_start: str,
target_sheet: str = None
) -> str
filepath:Excel文件的路徑;
sheet_name:源工作表名稱;
source_start:源范圍的起始單元格;
source_end:源范圍的結束單元格;
target_start:開始粘貼單元格;
target_sheet:可選的目標工作表名稱;返回:Success message;
delete_range(
filepath: str,
sheet_name: str,
start_cell: str,
end_cell: str,
shift_direction: str = "up"
) -> str
filepath:Excel文件的路徑;
sheet_name
:目標工作表名稱;
start_cell:范圍的起始單元格;
end_cell:范圍的結束單元格;
shift_direction:移動單元格的方向(“向上”或“向左”);返回:Success message;
validate_excel_range(
filepath: str,
sheet_name: str,
start_cell: str,
end_cell: str = None
) -> str
filepath:Excel文件的路徑;
sheet_name:目標工作表名稱;
start_cell:范圍的起始單元格;
end_cell:范圍的可選結束單元格;返回:Validation result message;
以上Excel MCP服務配置流程以及相關工具講解就介紹到這里,感興趣的小伙伴可自己動手驗證。
Excel MCP Server作為一個專注于Excel數據處理的開源工具,無論是企業用戶,還是我們個人用戶,它都為我們提供了一個高效、靈活的解決方案,在自動化數據處理、高效數據分析,還是靈活的系統集成方面,它都能滿足用戶的需求。但是,想要嫻熟地把這個工具玩兒轉起來,大家還是需要投入一定的時間和精力進行學習和配置。希望這篇文章能夠幫助你更好地了解Excel MCP Server,如果大家有任何疑問或想法,歡迎在評論區留言交流!
友情提示:以上內容均為作者本人學習分享,旨在與大家學習交流,不代表任何官方平臺觀點(僅供學習參考),不構成任何工作建議、指導,請大家謹慎評估技術可行性后再做決策,感謝您對技術探索精神的理解與支持!
原文轉載自:https://mp.weixin.qq.com/s/yrDz5qTwj1RANgRnEmiJEw