网易首页 > 网易号 > 正文 申请入驻

给AI装一个退款工具,为什么钱一分都动不了?

0
分享至

一个MCP服务器,本质上是把内部能力暴露给语言模型调用的接口。问题在于,调用方是模型——它可能被读到的文本带偏,可能理解错,也可能单纯犯糊涂。所以"能跑通"不是标准,"跑通之后,一个失控的agent最多能造成的破坏很小、而且看得见",才是标准。

这篇拆解用TypeScript搭一个小型MCP服务器,暴露两个内部能力:订单查询和退款申请。安全模式从第一行代码就嵌进去——严格的输入schema、默认只读、写操作只生成待审批请求、每次调用留审计日志。

MCP服务器到底暴露什么

一个MCP服务器可以向客户端提供三类东西:工具,即模型可以调用的函数,带JSON Schema描述输入,输出可选;资源,即客户端可以加载进上下文的只读数据,用URI寻址;提示模板,即用户可以调用的可复用提示词。

通信走JSON-RPC,两种标准传输方式二选一:stdio,客户端把你的服务器作为本地子进程拉起;或者Streamable HTTP,服务器作为远程服务运行。开发测试阶段先用stdio最快,远程部署要改什么后面再说。

只读工具的几个刻意选择

订单查询工具注册时,输入schema里给orderId加了正则约束,格式必须是ORD加六位数字。这不是建议,是契约——SDK会在处理函数执行前按schema校验输入,模型没法传星号、SQL片段或者别人的邮箱进来。

输出做了投影。只返回四个字段:订单号、状态、总金额、商品件数。不返回带地址和支付元数据的完整订单记录。你返回什么,什么就进入模型的上下文,再从这里可能流向用户或其他工具。

错误作为工具结果返回,而不是抛异常。返回isError: true加一句可读的说明,模型能自己纠正——"这个订单不存在,要不要核对一下ID"——而不是整轮对话直接失败。

注解只是给客户端的提示。readOnlyHint告诉客户端这个工具不改任何东西,有些客户端据此跳过确认弹窗。但注解永远不能当作安全边界。

日志走stderr。stdio传输下,stdout就是协议通道,一句随手写的console.log就能把JSON-RPC流冲坏。这是第一天最容易踩的坑。

审计日志:每次调用都留痕

每个工具调用都应该留下记录,而且要结构化,方便以后查询。审计函数接收工具名、参数和结果,对email、phone、cardLast4这类字段做脱敏替换,然后以JSONL格式追加写入文件。

生产环境会把这些条目送到日志平台,并附上请求或会话ID以及已认证用户。但哪怕只是一个本地JSONL文件,也足够回答"agent昨天干了什么"这个问题。

一个自己造不成伤害的写工具

退款申请工具的设计思路是:让agent帮忙处理退款,但不让模型直接退款。工具只创建一条待审批请求,由人在现有系统里批准。

代码里强制的东西包括:金额上限写死在服务端,20000分;退款金额不能超过订单总额;幂等性保证一个订单只有一条未关闭的退款请求;以及钱永远不会动这个事实。

工具描述帮助模型表现良好,处理函数保证坏行为无害。响应里也明确告诉模型"还没有付款",免得它转头对用户说"您的退款已完成"。

用官方检查器做敌意测试

编译后用MCP Inspector启动服务器,它会列出工具、展示schema、支持手动调用。在接入真实模型之前,先试一遍糊涂或被操纵的agent可能发来的输入:错误的ID格式、负数金额、超过上限的金额、同一笔退款提交两次、超长备注。每一个都应该干净地失败,或者无害地通过。

然后接客户端。多数桌面MCP客户端接受一段配置:命令是node,参数指向编译产物的绝对路径,环境变量里指定审计日志路径。

转远程之后要补的课

