项目简介

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 语言环境。

  1. 安装 Go: 访问 https://go.dev/doc/install 下载并安装 Go。

  2. 运行 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 并指向您的配置文件。

基本使用方法

  1. 创建 MCPShell 配置文件: 编写一个 YAML 文件,定义您希望通过 LLM 暴露和执行的命令行工具。例如,定义一个用于检查磁盘使用情况的工具(参考仓库中的 'example.yaml')。在工具定义中包含名称、描述、参数、约束和要执行的命令模板。
  2. 配置 MCP 客户端: 在您的 LLM 客户端中,按照上述“服务器配置”部分的说明,添加配置以启动 MCPShell MCP 服务器,并确保 '--config' 参数指向您创建的 YAML 配置文件。
  3. 重启/刷新 MCP 客户端: 大多数 MCP 客户端需要在配置更改后重启或刷新才能发现新的 MCP 服务器。
  4. 与 LLM 互动: 在支持的 MCP 客户端中,向 LLM 提问或发出指令,使其能够利用您在配置文件中定义的工具来完成任务。例如,如果您定义了磁盘使用工具,可以问 LLM “我的硬盘空间快满了,能帮我找出是哪些文件占空间吗?”。LLM 客户端将通过 MCP 协议调用 MCPShell 服务器上对应的工具,MCPShell 执行命令并将结果返回给 LLM。

信息

分类

AI与计算