Terminal MCP Server

by weidwonder
Verified
# Terminal MCP Server Terminal MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,用于在本地或远程主机上执行命令。它提供了一个简单而强大的接口,允许 AI 模型和其他应用程序执行系统命令,无论是在本地机器上还是通过 SSH 在远程主机上。 ## 功能特性 - **本地命令执行**:直接在本地机器上执行命令 - **远程命令执行**:通过 SSH 在远程主机上执行命令 - **会话持久化**:支持会话持久化,在指定时间内(默认 20 分钟)复用同一个终端环境 - **环境变量支持**:允许为命令设置自定义环境变量 - **多种连接方式**:支持通过 stdio 和 SSE (Server-Sent Events) 两种方式连接 ## 安装 ```bash # 克隆仓库 git clone https://github.com/weidwonder/terminal-mcp-server.git cd terminal-mcp-server # 安装依赖 npm install # 构建项目 npm run build ``` ## 使用方法 ### 启动服务器 ```bash # 使用 stdio 方式启动服务器(默认模式) npm start # 或者直接运行构建后的文件 node build/index.js ``` ### 以 SSE 模式启动服务器 SSE (Server-Sent Events) 模式允许您通过 HTTP 远程连接到服务器。 ```bash # 以 SSE 模式启动服务器 npm run start:sse # 或者直接运行构建后的文件并添加 SSE 标志 node build/index.js --sse ``` 您可以使用以下命令行选项自定义 SSE 服务器: | 选项 | 描述 | 默认值 | |------|------|--------| | `--port` 或 `-p` | 监听的端口 | 8080 | | `--endpoint` 或 `-e` | 端点路径 | /sse | | `--host` 或 `-h` | 绑定的主机地址 | localhost | 自定义选项示例: ```bash # 在端口 3000,端点 /mcp,并绑定到所有网络接口上启动 SSE 服务器 node build/index.js --sse --port 3000 --endpoint /mcp --host 0.0.0.0 ``` 这将启动服务器并在 `http://0.0.0.0:3000/mcp` 监听 SSE 连接。 ### 使用 MCP Inspector 测试 ```bash # 启动 MCP Inspector 工具 npm run inspector ``` ## execute_command 工具 execute_command 工具是 Terminal MCP Server 提供的核心功能,用于在本地或远程主机上执行命令。 ### 参数 | 参数名 | 类型 | 必填 | 描述 | |--------|------|------|------| | command | string | 是 | 要执行的命令 | | host | string | 否 | 要连接的远程主机。如果不提供,则在本地执行命令 | | username | string | 当指定 host 时必填 | SSH 连接的用户名 | | session | string | 否 | 会话名称,默认为 "default"。相同的 session 名称在 20 分钟内会持久复用同一个终端环境 | | env | object | 否 | 环境变量,默认为空对象 | ### 使用示例 #### 本地执行命令 ```json { "command": "ls -la", "session": "my-local-session", "env": { "NODE_ENV": "development" } } ``` #### 远程执行命令 ```json { "host": "example.com", "username": "user", "command": "ls -la", "session": "my-remote-session", "env": { "NODE_ENV": "production" } } ``` ## 配置到 AI 助手 ### 配置到 Roo Code 1. 打开 VSCode 并安装 Roo Code 扩展 2. 打开 Roo Code 设置文件:`~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json` 3. 添加以下配置: #### 对于 stdio 模式(本地连接) ```json { "mcpServers": { "terminal-mcp": { "command": "node", "args": ["/path/to/terminal-mcp-server/build/index.js"], "env": {} } } } ``` #### 对于 SSE 模式(远程连接) ```json { "mcpServers": { "terminal-mcp-sse": { "url": "http://localhost:8080/sse", "headers": {} } } } ``` 如果您自定义了服务器地址、端口或端点,请将 `localhost:8080/sse` 替换为您的实际配置。 ### 配置到 Cline 1. 打开 Cline 设置文件:`~/.cline/config.json` 2. 添加以下配置: #### 对于 stdio 模式(本地连接) ```json { "mcpServers": { "terminal-mcp": { "command": "node", "args": ["/path/to/terminal-mcp-server/build/index.js"], "env": {} } } } ``` #### 对于 SSE 模式(远程连接) ```json { "mcpServers": { "terminal-mcp-sse": { "url": "http://localhost:8080/sse", "headers": {} } } } ``` ### 配置到 Claude Desktop 1. 打开 Claude Desktop 设置文件:`~/Library/Application Support/Claude/claude_desktop_config.json` 2. 添加以下配置: #### 对于 stdio 模式(本地连接) ```json { "mcpServers": { "terminal-mcp": { "command": "node", "args": ["/path/to/terminal-mcp-server/build/index.js"], "env": {} } } } ``` #### 对于 SSE 模式(远程连接) ```json { "mcpServers": { "terminal-mcp-sse": { "url": "http://localhost:8080/sse", "headers": {} } } } ``` ## 最佳实践 ### 命令执行 - 在执行命令前,最好先判断系统类型(Mac、Linux 等) - 使用完整路径以避免路径相关问题 - 对于需要保持环境的命令序列,使用 `&&` 连接多个命令 - 对于长时间运行的命令,考虑使用 `nohup` 或 `screen`/`tmux` ### SSH 连接 - 确保已经设置了 SSH 免密登录(使用密钥认证) - 如果连接失败,检查密钥文件是否存在(默认路径:`~/.ssh/id_rsa`) - 确保远程主机的 SSH 服务正在运行 ### 会话管理 - 利用 session 参数在相关命令之间保持环境 - 对于需要特定环境的操作,使用相同的 session 名称 - 注意会话会在 20 分钟无活动后自动关闭 ### 错误处理 - 命令执行结果会包含 stdout 和 stderr - 检查 stderr 以确定命令是否成功执行 - 对于复杂操作,添加验证步骤以确保操作成功 ## 注意事项 - 远程执行命令时,需要提前设置 SSH 免密登录 - 本地执行命令时,命令将在启动服务器的用户上下文中执行 - 会话超时时间为 20 分钟,超时后会自动断开连接