项目简介

本项目 'terminal_server' 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 客户端(如 Claude for Desktop)提供执行终端命令的能力。通过此服务器,LLM 可以调用预定义的工具来运行 shell 命令,并将命令输出返回给用户,从而扩展 LLM 的交互能力,使其能够与本地计算机系统进行更深入的集成。

主要功能点

  • 终端命令执行: 允许 LLM 客户端请求服务器执行指定的终端命令。
  • 工作空间隔离: 所有命令都在预定义的工作空间目录 '~/mcp/workspace/' 下执行,提供了一定的环境隔离。
  • 工具注册: 通过 MCP 协议的工具注册机制,向 LLM 客户端声明 'run_command' 工具,使 LLM 能够发现并调用此功能。
  • 标准 Stdio 传输: 使用标准输入输出 (stdio) 作为 MCP 服务器与客户端之间的通信协议,简化部署和运行。

安装步骤

  1. 安装 Python 3.10+: 如果你的系统没有安装 Python 3.10 或更高版本,请先安装。可以访问 python官网 下载并安装。

  2. 安装 uv: 'uv' 是一个快速的 Python 包管理器,用于项目依赖管理和运行。按照 README.md 中的指引安装 'uv'。

    • Mac/Linux: 打开终端并执行命令:
      curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows: 请参考 uv安装页面 的说明进行安装。
    • 安装完成后,重启终端,确保 'uv' 命令可以被识别。
  3. 创建 MCP 服务器目录结构: 在用户目录下创建 'mcp' 文件夹,并在其下创建 'servers' 和 'workspace' 目录,然后在 'servers' 目录下创建 'terminal_server' 目录:

    mkdir -p ~/mcp/servers/terminal_server
    mkdir -p ~/mcp/workspace
    cd ~/mcp/servers/terminal_server
  4. 初始化 Python 项目: 在 'terminal_server' 目录下初始化 Python 项目:

    uv init
  5. 创建并激活虚拟环境: 创建 Python 虚拟环境并激活它,隔离项目依赖:

    uv venv
    source .venv/bin/activate  # Mac/Linux
    .venv\Scripts\activate     # Windows
  6. 安装 MCP 客户端库: 安装 'mcp[cli]' 包,这是运行 MCP 服务器所需的库:

    uv add "mcp[cli]"
  7. 创建服务器代码文件: 在 'terminal_server' 目录下创建 'terminal_server.py' 文件,并将仓库提供的 'terminal_server.py' 代码复制粘贴到文件中。

服务器配置

要让 MCP 客户端(例如 Claude for Desktop)连接到此服务器,需要配置客户端的配置文件。以 Claude for Desktop 为例,你需要编辑 'claude_desktop_config.json' 文件,通常位于:

  • Mac: '~/Library/Application\ Support/Claude/claude_desktop_config.json'

在 'claude_desktop_config.json' 文件中,找到 '"mcpServers"' 部分,并添加或修改 'terminal' 服务器的配置。以下是配置示例:

{
    "mcpServers": {
        "terminal": {
            "command": "/Users/<你的用户名>/.local/bin/uv",  // uv 命令的完整路径,根据你的 uv 安装位置修改
            "args": [
                "--directory", "/Users/<你的用户名>/mcp/servers/terminal_server", // terminal_server.py 文件所在的目录
                "run",
                "terminal_server.py" // 运行服务器的 Python 脚本
            ]
        }
    }
}

配置参数说明:

  • '"terminal"': 服务器名称,客户端通过此名称识别和调用服务器。
  • '"command"': 启动服务器的命令。这里使用 'uv' 命令来运行 Python 脚本。请替换 '<你的用户名>' 为你自己的用户名,并确保路径指向 'uv' 的实际安装位置。
  • '"args"': 传递给 'command' 的参数列表。
    • '"--directory"': 指定工作目录为 'terminal_server.py' 所在的目录。
    • '"run"': 'uv run' 子命令用于运行 Python 脚本。
    • '"terminal_server.py"': 要运行的 Python 脚本文件名。

请务必根据你的实际用户名和 'uv' 的安装路径修改 'command' 和 'args' 中的路径。 保存 'claude_desktop_config.json' 文件后,重启 Claude for Desktop 使配置生效。

基本使用方法

  1. 启动 MCP 服务器: 在 'terminal_server' 目录下,使用以下命令启动服务器:

    uv run terminal_server.py

    服务器将在后台运行,并通过 stdio 与客户端通信。

  2. 在 LLM 客户端中调用工具: 在配置好 Claude for Desktop 后,你可以在 Claude 中使用自然语言指令来调用 'terminal' 服务器提供的 'run_command' 工具。例如,你可以尝试以下指令:

    • 'Run the command ls in my workspace.' (在工作空间目录下执行 'ls' 命令)
    • 'Execute echo Hello World.' (执行 'echo Hello World' 命令)

    Claude 会解析你的指令,并将相应的命令发送到 'terminal' 服务器执行,然后将执行结果返回给你。

注意: 由于此服务器允许 LLM 执行任意终端命令,存在潜在的安全风险。请谨慎使用,并确保只在信任的环境中运行。可以考虑增加安全过滤机制,限制可执行的命令类型,以提高安全性。

信息

分类

桌面与硬件