使用说明

项目简介

'mcp-execute-command' 是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于提供命令执行功能。它允许LLM客户端通过标准化的MCP协议,请求服务器执行指定的系统命令,并将命令的输出结果返回给客户端。

主要功能点

  • 跨平台命令执行: 支持在不同操作系统平台上执行命令。
  • 支持shell和直接命令执行: 可以选择通过shell解释器执行命令,或直接执行命令。
  • 可配置工作目录: 允许为命令执行指定工作目录。
  • 详细的错误处理和报告: 提供命令执行成功或失败的详细信息,包括返回码、标准输出和标准错误输出。
  • 实现了 MCP 协议的 'initialize' 方法,用于声明服务器的功能。
  • 实现了 'execute_command' 工具,允许客户端调用执行命令。
  • 使用 JSON-RPC 协议 通过标准输入/输出 (stdio) 与客户端通信。

安装步骤

  1. 确保你的Python环境中安装了 'pip'。
  2. 打开终端或命令提示符,运行以下命令安装 'mcp-execute-command':
    pip install mcp-execute-command

服务器配置

MCP客户端需要配置服务器的启动命令和参数才能连接到 'mcp-execute-command' 服务器。以下是 рекомендуемый 配置信息(JSON 格式):

{
  "serverName": "mcp-execute-command",
  "command": "python",
  "args": ["-m", "mcp_execute_command"]
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,例如 "mcp-execute-command"。
  • 'command': 启动服务器的命令。这里使用 'python' 命令。
  • 'args': 传递给启动命令的参数。 '["-m", "mcp_execute_command"]' 表示以模块方式运行 'mcp_execute_command'。

MCP客户端配置示例 (假设客户端配置项名为 'servers'):

{
  "servers": [
    {
      "name": "execute-command-server",
      "config": {
        "serverName": "mcp-execute-command",
        "command": "python",
        "args": ["-m", "mcp_execute_command"]
      },
      "capabilities": {
        "tools": ["execute"]
      }
    }
  ]
}

注意: 'capabilities' 中的 'tools: ["execute"]' 声明客户端期望使用的工具集,需要与服务器声明的工具能力匹配。

基本使用方法

  1. 启动 MCP 服务器: MCP 客户端根据上述配置启动 'mcp-execute-command' 服务器。服务器将监听标准输入 (stdin) 接收请求,并通过标准输出 (stdout) 发送响应。

  2. 客户端发送请求: 客户端需要构造符合 MCP 协议的 JSON-RPC 请求,并通过标准输入发送给服务器。以下是一个调用 'execute_command' 工具的请求示例:

    {
        "jsonrpc": "2.0",
        "method": "execute_command",
        "params": {
            "command": "echo 'hello from mcp server'",
            "shell": true,
            "cwd": "/tmp"
        },
        "id": 1
    }

    请求参数说明:

    • 'jsonrpc': JSON-RPC 协议版本,固定为 '"2.0"'。
    • 'method': 调用的方法名,这里是 '"execute_command"'。
    • 'params': 方法参数,一个 JSON 对象,包含以下字段:
      • 'command': 要执行的命令,例如 '"echo 'hello from mcp server'"'。
      • 'shell' (可选): 是否通过 shell 执行命令,布尔值,默认为 'false'。如果设置为 'true',则命令将通过系统默认 shell 解释器执行。
      • 'cwd' (可选): 命令执行的工作目录,字符串,例如 '"/tmp"'。如果未指定,则使用服务器的当前工作目录。
    • 'id': 请求 ID,用于匹配请求和响应。
  3. 服务器返回响应: 服务器执行命令后,将通过标准输出返回 JSON-RPC 响应。以下是一个成功执行命令的响应示例:

    {
        "jsonrpc": "2.0",
        "result": {
            "success": true,
            "returncode": 0,
            "stdout": "hello from mcp server\n",
            "stderr": ""
        },
        "id": 1
    }

    响应结果说明:

    • 'jsonrpc': JSON-RPC 协议版本,固定为 '"2.0"'。
    • 'result': 方法执行结果,一个 JSON 对象,包含以下字段:
      • 'success': 命令是否执行成功,布尔值。
      • 'returncode': 命令的返回码,整数,'0' 表示成功,非 '0' 表示失败。
      • 'stdout': 命令的标准输出,字符串。
      • 'stderr': 命令的标准错误输出,字符串。
    • 'id': 与请求 ID 相同的响应 ID。

    如果命令执行失败或发生错误,服务器将返回包含 'error' 字段的 JSON-RPC 响应。

通过以上步骤,MCP 客户端可以利用 'mcp-execute-command' 服务器提供的 'execute_command' 工具,安全地在服务器端执行系统命令,从而扩展 LLM 应用的功能。

信息

分类

开发者工具