Azure AI Foundry中Remote MCP Server工具执行RequiresAction错误排查
问题背景
在Azure上部署基于Rust语言、使用rmcp crate开发的自定义Remote MCP Server,通过Python程序借助McpTool将其作为代理部署到AI Foundry中。部署后连通性测试(如list tools、调用工具获取MCP信息)均正常,且该MCP Server可通过Python代理被Claude.AI等其他主机访问,但在Playground中使用该代理执行MCP服务器上的工具时,出现「Error: RequiresAction」错误。排查确认该错误源于客户端需获取工具运行权限,但Playground无交互权限确认环节。尝试在McpTool定义中添加set_approval_mode("never")禁用权限提示,但该设置未同步到MCP Agent模型,未生效。
可能的失效原因
- 配置未传递到Agent注册流程:
set_approval_mode的配置仅作用于本地McpTool实例,未在向AI Foundry注册MCP Agent的步骤中同步该参数,导致服务端未接收并应用该配置。 - AI Foundry全局配置优先级更高:AI Foundry的MCP Agent服务内置默认权限校验逻辑,会覆盖通过McpTool传入的
never模式设置。 - 配置未生效:修改McpTool配置后未重启代理服务,或未重新向AI Foundry注册Agent,旧配置仍在运行。
- 版本兼容性问题:自定义Rust MCP Server使用的rmcp crate版本与Python端McpTool版本不匹配,导致权限配置参数无法被正确解析传递。
解决方法
注册Agent时显式传递权限配置
不要仅在McpTool实例中设置set_approval_mode("never"),需在向AI Foundry注册Agent的代码中,显式携带权限模式配置。示例Python代码片段:agent = McpTool(...) agent.set_approval_mode("never") # 注册时确保配置被服务端接收 ai_foundry_client.register_agent(agent, config={"approval_mode": "never"})检查AI Foundry全局权限配置
登录Azure AI Foundry控制台,找到对应MCP Agent服务,查看全局权限校验开关,将其设置为「无需审批」,覆盖默认交互校验逻辑。重启代理并重新注册Agent
修改配置后,停止当前Python代理进程,重新启动并执行Agent注册流程,确保新的权限配置被AI Foundry服务端加载生效。校验rmcp与McpTool版本兼容性
查看rmcp crate官方文档确认其支持的权限配置格式,同步检查Python McpTool版本是否兼容,必要时升级或降级版本,确保参数能正确传递解析。在自定义MCP Server中直接设置权限策略
绕过McpTool的配置传递,在Rust开发的Remote MCP Server代码中,为工具设置默认无需审批的权限策略。示例Rust代码片段:use rmcp::prelude::*; let mut server = Server::new(); server.register_tool(MyTool, |tool| { tool.set_approval_policy(ApprovalPolicy::Never); });
内容的提问来源于stack exchange,提问作者mazecreator

