项目简介
MCPShell 是一个基于 Model Context Protocol (MCP) 的工具,旨在作为大型语言模型 (LLM) 和操作系统命令行工具之间的安全桥梁。它允许 LLM 以受控和安全的方式调用预定义的命令行命令,从而扩展 LLM 的能力,使其能够与用户的本地环境或远程系统交互。
主要功能点
- 灵活的命令行执行: 将任何 Shell 命令定义为 MCP 工具,支持通过模板进行参数替换。
- 基于配置的工具定义: 在 YAML 文件中定义工具,包括参数、约束和输出格式。
- 基于约束的安全控制: 使用 CEL 表达式对工具参数进行严格验证,防止不安全的操作。
- 多种运行沙箱支持: 可选择使用沙箱环境(如 macOS 的 sandbox-exec, Linux 的 firejail)隔离命令执行,增强安全性。
- 易于与MCP客户端集成: 可与任何支持 MCP 协议的 LLM 客户端(如 Cursor, 支持 MCP 扩展的 VS Code)无缝集成。
安装步骤
MCPShell 是一个 Go 程序。要运行它,您需要安装 Go 语言环境。
-
安装 Go: 访问 https://go.dev/doc/install 下载并安装 Go。
-
运行 MCPShell: MCPShell 通常通过其主命令 'mcpshell mcp' 作为 MCP 服务器启动。您可以使用 'go run' 命令直接运行而无需显式安装到 GOPATH:
# 下载并运行指定版本的MCPShell作为MCP服务器 go run github.com/inercia/[email protected] mcp --config /path/to/your/config.yaml --logfile /path/to/mcpshell.log请将 '/path/to/your/config.yaml' 替换为您实际的 MCPShell 配置文件路径,将 '/path/to/mcpshell.log' 替换为您希望写入日志的路径。
服务器配置(MCP客户端视角)
MCP 服务器由 MCP 客户端(如支持 MCP 的 LLM 应用、IDE 插件等)启动和管理。您需要在 MCP 客户端的配置文件中指定如何启动 MCPShell 服务器。配置格式通常为 JSON,包含服务器名称、启动命令及其参数。
以下是 MCP 客户端(例如 Cursor)中配置 MCPShell 的示例 JSON 片段。请注意,此配置位于 MCP 客户端,而非 MCPShell 本身:
{ "mcpServers": { // 您可以为此服务器指定一个内部名称,如 "mcpshell-cli" "mcpshell-cli-server": { // 指定启动 MCP 服务器的可执行文件或命令 // 这里使用 go run 直接运行 MCPShell 的主函数 "command": "go", // 指定传递给 command 的参数。这些参数会启动 MCPShell 的 MCP 服务器模式。 "args": [ "run", // go run 命令的参数 "github.com/inercia/[email protected]", // 指定要运行的 MCPShell 模块及其版本 "mcp", // MCPShell 程序的子命令,用于启动 MCP 服务器 "--config", "/path/to/your/config.yaml", // 必须:指向您的 MCPShell YAML 配置文件的路径 "--logfile", "/path/to/mcpshell.log", // 可选:指定日志文件路径 "--log-level", "info" // 可选:指定日志级别 (none, error, info, debug) ] } } // 其他 MCP 客户端配置... }
请参考您具体使用的 MCP 客户端的文档,了解其 MCP 服务器配置的具体位置和格式。关键是将 'command' 和 'args' 正确设置为能够启动 MCPShell 并指向您的配置文件。
基本使用方法
- 创建 MCPShell 配置文件: 编写一个 YAML 文件,定义您希望通过 LLM 暴露和执行的命令行工具。例如,定义一个用于检查磁盘使用情况的工具(参考仓库中的 'example.yaml')。在工具定义中包含名称、描述、参数、约束和要执行的命令模板。
- 配置 MCP 客户端: 在您的 LLM 客户端中,按照上述“服务器配置”部分的说明,添加配置以启动 MCPShell MCP 服务器,并确保 '--config' 参数指向您创建的 YAML 配置文件。
- 重启/刷新 MCP 客户端: 大多数 MCP 客户端需要在配置更改后重启或刷新才能发现新的 MCP 服务器。
- 与 LLM 互动: 在支持的 MCP 客户端中,向 LLM 提问或发出指令,使其能够利用您在配置文件中定义的工具来完成任务。例如,如果您定义了磁盘使用工具,可以问 LLM “我的硬盘空间快满了,能帮我找出是哪些文件占空间吗?”。LLM 客户端将通过 MCP 协议调用 MCPShell 服务器上对应的工具,MCPShell 执行命令并将结果返回给 LLM。
信息
分类
AI与计算