使用说明

项目简介

MCP Shell Server 是一个简单的 MCP 服务器实现,它允许 LLM 客户端通过调用预设的 'shell_command' 工具来执行服务器端的 shell 命令。该服务器使用 Server-Sent Events (SSE) 协议与客户端通信,并通过 API 密钥进行简单的身份验证。

主要功能点

  • Shell 命令执行: 提供 'shell_command' 工具,允许 LLM 客户端远程执行服务器操作系统的 shell 命令。
  • MCP 协议支持: 基于 'fastmcp' 库构建,实现了基本的 MCP 协议交互。
  • API 密钥认证: 通过简单的 API 密钥机制保护服务器接口。
  • SSE 传输协议: 使用 Server-Sent Events 协议进行数据传输。
  • 轻量级易部署: 代码简洁,易于理解和部署。

安装步骤

  1. 克隆仓库: 虽然仓库的 README 提供了 'git clone https://github.com/mark-oori/mcpserve/releases' 命令,但正确的克隆仓库命令应为:

    git clone https://github.com/mark-oori/mcpserve
    cd mcpserve
  2. 安装 Python 依赖: 虽然仓库中没有 'requirements.txt' 文件,但根据代码推测,可能需要安装 'fastmcp' 和 'dotenv' 库。建议使用 pip 安装:

    pip install python-dotenv # 用于加载 .env 环境变量
    # fastmcp 库可能需要手动安装或根据实际情况安装,如果运行报错再安装
    # pip install fastmcp  # 假设库名为 fastmcp,实际情况请查阅 fastmcp 文档

    如果 'fastmcp' 库无法直接安装,可能需要从其源代码仓库手动安装,或者该仓库已经包含了 'fastmcp' 库的必要代码。

  3. 配置环境变量:

    • 在项目根目录下创建 '.env' 文件。
    • 根据需要配置以下环境变量(示例):
      APP_NAME=MyMCPServer
      APP_DEBUG=True
      APP_LOG_LEVEL=DEBUG
      APP_PORT=8005
      MCP_API_KEY=your_secret_api_key  # 请替换为你自己的 API 密钥
      注意: 'MCP_API_KEY' 是客户端连接服务器时需要提供的身份验证密钥,请务必设置并妥善保管。
  4. 运行 MCP 服务器:

    python -m mcp.main

    或者,如果直接运行 'main.py' 文件:

    python mcp/main.py

    服务器默认会在 '8005' 端口启动,并输出启动信息。

服务器配置 (MCP 客户端)

MCP 客户端需要配置以下信息以连接到 MCP Shell Server:

{
  "serverName": "MCP Shell Server",
  "command": "python",
  "args": ["-m", "mcp.main"],
  "transport": "sse",
  "baseUrl": "http://localhost:8005",
  "headers": {
    "x-api-key": "your_secret_api_key"  // 替换为 .env 文件中设置的 MCP_API_KEY
  }
}

配置参数说明:

  • '"serverName"': 服务器名称,可以自定义。
  • '"command"': 启动服务器的命令,这里使用 'python'。
  • '"args"': 启动命令的参数,'["-m", "mcp.main"]' 表示执行 'mcp' 模块下的 'main.py' 文件。
  • '"transport"': 传输协议,设置为 'sse' (Server-Sent Events)。
  • '"baseUrl"': 服务器的基础 URL,默认为本地的 '8005' 端口。如果服务器部署在远程,请修改为相应的 IP 地址或域名。
  • '"headers"': HTTP 请求头,用于传递 API 密钥进行身份验证。'"x-api-key"' 字段的值需要与服务器 '.env' 文件中配置的 'MCP_API_KEY' 一致。

基本使用方法

  1. 启动 MCP Shell Server: 按照上述步骤在服务器端启动 MCP 服务器。

  2. 配置 MCP 客户端: 在 MCP 客户端中,根据上述提供的 JSON 配置信息配置服务器连接。确保 '"headers"' 中的 'x-api-key' 与服务器端配置一致。

  3. 客户端调用工具: 在 MCP 客户端中,可以使用类似以下的 JSON-RPC 请求来调用 'shell_command' 工具执行 shell 命令:

    {
      "jsonrpc": "2.0",
      "method": "call_tool",
      "params": {
        "tool_name": "shell_command",
        "arguments": {
          "command": "ls -l"  // 要执行的 shell 命令,例如列出当前目录文件
        }
      },
      "id": 1
    }

    服务器会执行 'ls -l' 命令,并将命令执行结果作为 JSON-RPC 响应返回给客户端。

注意:

  • 安全性: 'shell_command' 工具具有潜在的安全风险,因为它允许 LLM 客户端执行任意 shell 命令。在生产环境中使用时,请务必谨慎,并考虑更严格的权限控制和安全措施。例如,可以限制允许执行的命令类型,或者增加更完善的身份验证和授权机制。
  • 错误处理: 示例代码中的错误处理较为简单。在实际应用中,应根据需要完善错误处理机制,以便更好地处理命令执行失败等情况。
  • 依赖库: 请根据实际运行情况安装 'fastmcp' 和其他必要的 Python 库。

信息

分类

桌面与硬件