项目简介
本项目 'terminal_server' 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 客户端(如 Claude for Desktop)提供执行终端命令的能力。通过此服务器,LLM 可以调用预定义的工具来运行 shell 命令,并将命令输出返回给用户,从而扩展 LLM 的交互能力,使其能够与本地计算机系统进行更深入的集成。
主要功能点
- 终端命令执行: 允许 LLM 客户端请求服务器执行指定的终端命令。
- 工作空间隔离: 所有命令都在预定义的工作空间目录 '~/mcp/workspace/' 下执行,提供了一定的环境隔离。
- 工具注册: 通过 MCP 协议的工具注册机制,向 LLM 客户端声明 'run_command' 工具,使 LLM 能够发现并调用此功能。
- 标准 Stdio 传输: 使用标准输入输出 (stdio) 作为 MCP 服务器与客户端之间的通信协议,简化部署和运行。
安装步骤
-
安装 Python 3.10+: 如果你的系统没有安装 Python 3.10 或更高版本,请先安装。可以访问 python官网 下载并安装。
-
安装 uv: 'uv' 是一个快速的 Python 包管理器,用于项目依赖管理和运行。按照 README.md 中的指引安装 'uv'。
- Mac/Linux: 打开终端并执行命令:
curl -LsSf https://astral.sh/uv/install.sh | sh - Windows: 请参考 uv安装页面 的说明进行安装。
- 安装完成后,重启终端,确保 'uv' 命令可以被识别。
- Mac/Linux: 打开终端并执行命令:
-
创建 MCP 服务器目录结构: 在用户目录下创建 'mcp' 文件夹,并在其下创建 'servers' 和 'workspace' 目录,然后在 'servers' 目录下创建 'terminal_server' 目录:
mkdir -p ~/mcp/servers/terminal_server mkdir -p ~/mcp/workspace cd ~/mcp/servers/terminal_server -
初始化 Python 项目: 在 'terminal_server' 目录下初始化 Python 项目:
uv init -
创建并激活虚拟环境: 创建 Python 虚拟环境并激活它,隔离项目依赖:
uv venv source .venv/bin/activate # Mac/Linux .venv\Scripts\activate # Windows -
安装 MCP 客户端库: 安装 'mcp[cli]' 包,这是运行 MCP 服务器所需的库:
uv add "mcp[cli]" -
创建服务器代码文件: 在 '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 使配置生效。
基本使用方法
-
启动 MCP 服务器: 在 'terminal_server' 目录下,使用以下命令启动服务器:
uv run terminal_server.py服务器将在后台运行,并通过 stdio 与客户端通信。
-
在 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 执行任意终端命令,存在潜在的安全风险。请谨慎使用,并确保只在信任的环境中运行。可以考虑增加安全过滤机制,限制可执行的命令类型,以提高安全性。
信息
分类
桌面与硬件