tencent/ai-infra-guard 的 mcp-scan 模块修改了工具调用解析器。2026 年 11 月 3 日的提交(7e6df02,PR #739)扩展了正则表达式和回退处理,使得即使 OpenAI 兼容模型以 <parameter name="x"> 的形式输出参数,调用也能被读取。根据仓库说明,这个项目是一个 AI 红队演练平台,把 Agent Scan、Skills Scan、MCP 扫描、AI Infra 扫描和 LLM 越狱评估打包在一起。
问题在于调用是以悄然损坏的方式发生的。文档中写明的形式是 <parameter=x>,但一些 OpenAI 兼容模型、尤其是 DeepSeek,会输出属性形式。mcp-scan 解析器只认识文档中写明的形式,因此这类调用被解析成没有参数的状态,模型反复重试直到参数值被重新填回,成本随之升高。据问题报告记载,单次运行中最多观测到 48 个错误标签,代码模式下慢了 2.65 倍。
改动的文件有两个。在 mcp-scan/mcp_scan/utils/parse.py 中,_parse_tags() 的参数正则表达式,以及处理未闭合 <function=finish> 的回退逻辑,都改为同时接受双引号和单引号的属性形式,解析结果也与此前的 agent-scan 解析器保持一致——后者本来就能处理这两种形式。在 mcp-scan/pytests/test_parse.py 中,新增了 7 个回归测试,涵盖两种形式混用、多个参数、回退路径、mcp_function 调用以及保持原有形式。变更统计为新增 77 行、删除 3 行。
这里的判断止于划定界限。48 和 2.65 倍是问题报告中记录的数字,并不是本次提交重新测得的数据。修改仅限于 mcp-scan 的解析阶段,仓库说明中列出的其他扫描路径不在本次提交中。对于针对会以属性形式输出参数的模型运行 MCP 扫描的团队,可以认为解析不一致的根源已经消除,但扫描耗时是否回到基线,给出的记录中并无依据。