stdio服务器以启动者的权限运行。一旦用Streamable HTTP部署给团队用,认证和授权就得来真的:

  • 每个请求都要认证。MCP规范定义了基于OAuth 2.1的授权流程,服务器作为资源服务器,校验身份提供方签发的访问令牌。
  • 校验令牌受众。只接受签发给本服务器的令牌,不要把客户端的令牌转发给下游API,规范明确禁止这种令牌透传。
  • 按工具、按用户授权。把scope或角色映射到工具上,客服会话可能拿到查询和退款申请,分析师的会话只给只读工具。
  • 数据按调用者划范围。查询工具只返回已认证用户有权看到的订单,agent继承用户权限,绝不多一分。
  • 限流和超时。agent会循环,按会话和按分钟设调用上限,后端调用设超时。
  • 校验Origin头,测试时绑定本地,防DNS重绑定攻击。

MCP特有的几个坑

工具结果里的提示注入:如果工具返回用户生成的文本,比如工单正文、邮件、网页,这些文本里可能藏着针对模型的指令。别让工具输出成为模型和有害动作之间的唯一屏障,限制必须在处理函数里执行。

工具投毒:工具描述是给模型读的。只安装你信任的服务器,审查描述,锁定第三方服务器版本。

过宽的工具:一个run_sql或者call_any_api,等于把服务器变成模型的远程shell。宁可要很多窄工具,不要一个万能工具。

输出泄漏:返回最小集,把agent不需要的个人数据脱敏。密钥放环境变量或密钥管理器,永远不要写进工具描述或响应里。

上线前的清单

每个工具都有严格的输入schema,格式、枚举、最大长度、数值边界齐全;输出只投影agent需要的字段;默认只读,每个写工具单独评审;有后果的动作只生成待审批请求;限制和业务规则在处理函数里执行,不在提示词里;每次调用都记录用户、工具、脱敏参数和结果;远程部署用OAuth、受众校验和按工具授权;限流和超时到位;在检查器里用敌意和畸形输入测过。

MCP服务器很小,但它站在一个概率系统和你的真实数据之间。像设计公开API那样设计它,再多假设一件事:调用方可能被说服去做你没打算让它做的事。窄工具、硬限制、写操作默认待审批、加上一份好的审计日志,基本就能撑起一个可以信任的agent集成。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
从一句话到一个能玩的世界,VAST 把整条链路开源了

从一句话到一个能玩的世界,VAST 把整条链路开源了

爱范儿
2026-10-20 22:18:20
张铁林聚餐照曝光!叼大烟斗,桌上摆满老北京铜锅涮肉

张铁林聚餐照曝光!叼大烟斗,桌上摆满老北京铜锅涮肉

草莓解说体育
2026-10-19 06:44:09
工信部:坚决防范不合理创新设计和未经充分研发测试验证的汽车产品进入市场

工信部:坚决防范不合理创新设计和未经充分研发测试验证的汽车产品进入市场

界面新闻
2026-10-20 16:00:20
央视曝光:有人一次寄6000多个包裹 内有练习册、空白试卷 夹带“扶贫福利领取流程图”诈骗传单

央视曝光:有人一次寄6000多个包裹 内有练习册、空白试卷 夹带“扶贫福利领取流程图”诈骗传单

闪电新闻
2026-10-20 21:08:25
2-4,亚马尔破门难救主,巴塞罗那不敌卫冕冠军,遭遇欧冠首败

2-4,亚马尔破门难救主,巴塞罗那不敌卫冕冠军,遭遇欧冠首败

侧身凌空斩
2026-10-21 04:57:04
“浑身都是放纵的痕迹!”母亲晒儿子大学三年变化,连面相都变了,家长认为责任在学校,网友们痛斥

“浑身都是放纵的痕迹!”母亲晒儿子大学三年变化,连面相都变了,家长认为责任在学校,网友们痛斥

蝴蝶花雨话教育
2026-10-20 00:05:15
事态升级!解放军锐评旭日旗事件,陈某迎四大噩耗,不止遣返那么简单

事态升级!解放军锐评旭日旗事件,陈某迎四大噩耗,不止遣返那么简单

秋枫凋零
2026-10-20 16:26:07
“多亏了这笔贷款,不然我真不知道该怎么交上今年的社保”

“多亏了这笔贷款,不然我真不知道该怎么交上今年的社保”

