跳转到主要内容

安全边界

Coding Tools MCP 是编码工具服务器。它提供工作区路径检查、命令安全门禁、可选文件系统隔离、远程 HTTP 鉴权和环境过滤,但它本身不是完整安全沙箱。

工作区边界

直接文件工具会在配置的工作区根目录下解析路径。启动时应选择能满足任务的最小目录:
coding-tools-mcp --workspace /repo
不要把工作区指向 home 目录、文件系统根目录,或包含无关 secret 的目录。

命令边界

exec_command 能运行当前权限模式允许的本地命令。应把它视为在配置工作区和服务进程环境内执行代码。
模式边界
safe对网络特征命令、shell 展开、内联脚本、敏感环境和宽泛临时目录写入加门禁。Landlock 可用时启用。
trusted允许常见开发流程,同时保留工作区路径策略、敏感环境过滤和可用时的 Landlock。
dangerous关闭命令权限门禁和 Landlock。只应在外层沙箱中使用。

Landlock 依赖宿主

Linux 上会在可用时使用 Landlock。如果内核或宿主配置不支持,服务会报告命令只在策略检查下运行。这个警告意味着不可信命令需要依赖外层容器、VM 或其他沙箱。

鉴权边界

HTTP loopback 可以无鉴权。非 loopback 绑定需要 Bearer auth、OAuth,或显式 CODING_TOOLS_MCP_AUTH_MODE=noauth 远程访问建议:
  • 使用 Bearer auth 或 OAuth。
  • 放在 TLS 后面。
  • 不把 token 和 OAuth secret 写入日志。
  • 通过代理或公开 tunnel 暴露 OAuth 时设置 CODING_TOOLS_MCP_SERVER_URL
  • 除非外层可信层已鉴权,否则不要使用 no-auth 远程模式。

环境边界

safetrusted 中,看起来像 secret 的环境变量名和值会从命令执行环境中被过滤。动态库 preload、语言启动钩子等风险变量也会被视为不安全。 除非部署和权限模式明确接受该风险,否则不要通过 exec_command.env 传入 API key、私钥、token 或密码。

Tool profile 边界

--tool-profile read-only 会减少对客户端暴露的工具,但不是完整安全审计系统。它隐藏修改型工具,不代表服务在所有配置下都不可变。 compat-readonly-all 是兼容模式,可能把可修改本地状态的工具标注为只读,因此不能把它当作安全控制。

推荐部署姿态

  • 本地单用户编辑器接入:stdio 或 loopback HTTP,先使用 safe
  • 可信本地开发自动化:stdio 或 loopback HTTP,需要网络或 shell 特性时使用 trusted
  • 远程工作区:HTTP 加 Bearer auth 或 OAuth,TLS,窄工作区,容器或 VM 隔离。
  • 高风险自动化:先建立外层沙箱,再选择最小可用 profile 和权限模式。