MCP-Persona:通过环境模拟在真实个人应用上评测 LLM 智能体的基准 MCP-Persona: Benchmarking LLM Agents on Real-World Personal Applications via Environment Simulation
首个面向真实个性化MCP工具的智能体评测基准,揭示SOTA模型仍难及格
前置知识
MCP(Model Context Protocol,模型上下文协议)
由 Anthropic 提出的开放标准协议,规范大语言模型与外部工具、数据源之间的通信。它通过 JSON-RPC 让 Server(工具提供方)和 Client(模型端)交换工具清单、参数与返回结果,使模型能动态发现并调用工具,被视作 AI 时代的通用接口。
全文围绕 MCP 工具构建评测,不懂该协议就无法理解 Server/Client 与函数调用机制。
Function Calling(函数调用 / 工具使用)
指 LLM 根据用户意图,从候选工具中选择合适的工具、构造合法参数并解析返回结果以完成多步任务的能力。它把模型从单纯对话扩展为能执行真实操作的智能体,是工具增强型 Agent 的核心机制。
理解工具调用流程才能看懂智能体如何在多步任务中选工具、传参、消化结果。
有状态环境模拟(Stateful Environment Simulation)
指构建一个能持久化存储、并随工具调用不断更新状态的沙盒环境。Agent 每次增删改查都会改变环境中的实体,后续调用能感知这些变化,从而支撑多轮、有依赖的真实任务,是个性化评测的关键基础设施。
本文最大贡献就是构造这类有状态模拟器,是理解方法与执行式评测的基础。
Self-Instruct(自我指令数据合成)
一种数据合成范式:用少量人工种子样本引导 LLM 自动生成更多同类样本,再过滤去重扩充数据集。本文借鉴它(称为 Self-FC)扩展函数调用池,无需大量人工标注即可覆盖多样的工具调用与错误模式。
Tool-Traverse 借鉴它来扩充函数调用池,是方法可扩展性的关键来源。
隐式上下文(Implicit Context)
指工具执行所必需、但用户指令里常被省略的信息,如同事的内部 user id、群组 chat id 等。它可从环境状态确定性推断,却是智能体失败的高发点,专门用于考核其「主动探索环境」的能力。
它直接对应任务的「模糊化」机制,是考核智能体探索能力的核心设计。
研究动机
MCP 已成为连接 LLM 与外部工具/数据源的事实标准,但现有评测基准几乎都聚焦通用的信息检索类工具,无法刻画「个性化应用」的真实难度。在 Reddit、小红书、飞书(Lark)、Slack 这类场景中,工具与具体用户账号、偏好、历史行为深度绑定,一个简单的「给主管宋科发请假消息」就需要先解析出平台内部 user id、再跨实体查找成员关系。现有工作要么用合成工具(如 tau-bench 的航空/零售),要么只覆盖无状态搜索(MCP-Universe、InfoMosaic-Bench),最接近真实的 ToolAthlon 也因账号权限问题不支持社交媒体和企业协作。更根本的是,真实部署个性化 MCP 服务器需要私密用户数据和大量人工配置,隐私顾虑又限制了数据共享,而要稳定模拟海量异构用户、保证评测公平性更是技术难题。这些障碍共同导致个性化 MCP 智能体研究长期空白。
本文的目标是本文要构建首个专门评测智能体在真实个性化 MCP 工具上表现的基准 MCP-Persona。具体目标有三:一是提出 Tool-Traverse 方法,在不依赖真实私密账号的前提下高保真地复刻飞书、Instagram、Notion 等 12 个个性化应用的服务器行为,使模拟工具的响应与真实服务器「难以区分」;二是用 Context-Tree 构造结构化、可持久化更新的用户上下文,支撑多轮有状态任务;三是用 Persona-Gen 流水线生成经人工核验的高质量任务,量化 SOTA 模型在隐式信息挖掘、多步状态维护、跨工具协同上的真实差距。最终交付 173 个人工验证任务、覆盖四类代表性场景的可复现评测平台。
与已有工作不同的是,本文的独特切入点是「以模拟换隐私、以遍历换保真」。别人要么回避账号绑定场景,要么手写 mock 规则导致行为失真。MCP-Persona 抓住了三个被忽视的关键点:真实工具的「正确流形」和「错误边界」同样重要——只读文档会幻觉出约束、漏掉错误码;个性化任务难在「隐式上下文」——用户不会把主管的 user id 写进指令,但环境里有;以及任务难度应来自真实模糊性而非人为刁难。它用真实函数调用遍历驱动 LLM 自动生成可执行代码,把「难复现的真实环境」转化为「可公开评测的模拟器」,填补了个性化与通用工具评测之间的鸿沟。
核心方法
可以把 MCP-Persona 想象成搭了一座「智能体训练场」:它不连真实账号,而是按真实应用的样子造出三个咬合的齿轮——工具、上下文、任务。工具齿轮用 Tool-Traverse:先给真实服务器(飞书、Instagram 等)喂一批人工种子函数调用,观察它返回什么、报什么错,再让 LLM 把这些行为规律「翻译」成可执行的 Python 代码作为本地模拟器;上下文齿轮用 Context-Tree,把每个用户的数据组织成 User→Calendar→Event 这样的树,并用真实小红书帖子等填充、敏感字段脱敏;任务齿轮用 Persona-Gen,从工具调用链反向拼装出指令骨架,注入真实上下文后再故意「模糊化」——删掉人类说话时本就不会写的内部 id,逼智能体自己去环境里找。三者咬合后,就能在不碰隐私的前提下公平评测个性化工具调用。
核心创新是「遍历真实调用驱动的代码化模拟」(Code-as-Simulation)。和「只读文档写 mock」或「人工编码规则」截然不同,它把模拟器的生成问题转化成「学习工具状态转移函数」$f_t : (C_{current}, x) \to (C_{new}, y)$:用真实服务器在成功种子调用和对抗性错误调用(类型不匹配、字段缺失、越界、语义冲突)上的响应作为信号,让 LLM 总结出验证逻辑、实体存在性检查和错误返回规则,自动生成完整 Python 内核。第二个关键点是「隐式上下文解耦」$S_{fuzz} = F(S_{inst} \setminus C_{imp})$:把真实用户不会说但环境里能查到的参数(如同事的 user id)从指令中剥离,专门考核智能体「主动探索环境」的能力——这正是个性化任务区别于通用搜索的根本难点。
方法步骤详情
完整流程分三大步。第一步 Tool-Traverse:人工精选 12 个个性化服务器(飞书、Instagram、Notion 等)并部署测试账号;对每个工具人工构造满足语义约束的种子调用 $x_{seed}$,正向遍历记录 $(t, x_{seed}, y_{seed}, \tau)$,再用 Self-FC(借鉴 Self-Instruct)扩充函数调用池,接着用 LLM 按四类错误做对抗扰动得到 $X_{fail}$ 并执行、判别验证后汇聚成池 $P_t$;随后 LLM 依据 schema、行为轨迹和上下文接口为每个工具生成模拟内核 $K_t$。第二步 Context-Tree:人工定义 User→Chat→Message 等层级,用枚举、自由生成、随机、真实内容四种方式填充节点并做引用链接。第三步 Persona-Gen:以「工具单元」为单位拓扑采样调用链(满足依赖、个性化、去重、连贯、真实五约束),用 $S_{proto} = H(L^*, D, P)$ 生成模板,注入上下文得 $S_{inst}$,剥离隐式上下文并模糊化得 $S_{fuzz}$,人工核验后得到 173 个任务。
技术新颖性
技术新颖性体现在三处。其一,首次把「遍历真实服务器」作为模拟保真的依据——既有基准多依赖合成工具或静态文档,无法暴露隐式约束与错误处理逻辑,而 Tool-Traverse 用对抗性失败诱导显式刻画工具的「决策边界」。其二,Code-as-Simulation 用 LLM 自动合成可执行代码而非手写规则,在跨多样工具时具备可扩展性,且能跨多轮持久化状态变化。其三,Context-Tree 把上下文建模为带外键引用的层级树,配合 CRUD 执行器,使「写操作」也能被自动评测——大多数工具基准只评读操作。与 tau-bench 的合成工具、AppWorld 与 PersonaBench 的合成数据相比,它首次在保护隐私的同时接入了真实应用的工具与真实内容。
实验结果
核心发现是:即便最强模型也远未「及格」。Table 3 上 13 个 SOTA 模型中,最好的 Claude-Sonnet-4.5 仅 38.66 Acc、10.40 SR-0.8、41.50 Exec-Acc,无一突破 50%;GPT-5 为 36.99 Acc,开源最强 Qwen3-Max 仅 27.54,Gemini-2.5-Pro 低至 20.68。按场景:Email 因操作简单、依赖链短最易;社交媒体和协作平台因要处理跨用户交互与隐式实体解析更难;内容管理因长文档编辑最差;跨服务器中 Hodgepodge 最难,准确率常为个位数。Tool-Traverse 保真度验证(Table 4):在飞书 50 条真实轨迹上达 94.0 Acc、93.8 F1、METEOR 0.870,而仅读文档的 Vanilla 只有 58.0 Acc、53.3 F1 且假阴性高,证明遍历真实调用对复刻错误边界至关重要。技能消融显示注入操作手册能提分,GPT-5 配合自研技能在飞书 Exec-Acc 从 64.29 升到 80.36;人机评判一致性达 91.5%(970 检查点仅 82 失配)。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 工具模拟保真度(飞书 Lark,50 条真实轨迹) | F1 (%) | 93.8(Tool-Traverse) | 53.3(仅读文档 Vanilla) | +40.5 个百分点,证明遍历真实调用至关重要 |
| 整体 Checkpoint 准确率 | Acc (%) | 38.66(Claude-Sonnet-4.5,最优) | — | 所有 SOTA 模型均低于 50%,个性化任务仍难 |
| 技能增强后的执行准确率(飞书子集) | Exec-Acc (%) | 80.36(GPT-5 + 自研技能) | 64.29(GPT-5 无技能) | +16.07 个百分点 |
| 跨服务器最难子集 Hodgepodge | Acc (%) | 多数模型个位数(6.25–37.5) | — | 跨工具协调与长依赖是最显著瓶颈 |
局限与改进
作者承认的局限包括:评测依赖 GPT-4o 作为 LLM 评判,虽人机一致性达 91.5% 仍有 8.45% 失配,主要源于模型能力不足和评判过度严格(惩罚了正确的替代工具用法);任务规模仅 173 条、个性化服务器 12 个相对集中,未必覆盖所有真实工作流;每个任务上限 20 轮交互,可能截断长程任务。我额外观察到:模拟器由 LLM 自动生成代码,其保真度仍依赖种子调用的覆盖度,若某错误分支未被遍历到则可能「漏网」(对抗诱导缓解但未消除);Context-Tree 的真实内容(如小红书帖子)经脱敏后可能丢失部分个性化语义;隐式上下文的「模糊化」由人工定义,主观性较强;模型版本随时间快速迭代,榜单时效性有限。
独立分析的弱点
第一个弱点是「保真度上限受限于遍历覆盖」:若真实服务器的某些异常分支未被种子调用或对抗扰动触发,模拟器会系统性遗漏,使智能体在真实环境的表现被高估——改进方向是引入形式化测试或基于覆盖率引导的灰盒测试自动补全边界。第二个弱点是「评判仍依赖单一 LLM」:GPT-4o 评判存在过度严格与能力盲区,可能误导模型排序——可引入多评判集成或对比式评判降低偏差。第三个弱点是「个性化难度的可控性不足」:任务难度由人工模糊化决定,难以精细调节——可设计可控的隐式上下文比例与依赖链深度,参数化生成不同难度档位。第四个弱点是「应用覆盖偏协作与社交」,缺少金融、医疗、IoT 等高风险场景——可拓展以检验安全性与公平性。
未来方向
作者明确提出的方向是把 MCP-Persona 作为可复现、保护隐私的试验台,推动「个性化感知」智能体在隐式接地、多步状态维护和跨工具协同上的进步。基于该成果可延伸的方向包括:将 Tool-Traverse 的代码化模拟与 GUI 代理结合,实现「API + 界面」双通道评测;把 Context-Tree 扩展为时序演化的用户画像,评测智能体对长期记忆与偏好漂移的适应;用对抗性失败诱导策略自动构造「红队」任务以发现智能体安全漏洞;以及将隐式上下文解耦机制反向用于训练数据合成,专门增强模型「主动探索环境」的能力,从而把评测发现直接转化为能力提升。
复现评估
复现友好度较高。论文已开源(https://github.com/wwh0411/MCP-Persona),Table 8 列出全部 24 个 MCP 服务器的官方仓库链接,附录 A 给出实验细节、Table 10 列出各模型版本,附录 B 给出人工标注指南与代码生成提示模板。主要难点在于:个性化服务器需自备测试账号与 token(飞书、Instagram 等需手动配置授权),这虽是隐私保护的必然代价却增加了部署成本;算力方面主要是 API 调用费用,Figure 3 显示 GPT-5 每任务约 $0.09,跑满 173 任务×13 模型的量级总体可控;模拟器代码由 LLM 生成,需逐工具验证;任务标注依赖人工核验,难以大规模扩展。整体复现属中等难度。
论文图表
给出 24 个 MCP 服务器(含 12 个个性化服务器)、单服务器与跨服务器任务分布、工具链分布,以及各服务器必需上下文长度的统计。展示了基准覆盖的广度与多样性。
帮助读者快速判断基准的规模、应用覆盖面和任务复杂度分布,是评估基准价值的关键。