Ragent MCP工具调用Schema校验与写操作人工确认的安全实践指南【免费下载链接】ragent企业级 Agentic RAG 智能体 - 全链路覆盖文档解析、多路检索、意图识别、问题重写、会话记忆、MCP 工具调用与深度思考。面向真实业务场景从 0 到 1 完整工程实现。项目地址: https://gitcode.com/gh_mirrors/ragent1/ragentRagent 是一款企业级 Agentic RAG 智能体覆盖文档解析、多路检索、意图识别、MCP 工具调用与深度思考全链路。本文带你用 5 分钟看懂 Ragent 中 MCP 工具调用的两大安全机制参数 Schema 校验和写操作人工确认——前者拦住模型传错参数后者拦住模型乱点提交让智能体在真实业务里敢用、可控、可回滚。为什么 MCP 工具调用需要安全带大模型调用工具Function Calling本身并不可靠它可能把2026-09-7写成2026-09-07可能把休几天放大成请一整年假更可能在没问用户的情况下直接提交订单、取消订单。Ragent 的思路是不要相信模型的自觉用工程手段把风险挡在模型之外。️ 第一道防线Schema 校验——参数结构、枚举值、必填项、格式逐项检查️ 第二道防线写操作人工确认——有业务副作用的调用先弹确认卡片用户点头才执行 附加保障敏感信息脱敏 全链路 Trace——查出来的手机号、地址自动打码每一步可回溯。Ragent 的 MCP 工具链是怎么跑的MCP 服务端独立在 mcp-server/ 模块通过 HTTP 端点/mcp对外提供工具。每个执行器就是一个工具例如企业办公场景的请假提交、电商场景比特严选的查单/下单场景示例工具读/写企业办公leave_submit提交请假申请✍️ 写操作企业办公假期余额查询、会议室查询 只读电商订单查询、物流查询 只读电商创建订单、取消订单、售后申请✍️ 写操作工具按意图树配置动态挂载到主 Agent挂载与快照逻辑在 AgentToolCatalog.javaMCP 工具到 Agent 的适配在 McpToolBridge.java。第一道防线Schema 校验如何工作工具必须自报参数说明书每个 MCP 工具注册时都要给出完整的 JSON Schema参数类型、中文说明、枚举值、必填项。以请假工具为例LeaveApplyMcpExecutor.javaproperties.put(leaveType, Map.of( type, string, title, 假期类型, description, 假期类型年假、调休、病假、事假, enum, LEAVE_TYPES)); // 只允许 年假/调休/病假/事假enum约束让模型假期类型只能从 4 个合法值里选凭空造词的机会直接归零。启动期硬校验不声明读/写就不许启动这是 Ragent 一个很有代表性的设计——工具必须显式声明自己是只读还是写操作否则服务直接启动失败// McpServerConfig.requireReadOnlyHint throw new IllegalStateException( 以下 MCP 工具未声明 readOnlyHint请在 annotations 里显式写明只读或写操作: undeclared);代码见 McpServerConfig.java。把声明义务前移到启动期意味着运行时永远不存在没标危险等级的工具后面的确认逻辑才有可靠的判断依据。运行期二次校验Schema 之外还要再查一遍Schema 只能约束结构管不了语义。所以每个写工具在服务端还有一层业务校验校验失败时返回给模型看的中文说明让它回头问用户而不是自行补全if (days MAX_SPAN_DAYS) { return String.format(单次请假跨度 %d 天已超过 %d 天上限请向用户确认实际起止日期, days, MAX_SPAN_DAYS); }电商侧的工具还有一批共用的防御性取参逻辑见 BitToolSupport.java返回条数上限模型传limit10000也不会把整张表读出去金额解析兜底解析不出来按没给处理绝不兜底成 0那会把不够门槛的券误判为可用身份缺失统一回绝透传不到登录身份时直接拒绝本次调用不许降级成按空用户查——那种看起来像你没有订单的静默失败最难排查见 McpToolResults.java。第二道防线写操作人工确认只读直通写操作先问人Ragent 预定义了两组工具注解McpToolAnnotations.java注解含义执行策略READ_ONLY不改动任何数据重复调用等价✅ 直接执行WRITE产生真实业务副作用️ 先弹确认卡片权限判断逻辑很简洁McpToolBridge.java/** * 意图树勾选或 readOnlyHint 显式为 false 时需要确认 */ private boolean needsConfirm() { return requireConfirm || Boolean.FALSE.equals(readOnlyHint); }也就是说触发确认有两条独立通道意图树开关——运营在后台给某个意图节点勾选执行前确认requireConfirmtruereadOnlyHint 兜底——即使运营漏勾只要工具自报是写操作readOnlyHintfalse照样拦截。两条通道取或保证漏配置时危险操作依然被拦下这正是启动期强制声明 readOnlyHint 的价值闭环。用户点取消之后别让模型误会一个容易忽略的细节用户点掉确认卡片后框架默认回一句冷冰冰的Permission denied by user。模型很可能把它理解成权限不足/系统故障然后编造解释或反复重试。Ragent 用一个中间件专门做口径修正AgentConfirmDenialMiddleware.java只替换用户取消这一种拒绝的文案改成用户在确认卡片上点了取消这次操作没有执行。这不是权限不足也不是系统故障。请如实告诉用户操作已取消等用户确认后再重新发起。而且只改写正文id和name保持不动——因为它们是模型上下文里调用 ↔ 结果的配对键动不得。附加保障脱敏与可观测脱敏工具返回的手机号自动留前 3 后 4、地址截到区级maskPhone/maskAddress且无权访问与不存在返回同一句话避免错误文案本身变成探测探针Trace每次工具调用含被确认拦截、被技能遮蔽的短路调用都会落到管理后台的追踪页出问题可以完整回放见 mcp-server/ 与 agent 模块的 trace/ 包。总结三条可复用的安全实践给想在业务里上 MCP 工具调用的同学Ragent 这套实践可以直接抄启动期强制声明工具不声明 readOnlyHint 就不许启动把风险等级前移Schema 业务双层校验enum/required 管结构服务端 validate 管语义失败信息写成给模型听的中文写操作双通道拦截运营配置开关 ∪ readOnlyHint 兜底取消后的口径统一修正防止模型脑补失败原因。安全不是加一道锁而是每一层都不信上一层——这就是 Ragent 的 MCP 工具调用能落进真实业务的底气。【免费下载链接】ragent企业级 Agentic RAG 智能体 - 全链路覆盖文档解析、多路检索、意图识别、问题重写、会话记忆、MCP 工具调用与深度思考。面向真实业务场景从 0 到 1 完整工程实现。项目地址: https://gitcode.com/gh_mirrors/ragent1/ragent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
数据中台集成DB-GPT:多模态AI数据库与自然语言查询实战 1. 数据中台与 DB-GPT 的集成思路拆解1.1 为什么要在数据中台里塞进一个 AI 数据库做过数据中台的人都有一个共同感受:数据资产越积越多,但真正能被业务方用起来的比例低得可怜。元数据躺在 Hive Metastore 里,指标定义散落在各种文档中&… · 2026/9/26 0:23:19
一人+AI工作流重构:IPO基元、六类标记法与模型路由实战 1. 为什么“一人AI”的工作流重构值得认真对待我第一次认真琢磨“工作流重构”这件事,是在一个再普通不过的周二下午。当时我手头同时压着三条线:一条是给客户做的数据清洗脚本,一条是团队内部的知识库整理,还有一条是自己折腾的一… · 2026/9/26 0:23:19
SLAM从入门到实战:激光与视觉建图踩坑全记录 1. 从零开始理解SLAM:一个机器人爱好者的踩坑实录第一次听到SLAM这个词,是在一个做扫地机器人的朋友那里。他跟我说,他们家那台机器之所以能一边在客厅里转悠一边把地图画出来,靠的就是SLAM。我当时的第一反应是:这不就… · 2026/9/26 0:23:12
UE5 GAS框架实战:构建可扩展ARPG战斗系统的核心方法 1. 先别急着写代码:ARPG战斗框架到底在解决什么问题如果你在UE里做过ARPG,一定体会过战斗系统写到后期的那种窒息感。普攻连段、闪避无敌帧、受击硬直、怪物AI、伤害数字、BUFF叠层、技能打断、镜头冲击……表面上每个功能都不难,但一旦它们互… · 2026/9/26 0:52:20
贵州正规的除尘器加工厂哪家靠谱?株洲菲尔特生产厂靠谱商家测评排名 株洲菲尔特科技有限公司简介株洲菲尔特科技有限公司是一家专注工业干式除尘成套设备及非标成套装备研发、制造、安装全流程服务的企业,业务覆盖方案设计、粉尘收集系统搭建、风管配套、设备生产、安装调试到第三方检测的全链条服务,可针对工矿、矿山、建… · 2026/9/26 0:52:08
免费金融数据接口选型与Python接入实操:A股、美股、期货、外汇、数字货币全覆盖 1. 选型:免费数据源全景对比与选择逻辑1.1 为什么说免费金融数据接口是刚需先说个现实问题:很多人一接触量化交易或者个人投资分析,第一反应就是去找Wind、Bloomberg这类专业终端。Wind的Python接口确实好用,但一个账号一年几万块… · 2026/9/26 0:51:43
磁力搜索与下载工具全解析:从DHT原理到下载器调优实战 1. 磁力搜索与下载工具的核心逻辑拆解1.1 磁力链接到底是什么,为什么它比传统下载更抗封很多人第一次接触磁力搜索,脑子里冒出来的问题是:这东西跟普通下载链接有啥区别?我用一句话说清楚——磁力链接不存文件本身,它存… · 2026/9/26 0:51:37
MySQL图书管理系统实战:从表设计到事务、索引与主从复制 简介:这份 MySQL 图书管理系统资源面向高校数据库课程期末大作业场景,适合正在学习 MySQL 表设计、权限管理与存储过程/触发器的学生参考。包内共 19 个文件,以 12 个 frm 表结构文件、2 个 trn 触发器文件、1 个 trg 触发器定义、1 个 opt 配… · 2026/9/26 0:51:37
日本地铁为什么准点?信号、供电与调度系统的协同设计 如果问你,世界上哪个城市的地铁最能让人形成“准点”肌肉记忆,很多人会脱口而出东京。但真正值得追问的是:东京地铁早高峰的发车间隔已经被压到3分钟以内,有些拥挤区段甚至接近2分钟,列车和信号设备还是一套不断叠加了… · 2026/9/26 0:51:37
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46