法师今天失业了吗
2026-10-19 23:53:05
刘强东硬刚抖音,引爆全网!

刘强东硬刚抖音,引爆全网!

大佬灼见
2026-10-19 22:42:34
太前卫了!学生情侣约定开房一人一次承担房费,男方多次清算订房记录,女生哭诉经济压力大,聊天记录流出

太前卫了!学生情侣约定开房一人一次承担房费,男方多次清算订房记录,女生哭诉经济压力大,聊天记录流出

火山詩话
2026-10-19 07:59:53
CBA最愚蠢交易!用场均18分悍将换来7分0.5板软蛋,如今后悔不已

CBA最愚蠢交易!用场均18分悍将换来7分0.5板软蛋,如今后悔不已

南海浪花
2026-10-21 08:24:09
吃里扒外!定居美国13年,回国捞金惨遭“驱赶”,53岁活的荒唐!

吃里扒外!定居美国13年,回国捞金惨遭“驱赶”,53岁活的荒唐!

喜欢历史的阿繁
2026-10-21 10:07:14
AI 女模特,已失去底线

AI 女模特,已失去底线

视觉志
2026-10-21 09:58:12
21岁小伙穿越稻城亚丁遇难,真相反转!

21岁小伙穿越稻城亚丁遇难,真相反转!

新动察
2026-10-21 10:07:05
00后员工不好管啊!国庆放假拒参加临时会议,领导群里怒吼:严重违纪降薪1000,不服可提交离职申请,员工回怼“你还活在古代吗”

00后员工不好管啊!国庆放假拒参加临时会议,领导群里怒吼:严重违纪降薪1000,不服可提交离职申请,员工回怼“你还活在古代吗”

火山詩话
2026-10-20 12:23:47
黄景瑜未成名地铁旧照,模样普通认不出

黄景瑜未成名地铁旧照,模样普通认不出

喜欢历史的阿繁
2026-10-20 02:15:38
福登单场独造4球,1.35亿新援处子球,曼城5-1大胜雅典AEK

福登单场独造4球,1.35亿新援处子球,曼城5-1大胜雅典AEK

钉钉陌上花开
2026-10-21 04:53:07
小区物业大撤退!收缴率跌到 16%,售价数百万住宅恐变贫民窟

小区物业大撤退!收缴率跌到 16%,售价数百万住宅恐变贫民窟

风向观察
2026-10-19 20:17:57
《沈阳大东“6·17”较大道路交通事故调查报告》公布,7人被移交纪委监委

《沈阳大东“6·17”较大道路交通事故调查报告》公布,7人被移交纪委监委

界面新闻
2026-10-20 17:52:02
复出5天的小杨哥,撞得“头破血流”

复出5天的小杨哥,撞得“头破血流”

金错刀
2026-10-20 14:17:36
2026-10-21 11:03:00
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
223文章数 98关注度
往期回顾 全部

科技要闻

马斯克确认SpaceX与特斯拉讨论合并

头条要闻

高速电子屏提示"应急道可用"司机借用却被罚 两省回应

头条要闻

高速电子屏提示"应急道可用"司机借用却被罚 两省回应

体育要闻

巴拉克:天生亚军与漫长极夜

娱乐要闻

刘恺威官宣女友,和杨幂一个天一个地

财经要闻

日赚近5亿的长鑫,股价却跌掉了15000亿

汽车要闻

黑科技一次看全 2026奇瑞全球创新大会干货汇总

态度原创

旅游
健康
教育
艺术
军事航空

旅游要闻

从“途经驿站”到度假目的地:一场文旅热照见衡水城市转型逻辑

痘痘能根治吗?皮肤科医生说实话

教育要闻

清“莲”润童心 品格伴成长——青岛重庆路第二小学开展廉洁主题教育活动

艺术要闻

谁敢信?63岁大爷的油画竟被选进美院教材,质感强到像要溢出屏幕!

军事要闻

特朗普狠批泽连斯基"不想结束战争" 泽连斯基强硬回怼

无障碍浏览 进入关怀版