SEP-986:规定工具名称格式
SEP-986:规定工具名称格式
社区译文;来源: MCP 29affa6b
本 SEP 已达到 Final 状态,并作为已接受设计的历史记录保留。
定稿后对协议所做的更改不会反映在此处。权威要求请参阅当前规范
及其变更日志。
| 字段 | 值 |
|---|---|
| SEP | 986 |
| 标题 | 规定工具名称格式 |
| 状态 | Final |
| 类型 | 标准跟踪 |
| 创建日期 | 2025-07-16 |
| 作者 | kentcdodds |
| 发起人 | 无 |
| PR | #986 |
摘要
模型上下文协议(MCP)目前缺少标准化的工具名称格式,导致实现者和用户面临不一致与困惑。本 SEP 为工具名称提出一项清晰、灵活的标准:工具名称长度应为 1 至 64 个字符,区分大小写,并可包含字母数字字符、下划线(_)、短横线(-)、点号(.)和正斜杠(/)。此举旨在兼容多种命名约定,同时最大限度提高 MCP 实现之间的兼容性、清晰度和互操作性。
动机
由于没有规定工具名称格式,MCP 实现采用了多种命名约定,包括不同的分隔符、大小写和字符集。这种不一致可能导致混淆、工具调用错误,以及文档和自动化方面的困难。标准化允许使用的字符和长度将:
- 使工具名称在客户端之间可预测且可互操作。
- 允许分层和带命名空间的工具名称(例如使用 / 和 .)。
- 同时支持人类可读和机器生成的名称。
- 避免可能阻止有效用例的不必要限制。
理由
社区讨论强调了工具命名需要灵活性。虽然某些约定(例如小写短横线命名)很常见,但许多工具和客户端使用大写字母、下划线、点号和斜杠来划分命名空间或提高可读性。提议的模式允许 a-z、A-Z、0-9、_、-、. 和 /,它基于主要客户端(例如 VS Code、Claude)采用的模式,也符合编程和 API 中的常见约定。禁止空格和逗号可以避免解析问题与歧义。1 至 64 个字符的长度限制足以覆盖大多数用例,同时能防止滥用。
规范
- 工具名称长度 SHOULD 在 1 至 64 个字符之间(含边界)。
- 工具名称区分大小写。
- 允许的字符:大写和小写 ASCII 字母(A-Z、a-z)、数字 (0-9)、下划线(_)、短横线(-)、点号(.)和正斜杠(/)。
- 工具名称 SHOULD NOT 包含空格、逗号或其他特殊字符。
- 工具名称在其命名空间内 SHOULD 唯一。
- 有效工具名称示例:
- getUser
- user-profile/update
- DATA_EXPORT_v2
- admin.tools.list
向后兼容性
对于使用不允许字符或超过新长度限制的现有工具,此变更不向后兼容。为尽量减少干扰:
- 现有不合规工具名称 SHOULD 作为别名至少支持一个主要版本,并给出弃用警告。
- 工具作者 SHOULD 更新其文档和代码以使用新格式。
- SHOULD 提供迁移指南,帮助实现者更新工具名称。
参考实现
可以通过更新 MCP 核心库,在注册时强制执行新的工具名称验证规则,从而提供参考实现。现有工具可以更新为为其新的合规名称提供别名,并对弃用格式发出警告。MCP 仓库中可以包含示例代码和迁移脚本。
安全影响
无。标准化工具名称格式不会引入新的安全风险。