SuperAPI AI 工具集

mcp-shell

mcp-shell 是一个基于 Go 语言、构建于 mark3labs/mcp-go 之上的 MCP 服务器,让 AI 助手(如 LLM)能够安全、可审计、按需地执行操作。其默认采用“安全模式”,只注册一组类型化的工具,不提供原始 shell 命令,包括文件读取、grep/glob、git 检查,以及可选的文件/git 写入和操作员自定义脚本。所有路径参数都会基于 working_directory 解析并跟随符号链接,任何解析到该目录之外的路径都会被拒绝。项目提供 Docker 方式运行,以非 root 用户、基于 Alpine 镜像运行,适合在生产环境使用。AI 客户端通过 MCP 配置接入后即可调用这些受限工具;只有在显式设置 MCP_SHELL_ALLOW_UNSAFE=1 时,才会暴露唯一的不受限工具 shell_exec,通过 bash -c 无验证运行命令,仅适合本地开发。

访问官网

工具介绍

用途

mcp-shell 是一个 MCP(Model Context Protocol)服务器,为 AI 助手提供执行操作的能力,同时让使用者保留对“运行什么”和“如何运行”的控制权。它运行 shell 命令类操作,但默认不提供原始 shell,而是暴露类型化工具。项目基于 mark3labs/mcp-go 构建,使用 Go 语言编写。

主要能力

安全模式(默认):服务器启动时若无配置文件,会自动进入安全模式,只注册类型化工具。每一条命令的 argv 由服务器自行构建,客户端永远不提供 shell 字符串。这些工具覆盖文件读取、grep / glob、git 检查,以及需要显式启用的文件/git 写入和操作员定义脚本。

路径限制:每个路径参数都会基于 working_directory 解析(跟随符号链接),任何解析到该目录之外的路径都会被拒绝。

Git 加固:Git 路径在 -- 之后传入,ref 在 --end-of-options 之后传入,以 - 开头的 ref 会被拒绝。Git 运行时设置 GIT_CONFIG_NOSYSTEM=1、GIT_CONFIG_GLOBAL=/dev/null,并中和 core.fsmonitor、core.pager、core.hooksPath,在 log/diff/show/blame 上启用 --no-ext-diff --no-textconv。

最小环境:子进程只获得 PATH、HOME 和 LANG,不会继承服务器自身环境或 .env 中的机密。

写入与脚本需显式启用:writes_enabled: true 才会暴露文件/git 写入工具;非空的 scripts 映射才会暴露 run_script。两者默认关闭。

无网络工具:push、fetch 和 clone 均不提供。

使用方式

Docker(最简单)运行,安全模式为默认模式。无需配置文件即可启动。要自定义策略,可指向一个 YAML 配置文件。接入 Claude Desktop 时,在 MCP 配置中添加相应项;使用自定义配置时,挂载文件并设置对应环境变量。

若要完全不受限制地运行,必须显式启用:设置 MCP_SHELL_ALLOW_UNSAFE=1。此时唯一注册的工具是 shell_exec,它通过 bash -c 运行命令且不做验证,仅适合本地开发,其他场景下很危险。

适用场景

适合希望给 AI 提供受控文件访问、代码检索、git 检查等能力,同时保持可审计性的开发与自动化场景。Docker 镜像基于 Alpine、以非 root 运行,建议在生产中使用,并最好搭配操作系统级沙箱(只读文件系统、丢弃能力)作为纵深防御。

限制

安全模式下没有原始 shell 命令,只有类型化工具可用。文件/git 写入和自定义脚本默认关闭,需要显式开启。没有网络类工具(push、fetch、clone)。从 0.x 迁移时,安全模式不再验证 shell_exec 命令字符串,配置文件的 security: 块不再接受某些旧键;若配置仍设置这些键,启动会失败并报出对应键名。已无“legacy mode”和 security-legacy.yaml 示例。如需原始 shell 访问,只能设置 MCP_SHELL_ALLOW_UNSAFE=1 获得 shell_exec,且它不再受 security: 块约束。威胁模型、保证与漏洞报告范围见 SECURITY.md,提交 advisory 前应先阅读。