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

给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.

相关推荐
热点推荐
医学博士饿了只吃蒸玉米、蒸山药、蒸土豆、煮鸡蛋,坚持一个月。

医学博士饿了只吃蒸玉米、蒸山药、蒸土豆、煮鸡蛋,坚持一个月。

刘哥谈体育
2026-10-11 06:48:52
真人春丽 嘉米太丑毁IP?《街霸》口碑雪崩IGN仅6分

真人春丽 嘉米太丑毁IP?《街霸》口碑雪崩IGN仅6分

游民星空
2026-10-16 17:22:24
俄罗斯选举落幕,普京再赢五年,绍伊古不能上位,俄四朝元老出山

俄罗斯选举落幕,普京再赢五年,绍伊古不能上位,俄四朝元老出山

阿凫爱吐槽
2026-10-17 08:48:33
一项被低估的「抗衰运动」,不管几岁练都不晚

一项被低估的「抗衰运动」,不管几岁练都不晚

解说阿洎
2026-10-18 07:18:34
毛主席两次将他从中央委员名单勾掉,第三次周总理坚决说:不要再勾了!

毛主席两次将他从中央委员名单勾掉,第三次周总理坚决说:不要再勾了!

史不语
2026-10-15 11:44:27
读书不出声,永远中等生!读书声音大,定能成学霸;坚持大声朗读,是学生最低成本的逆袭!

读书不出声,永远中等生!读书声音大,定能成学霸;坚持大声朗读,是学生最低成本的逆袭!

好爸育儿
2026-10-17 08:35:29
2014年,山西一个六十岁的老汉,杀了全村唯一不嫌弃他的人——那个常给他送吃送喝的远房侄媳妇

2014年,山西一个六十岁的老汉,杀了全村唯一不嫌弃他的人——那个常给他送吃送喝的远房侄媳妇

扶苏聊历史
2026-09-29 15:32:03
天赋肉眼可见!维拉6000万新援大爆发 近4场独造5球

天赋肉眼可见!维拉6000万新援大爆发 近4场独造5球

球事百科吖
2026-10-18 05:33:21
周兆成解读尊界汽车刹车踏板支架断裂调查:监管介入,汽车产品安全责任没有缓冲地带

周兆成解读尊界汽车刹车踏板支架断裂调查:监管介入,汽车产品安全责任没有缓冲地带

周兆成律师
2026-10-16 10:58:12
张继科重庆参加路跑!再次回应刘丁硕:大家少关注那些乱七八糟的

张继科重庆参加路跑!再次回应刘丁硕:大家少关注那些乱七八糟的

念洲
2026-10-18 10:50:58
陈奕迅官宣26场演唱会:观众须封存手机,现场不得交谈、欢呼、拍手、跟唱;是唱片重录计划,确保每场曲目不重复

陈奕迅官宣26场演唱会:观众须封存手机,现场不得交谈、欢呼、拍手、跟唱;是唱片重录计划,确保每场曲目不重复

花样TV
2026-10-18 17:04:18
谢贤前女友Coco直播被说丑,本人回应:“姐都40岁了,把头发往下一放还是迷倒一大片的”

谢贤前女友Coco直播被说丑,本人回应:“姐都40岁了,把头发往下一放还是迷倒一大片的”

韩小娱
2026-09-04 05:54:22
台湾县市长选举结果预测:国民党或可拿下五都,总计16县市执政权

台湾县市长选举结果预测:国民党或可拿下五都,总计16县市执政权

掉了颗大白兔糖
2026-10-18 03:16:45
俄罗斯当年割占了中国588万平方公里土地,相当于三分之一的中国版图,可如今再看,这些曾经水草丰美的宝地,大半都成了人迹罕至的荒地

俄罗斯当年割占了中国588万平方公里土地,相当于三分之一的中国版图,可如今再看,这些曾经水草丰美的宝地,大半都成了人迹罕至的荒地

回京历史梦
2026-10-13 09:21:51
下一周(10.19-10.23)持有这些个股的要小心了!(附个股)

下一周(10.19-10.23)持有这些个股的要小心了!(附个股)

趋势清风侠
2026-10-18 09:05:54
武网决赛黑马对决!冠军带走奖励:1000积分+66.5万美元+创历史

武网决赛黑马对决!冠军带走奖励:1000积分+66.5万美元+创历史

林子说事
2026-10-18 10:45:11
痛风疼到怀疑人生?这碗近千年 “祛湿圣方” 了解一下

痛风疼到怀疑人生?这碗近千年 “祛湿圣方” 了解一下

PSM药盾公益
2026-10-15 17:42:41
从业14年老配件博主怒喷:苹果599元官方手机壳就是垃圾

从业14年老配件博主怒喷:苹果599元官方手机壳就是垃圾

小柱解说游戏
2026-10-18 16:43:34
中国果断出手!公告落地,40项关键技术直接锁死西方产业链?

中国果断出手!公告落地,40项关键技术直接锁死西方产业链?

谛听骨语本尊
2026-10-18 17:22:57
9月纯电车又卖爆了!冠亚军销量超4万,零跑A10未进前三,小米SU7排名第七

9月纯电车又卖爆了!冠亚军销量超4万,零跑A10未进前三,小米SU7排名第七

娱乐圈的笔娱君
2026-10-18 16:57:06
2026-10-18 18:19:00
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
205文章数 97关注度
往期回顾 全部

科技要闻

王江舟院士:6G到底是不是骗局 是不是收割

头条要闻

法国骚乱爆发数小时前 马克龙夫妇被拍到在演唱会跳舞

头条要闻

法国骚乱爆发数小时前 马克龙夫妇被拍到在演唱会跳舞

体育要闻

升级版杨瀚森再闯难关:当上开拓者第三中锋还得拼

娱乐要闻

郭麒麟被传领证,女方戳破谣言

财经要闻

马斯克:美债问题只能靠AI和机器人解决

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

教育
艺术
时尚
数码
军事航空

教育要闻

5大重磅动作!刚刚,京城顶流中学亮出“新底牌”

艺术要闻

一位“恶霸官员”却写出最美行书,字字美若天仙,400多年来无人比肩!

重阳寻香:一炉香,一枚囊,她们以手传香

数码要闻

大屏追番更震撼!海信电视小墨E5S Pro带你沉浸式入局《凡人》修仙宇宙

军事要闻

乌克兰全国超15处重要能源设施遭俄袭击 泽连斯基发声

无障碍浏览 进入关怀版