ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用MCP重构Excel自动化:从零搭建AI工作流

用MCP重构Excel自动化:从零搭建AI工作流 这一两个月我最大的感受是Excel 自动化终于不再是“写代码的人觉得简单、用表格的人觉得麻烦”的尴尬局面。以前处理几十个表格要么打开 VBA 编辑器写宏要么写个 Python 脚本然后改路径、改参数需求稍微一变整段逻辑就要推倒重来。我把 Excel 处理工作流接到 MCP 上之后体验完全变了——直接用自然语言告诉 AI 我要什么AI 自己调工具去读表、去筛选、去汇总、去写回结果。这篇文章我就把“开发自己的第一个 MCP”这件事从头到尾拆开讲MCP 是什么、为什么值得用它重构 Excel 工作流、Server 的架构怎么设计、完整代码怎么写、怎么接到支持 MCP 的客户端里以及我实测过程中踩过的一堆坑。1. 设计篇为什么是 MCP1.1 MCP 到底是什么协议MCP 的全称是 Model Context Protocol直译过来是“模型上下文协议”。它不是某一个具体的软件而是一套标准规定 AI 应用MCP Client如何发现、连接并调用外部能力MCP Server。一个 Server 可以向外提供三类东西Tools工具、Resources资源、Prompts提示词模板。平时我们最关心的就是 Tools本质上就是一个一个函数AI 根据对话内容决定“我要调用哪个函数、传什么参数”然后 Server 执行完把结果返回给 AI。用生活里的类比来说MCP 很像 USB 接口。USB 统一了鼠标、键盘、充电器、U 盘的连接方式你不用为每个设备单独设计一套接口协议MCP 则统一了 AI 连接文件系统、数据库、Excel、浏览器、各种 API 的方式。以前我们要让 AI 帮忙处理 Excel唯一的办法是让它生成一段 VBA 或者 Python 代码你再手动复制、粘贴、运行现在有了 MCPAI 可以直接调用你写好的函数自己把文件打开、把数据算完、把结果写回去。很多人第一次听说 MCP 会下意识问它到底算“软件协议”还是“硬件协议”这个说法不太准确。MCP 是应用层的通信协议和 HTTP、WebSocket 是一个层级的概念解决的是进程之间的消息格式、会话管理、工具发现、错误处理这些事。你甚至可以把 MCP Server 部署在远程服务器上通过 HTTP、SSE 或 WebSocket 对外提供服务本地客户端通过网络连过去。后面实操部分我会分别讲本地和远程两种连接方式。1.2 为什么我放弃 VBA 和纯 Python 脚本我早些年做 Excel 自动化无非两条路VBA 宏和 Python 脚本后来也试过 RPA。三个方案各有各的难受。VBA 最大的问题是“死”。宏写好了这个需求就固定了数据范围变一下、统计口径变一下、规则加一条就得重新进编辑器改代码。而且 VBA 强依赖 Office 环境别人电脑上宏被禁用、文件格式不支持立刻歇菜。更麻烦的是VBA 的学习门槛对业务同事来说基本是天花板他们只会双击运行代码逻辑完全黑盒。Python 脚本比 VBA 灵活了不少pandas 处理表格数据也确实方便。但脚本的交互方式是命令行的、参数化的意味着每次业务需求变一下你就得改一下参数、改一下路径然后在终端重新跑。跑出来的结果还要再导出成 Excel、再发给业务方。整套流程是断的没有一个人能一路走到底。RPA 呢模拟鼠标键盘这种思路在纯网页表单场景还行用到 Excel 上就显得笨重录制出来的脚本极脆表格窗口一换、弹窗一个流程就断了。RPA 更适合解决“系统之间没有接口”的问题解决不了“需求时时刻刻在变”的问题。MCP 的思路和上面三者完全不是一条赛道。它不追求把某个固定流程自动化而是把 Excel 的能力拆成一个一个可被调度的函数由 AI 来当那个“调度员”。你说“把华东区的销量按月汇总”AI 自己判断该读哪个 Sheet、按哪一列分组、算平均值还是求和然后连续调用工具完成。流程本身是 AI 在运行时动态编排的不是预先写死的。对我来说这才是“工作流”该有的样子。1.3 三个典型场景里 MCP 明显占优我自己实际使用下来下面三类场景用 MCP 重构效果最明显。第一类是简历筛选。HR 拿到手的往往是一个几百行的大 Excel每个候选人的信息摊在一行里项目经理要求“筛出有 Python 经验、工作年限超 3 年、本科以上”的候选人。传统的做法是打开 Excel 一个一个建筛选条件而且条件经常会变领导看一眼说“Python 不行得要 Java 也懂的”你又要重新建规则。用 MCP 就轻松多了AI 先读表头搞清楚有哪些列再调用筛选工具传条件结果直接以表格形式返回不满意就改一句话再来。第二类是月度销售汇总。多地分公司的报表格式不统一有的 Sheet 叫“销售明细”有的叫“1月数据”字段名也各说各话。以前我得写一个 200 行的 pandas 脚本专门处理这个合并逻辑某个月份结构一变脚本就崩。现在我把读表、读 Sheet 名、合并、统计、写回分别做成工具AI 在对话里按需组合遇到异常也能当场调整。第三类是数据清洗。全角半角混乱、日期格式不统一、空值处理策略多样这种需求说大不大说小不小。让 AI 写代码你还得把各种异常样本都描述清楚用 MCPAI 能自己反复读数据、尝试清洗、预览效果再一步一步确认。整个过程像在和一个懂 Excel 的实习生对话而不是在写指令集。2. 架构篇Excel MCP Server 拆解2.1 核心概念与 Excel 任务的对应关系设计一个 Excel MCP Server先把概念映射清楚。MCP 概念作用对应到 Excel 场景Server一个常驻的进程/服务整个“Excel 处理服务”ToolAI 可调用的函数读取 Sheet、筛选关键词、分组统计、写入结果Resource暴露给 AI 感知的数据源Excel 文件目录、文件清单Prompt预置的提示词模板定义“你是一个表格处理助手先看表头再操作”这类规则ClientAI 宿主应用Claude Desktop、Cursor、Cherry Studio 等一开始不需要把五类概念全部做满。最核心的是 Tool先把 Tool 做扎实AI 就能干活了。我建议首批工具控制在 5 到 7 个别贪多每个工具只做一件事功能多了容易参数打架AI 也容易混淆。2.2 工具设计的三个关键原则第一工具要单职责。读就是读写就是写筛就是筛。不要写一个“万能处理工具”让 AI 又传文件路径又传操作类型又传条件最后还是一堆 if-else。MCP 本来就是为了让 AI 做决策你把决策都吞进一个函数里反而不好用。第二函数的参数名和描述信息要极其清晰。AI 没有“看代码注释”之外的渠道了解你的函数它只能通过工具名、参数名、描述信息来判断怎么调用。所以描述里要写清楚“file_path 是绝对路径”“sheet_name 如果不填则读取第一个 Sheet”“keyword 是精确匹配还是模糊匹配”。把 AI 当成一个刚入职的实习生你越耐心它越靠谱。第三返回值要“为 AI 阅读而设计”。纯 pandas 的 DataFrame 直接 return 给 AI 是不行的因为 MCP 传输的是 JSONDataFrame 对象无法直接序列化。更合理的做法是返回 Markdown 格式的表格预览AI 读起来又快又准。而且要注意控制返回体量人工智能的上下文窗口就是它的工作台你不能把整栋楼的数据都搬到工作台上它会被淹死。2.3 数据返回与上下文控制这是我的血泪教训。第一个版本里我写了个 read_excel 工具直接把整个 DataFrame 全量返回。结果 AI 处理一张 2 万行的表一下子就被塞满了后续所有分析都无法进行对话直接瘫痪。后来我把读取工具改成“默认只返回前 20 行”同时在返回值末尾加一句提示“当前展示前 20 行如果还需要更多数据请调用 read_excel_sheet 并传入 row_count 参数”。这样 AI 就有了继续追问的线索。同样筛选结果默认只返回前 50 行聚合统计因为计算完之后行数很少才允许全量返回。上下文控制是 Excel 类 MCP Server 设计的头等大事宁可让 AI 多调一次工具也不能让它一次性吃撑。2.4 传输层选择stdio、HTTP 还是 WebSocketMCP 官方目前最常用的两种方式是 stdio 和 Streamable HTTP。stdio 模式是本地运行的方式MCP Client 启动一个子进程来运行你的 Server 脚本两者通过标准输入输出进行 JSON-RPC 通信。它的好处是无须处理端口、鉴权、防火墙配置一个命令就能跑适合开发期和单机使用。如果你的 Server 要部署到远程服务器供局域网甚至公网的客户端调用就要用 Streamable HTTP本质是 HTTP 加 SSEServer-Sent Events实现双向通信。再进一步若用 WebSocket 跑 MCP连接地址通常长这样wss://你的域名/mcp?tokenxxx用 token 做鉴权。现在不少云端的 MCP 服务就是给客户端一个带 token 的 wss 地址。但第一次上手我强烈建议先用 stdio别一上来就折腾网络部署环境变量、证书、鉴权都会成为变量调试起来很痛苦。3. 实操篇从零实现自己的 Excel MCP Server3.1 环境准备我的技术栈是 Python 3.11 FastMCP pandas openpyxl。FastMCP 是目前写 MCP Server 体验最好的 Python 框架它把复杂度都封装掉了定义工具就跟写 FastAPI 路由一样用装饰器就行特别适合快速成型。创建项目目录和虚拟环境这一步别偷懒。我知道有些人图省事直接全局 pip install后面的依赖冲突会让你后悔。具体命令mkdir excel-mcp cd excel-mcp python -m venv .venv # Windows 激活 .venv\Scripts\activate # macOS/Linux 激活 # source .venv/bin/activate pip install fastmcp pandas openpyxlpandas 负责表格处理openpyxl 是 pandas 读写 xlsx 文件的底层引擎必须一起装。如果后续要读写 xls 老格式还得补装 xlrd 和 xlwt。3.2 编写核心代码下面是一个可以直接用的基础版 Server。我把它拆成几个文件server.py 是主体。from pathlib import Path import pandas as pd from fastmcp import FastMCP mcp FastMCP(excel-mcp-server) # 建议改成你实际存放 Excel 文件的目录 BASE_DIR Path(./data) def _resolve_path(file_path: str) - str: 统一处理路径支持相对路径和绝对路径 p Path(file_path) if not p.is_absolute(): p BASE_DIR / p return str(p) mcp.tool() def get_excel_sheets(file_path: str) - list[str]: 列出 Excel 文件中的所有工作表名称file_path 传绝对路径或相对路径均可 xls pd.ExcelFile(_resolve_path(file_path)) return xls.sheet_names mcp.tool() def read_excel_sheet(file_path: str, sheet_name: str , row_count: int 20) - str: 读取 Excel 中某个工作表的内容返回指定行数的 Markdown 表格预览。 sheet_name 不传时默认读取第一个工作表。 row_count 控制返回行数建议不超过 100。 df pd.read_excel(_resolve_path(file_path), sheet_namesheet_name or None) return df.head(row_count).to_markdown()这里有两个设计意图需要解释。第一get_excel_sheets 返回 list[str]MCP 客户端会自动把它转成 JSON 数组AI 拿到手就能看懂有哪些 Sheet。第二read_excel_sheet 返回的是 Markdown 字符串不是 DataFrame。因为 AI 对 Markdown 表格的理解能力很强比 CSV 带引号那种格式更直观。不过注意pandas 默认的 read_excel 如果 sheet_name 传了空字符串会报错所以我用了sheet_name or None这个写法空字符串就自动变成 Nonepandas 会去读第一个 Sheet。这个细节写代码时容易漏。3.3 扩展工具关键词求和与条件筛选接下来是重头戏也是解决实际业务最频繁的工具。第一个是“同一列中统计含关键词对应数据求和”这是我从真实需求里提炼出来的客户有一张订单表B 列是产品分类C 列是金额领导想知道“分类里带‘智能’两个字的订单金额总和”。mcp.tool() def sum_by_keyword(file_path: str, keyword: str, match_column: str, sum_column: str, sheet_name: str ) - float: 在 Excel 指定列中筛选包含关键词的所有行然后对另一列做数值求和。 用于统计含某关键词对应的数据总和。 例如统计产品列包含‘智能’的订单金额match_column 传‘产品’sum_column 传‘金额’。 df pd.read_excel(_resolve_path(file_path), sheet_namesheet_name or None) mask df[match_column].astype(str).str.contains(keyword, naFalse) result float(df.loc[mask, sum_column].sum()) return result第二个工具是条件筛选。单关键词求和还不够很多场景是组合条件比如“部门等于销售部且业绩大于 10000”。我写了一个轻量级的条件解析器参数用分号分隔条件这样 AI 传入字符串即可不涉及复杂的嵌套 JSON兼容性更好。mcp.tool() def advanced_filter(file_path: str, conditions: str, sheet_name: str ) - str: 按条件表达式筛选 Excel 数据。 conditions 格式列名,运算符,值;列名2,运算符,值2 运算符支持 eq、ne、gt、ge、lt、le、contains。 例如部门,eq,销售部;业绩,gt,10000 返回筛选结果的 Markdown 表格最多 50 行。 df pd.read_excel(_resolve_path(file_path), sheet_namesheet_name or None) for cond in conditions.split(;): parts cond.split(,) if len(parts) ! 3: raise ValueError(f条件格式错误{cond}) col, op, value [p.strip() for p in parts] if op eq: df df[df[col].astype(str) value] elif op ne: df df[df[col].astype(str) ! value] elif op contains: df df[df[col].astype(str).str.contains(value, naFalse)] else: df df[df[col].astype(str).astype(float) float(value)] if op gt else df df df[df[col].astype(str).astype(float) float(value)] if op ge else df df df[df[col].astype(str).astype(float) float(value)] if op lt else df df df[df[col].astype(str).astype(float) float(value)] if op le else df return df.head(50).to_markdown()这个实现里我故意把 gt/ge/lt/le 用成链式 if看起来有点冗余但胜在逻辑直观。真正生产环境你完全可以封装成一个映射字典更简洁。但初版宁可保守也别用太花哨的写法后面调试有问题也容易定位。然后是分组聚合工具这是 Excel 里透视表功能的等价物mcp.tool() def summarize_by_group(file_path: str, group_by: str, value_column: str, agg: str sum, sheet_name: str ) - str: 按指定列分组对另一列做聚合统计。 agg 支持 sum、mean、count、max、min。 返回分组汇总结果的 Markdown 表格。 df pd.read_excel(_resolve_path(file_path), sheet_namesheet_name or None) result df.groupby(group_by)[value_column].agg(agg).reset_index() return result.to_markdown()最后是写回工具。处理完的数据最终要落盘。最简单的方案是让 AI 把数据组织成 JSON 数组传进来由 Server 转换成 DataFrame 后写入 xlsx。mcp.tool() def write_records(records_json: str, output_path: str, sheet_name: str Sheet1) - str: 把 JSON 数组格式的数据写入 Excel 文件。 records_json 示例[{姓名:张三,分数:89},{姓名:李四,分数:92}] output_path 建议传绝对路径目录必须存在。 import json records json.loads(records_json) df pd.DataFrame(records) df.to_excel(_resolve_path(output_path), indexFalse, sheet_namesheet_name) return f成功写入 {len(df)} 行到 {output_path}这里有必要解释为什么 records 不直接用“数组对象”这种更自然的参数类型。MCP 工具参数最终要映射成 JSON Schema复杂嵌套类型比如数组里套对象在各客户端的支持情况参差不齐。我用 JSON 字符串传Server 端自己解析兼容性最好。代价是 AI 生成的 JSON 偶尔会格式不对但它自己看到报错信息后通常能自纠正实测下来可接受。3.4 运行与调试代码写完后运行方式非常简单python server.pyFastMCP 默认以 stdio 方式启动当前终端不会有太多输出它是等客户端通过标准输入来“对话”的。调试阶段我最推荐用 FastMCP 自带的开发调试工具在项目目录下执行mcp dev server.py这个命令会启动一个本地 Web 调试界面里面能直接看到你注册了哪些工具、每个工具的入参结构、详细描述还可以手动传参数测试工具。我第一次把一个参数名写错了就是在那个界面里发现的比在客户端里翻日志高效得多。3.5 接入支持 MCP 的客户端调试通过后就是把 Server 接到真正的客户端里。下面以 Claude Desktop 为例MCP 客户端配置文件里加上这一段{ mcpServers: { excel-mcp: { command: python, args: [D:/projects/excel-mcp/server.py] } } }如果你是 Windows 且用了虚拟环境command 一定要填虚拟环境里 python.exe 的绝对路径比如{ mcpServers: { excel-mcp: { command: D:/projects/excel-mcp/.venv/Scripts/python.exe, args: [D:/projects/excel-mcp/server.py] } } }配置完成后重启客户端在对话里直接说“帮我读取 Excel 文件”就能看到 AI 在后台自动调用 get_excel_sheets、read_excel_sheet 工具那种感觉确实很奇妙。除了 Claude Desktop市面上不少支持 MCP 的对话客户端都可以按类似方式接入配置文件的字段大同小异。4. 实战篇两个可直接复制的工作流4.1 简历筛选工作流有个做 HR 的朋友给了我一张候选人的表格700 多行字段包括姓名、现居地、工作年限、技能标签、学历、当前岗位。按传统套路先打开 Excel用筛选按钮一列一列筛条件变一次重来一次前前后后要折腾半小时。用 MCP 的流程是这样的。先让 AI 读文件我帮我看一下 candidates.xlsx 里都有哪些 Sheet然后预览前 5 行数据。 AI调用 get_excel_sheets返回 [“候选人总表”]。接着调用 read_excel_sheet返回前 5 行的 Markdown 表格。AI 很快明白了数据结构接下来我提需求我帮我筛出技能标签里包含 Python 的候选人工作年限大于 3 年学历是本科或硕士。AI 会调用 advanced_filter 两次第一次条件传技能标签,contains,Python;工作年限,gt,3第二次在结果基础上再加学历,contains,本科或者类似的条件。整个过程 30 秒完成我直接在对话里看到筛选结果表。如果领导说“Python 不行也得看看会 Go 的”我不用重新建规则直接补一句“再加一组技能标签里包含 Go 的”AI 自己扩条件。这里有个经验advanced_filter 是链式执行的AI 可能会把多组条件合并成一次调用也可能会分多次调用。不要纠结它用哪种姿势只要结果对就成。工具设计的目的就是给 AI 足够的自由度。4.2 销售数据月度汇总工作流另一个高频场景是汇总多个分公司的月度数据。每个分公司发来一个 xlsx文件名格式是“华东区_3月.xlsx”“华南区_3月.xlsx”里面是销售明细。以前的做法是写一个 pandas 脚本遍历目录、读取、concat、再 groupby。现在同样不用写脚本。你只需要告诉 AI我把 data 目录下所有文件名包含“3月”的 xlsx 文件合并按销售员分组统计总销售额结果写回“3月汇总.xlsx”。AI 的思路大致是遍历目录看有哪些文件逐个调用 read_excel_sheet 读取用 write_records 把记录列表传给 Server。有人可能会问AI 一次读取多个文件数据量大怎么办答案是用 add 聚合而不是全量载入。如果每个文件本身就是几十个 Sheet、上万行数据建议给 Server 再加一个专门“读取并聚合”的工具让 pandas 在 Server 端完成合并只给 AI 返回最终的汇总表。这就是工具设计随场景演进的过程第一批工具和一个月后的工具肯定不一样。我在实践里给这个“合并汇总”场景补了一个工具mcp.tool() def merge_files(file_paths: str, group_by: str, value_column: str, agg: str sum) - str: 合并多个 Excel 文件file_paths 用分号分隔文件路径 按指定列分组对另一列做聚合返回汇总 Markdown 表格。 import glob frames [] for path in file_paths.split(;): path _resolve_path(path) # 支持通配符例如 data/*3月.xlsx for matched in glob.glob(path): df pd.read_excel(matched) frames.append(df) combined pd.concat(frames, ignore_indexTrue) result combined.groupby(group_by)[value_column].agg(agg).reset_index() return result.to_markdown()这个工具支持通配符AI 可以直接传data/*3月.xlsx这种模式Server 端用 glob 匹配文件。这让“读文件”从多步操作变成了单步工具调用效率和稳定性都上来了。5. 常见问题与排查技巧实录5.1 工具返回太长AI 突然不干活了症状AI 调用 read_excel_sheet 之后后面的分析逻辑突然变弱甚至卡在中间不动。原因上下文窗口被数据撑爆了。AI 的工作记忆就那么长你把几万行数据全部塞进去它没有余力做分析了。解法给所有可能返回大量数据的工具加行数上限。我的 read_excel_sheet 强制 row_count 默认 20最大允许 100advanced_filter 和 merge_files 的返回值也截断在 50 行。任何时候 AI 需要更多数据它会主动再调工具而不是一次性拉全量。你可以在工具描述里写明“如果需要更多数据请调用本工具并传更大的 row_count”给 AI 留一条延展路径。5.2 Excel 文件写入失败、文件被占用症状write_records 报 PermissionError或者文件明明写成功了但打开 Excel 时提示文件损坏。原因和排查步骤比较固定我整理成表现象常见原因处理办法PermissionError目标 Excel 文件正被 Excel 程序打开Windows 会锁文件关闭 Excel 中对应文件窗口再重试文件损坏写入过程中断或写入时用了不支持该格式的引擎删掉残留文件重新写入xlsx 别用 xlwt路径不存在输出目录不存在pandas 不会自动创建目录先 os.makedirs或在工具里补一段自动创建逻辑中文路径乱码Windows 控制台编码问题在代码文件第一行加 # coding: utf-8并用绝对路径我给 write_records 加了自动创建目录的逻辑这个小改动省了不少事out Path(_resolve_path(output_path)) out.parent.mkdir(parentsTrue, exist_okTrue) df.to_excel(out, indexFalse, sheet_namesheet_name)5.3 客户端连不上本地 Server症状客户端配置了 MCP Server但工具列表始终刷新不出来。排查顺序我建议这样先确认配置文件路径和参数没写错再看 command 是否指向了虚拟环境里的 python最后直接在终端手动跑一遍 server.py 看有没有报错。最常见的坑是 Windows 下面 command 写了 python但 PATH 里的 python 是 Windows 应用商店的占位程序一运行就弹商店。所以 project 内的虚拟环境 python.exe 绝对路径是最稳的。另外本地调试时优先用mcp dev server.py它能在浏览器里直接看到 Server 端日志和工具调用记录。比反复重启客户端、猜问题在哪一层要快一个数量级。5.4 AI 传参数总出错症状AI 调用工具时报参数校验错误比如把 file_path 写成了文件名不带路径或者把 row_count 传成了字符串。原因你的工具描述不够清楚AI 只能靠描述猜测参数含义。解法把每个参数的前置条件都写进描述里。比如 file_path 描述为“Excel 文件的绝对路径或相对 BASE_DIR 的路径相对路径示例 data/sales.xlsx”。同时Server 内部做好容错比如用_resolve_path统一处理路径就是很重要的兜底无论 AI 传绝对路径还是相对路径都能正确解析。你永远不要假设 AI 会按你心里想的格式传参你只能通过描述和兜底代码去逼近它。5.5 远程部署时怎么保证安全如果你把 Server 部署到远程用 HTTP 或 WebSocket 对外服务安全问题很容易被忽略。我见过有人把 Excel MCP Server 裸奔在公网上谁连上都能读你的文件很危险。生产环境至少要做到三件事第一服务只监听在内网接口不直接暴露公网第二如果必须公网访问前面加一层带鉴权的网关WebSocket 模式就用 token 参数做鉴权就是我前面提到的 wss://你的域名/mcp?tokenxxx 的形态第三Server 内部给文件访问加白名单只允许读取指定目录下的文件别的不给读。工具内部加白名单的做法很简单在 _resolve_path 里校验路径前缀就行def _resolve_path(file_path: str) - str: p Path(file_path) if not p.is_absolute(): p BASE_DIR / p p p.resolve() if not str(p).startswith(str(BASE_DIR.resolve())): raise PermissionError(f访问路径不在授权范围内{p}) return str(p)这段代码会拦截所有试图读取 BASE_DIR 之外文件的调用。虽然提示信息会告诉 AI“访问被拒绝”但它可以反过来提醒你是不是文件路径传错了。一举两得。6. 写在最后MCP 开发的一点体会代码跑通、第一个工具被 AI 调用成功的瞬间我没有特别激动反而是很长一段时间都在想同一件事MCP 真正改变的不是“自动化”而是人和工具的交互模式。以前是人学会了使用工具再教 AI 用现在是 AI 直接成为调度者人只需要描述目标。在 Excel 这个场景里这意味着业务同事终于可以用自然语言调动数据处理能力而不需要看懂 pandas 代码也不需要记住 VBA 语法。但也要泼盆冷水MCP Server 的质量取决于工具设计的质量。AI 很聪明但你给它的工具如果描述含糊、参数混乱、返回值过大它一样会翻车。把 AI 当成一个学习速度极快但没有常识的新同事你把工具文档写得多清楚它就能干得多漂亮。后续扩展方向其实还挺多给 Server 加上图表生成能力让 AI 统计完直接产出饼图柱状图导出 PNG或者接上数据库让 AI 把 Excel 数据清洗完直接入库再或者把多个工具组合成一个复合动作给 HR 推荐一个“一键简历筛选”的快捷指令。第一步永远是先把一个 Excel 处理 Server 跑通只要跑通了后面所有想法都是在这个框架上填砖加瓦。希望你也能很快拥有第一个属于自己的 MCP 工作流。
返回列表