用途:为 Mithril MCP 服务器新增执行工具时遵循的实现规范。每个工具把单条命令(POSIX、git 等)封装为结构化 MCP 工具,工具从不使用 shell 字符串,而是构建经过校验的类型化参数向量。
主要能力与约束:工具放在 crates/tools/src/<category>/<tool_name>.rs,类名 PascalCase、文件名 snake_case,并在该分类 mod.rs 注册。每个文件包含单元结构体与 Args 结构体、ToolDef 实现、ToolExec 实现。参数预算 5-10 个,只保留 AI 编码代理常用或常规使用必需的参数。
写代码前需验证 CLI 接口与沙箱兼容性:运行 <cmd> --help 和 <cmd> --version,以真实输出而非记忆或文档确定暴露哪些参数;对照 crates/sandbox/src/linux.rs(BubbleWrap)与 darwin.rs(sandbox-exec)判断命令在 Dir、Readonly、Container 各隔离级别下能否运行。需要写 cwd 之外、访问网络或读取 /usr、/etc 之外配置时,在 build_context() 填充 SandboxMeta 的 rw_binds、needs_network、ro_binds;只读工具保持默认。可复用领域 mod.rs 中的 apply_git_meta、apply_docker_meta、apply_pip_meta 等元数据辅助函数。
校验规则:每个非布尔参数必须注册校验规则,如路径用 PathConfined、命令名用带 NO_SPACES 的 String、自由文本用 NON_EMPTY、整数用 Integer、路径列表用 StrVector、固定取值用 AllowList;仅当参数语义确实需要 shell 元字符时才设 exempt_injection_guard: true。危险环境变量由 ENV_BLOCKLIST 拦截。实现后需在 crates/server/src/router.rs 接线,name 与 ToolDef::name() 一致,并至少写两个走完整 MCP 管线的测试。
适用场景:为 Mithril 扩展 system、git 等分类命令工具的开发者。
限制:资料未提供安装方式、收费、平台与价格等信息;文中涉及的部分函数、常量与路径需以项目实际代码为准。