终端命令执行服务器

Terminal MCP Server是一个模型上下文协议服务器,允许在本地或远程主机上执行命令,为AI模型和其他应用程序提供简单而强大的接口。

  • by weidwonder
  • TypeScript
  • 混合部署
  • 28 星标
  • 更新于
在 GitHub 查看 weidwonder/terminal-mcp-server

使用说明

终端MCP服务器

Notice 注意事项

当前项目不再维护。我建议你们使用更高级的命令工具---- 桌面指挥官
当前项目已经不在维护。我建议大家用更先进的终端MCP工具 桌面指挥官

中文文档

终端MCP服务器是一个模型上下文协议(MCP)服务器,允许在本地或远程主机上执行命令。它为AI模型和其他应用程序提供了一个简单而强大的界面,可以在本地机器上或通过SSH在远程主机上执行系统命令。

特性

  • 本地命令执行:直接在本地计算机上执行命令
  • 远程命令执行:通过SSH在远程主机上执行命令
  • 会话保持:支持在指定时间(默认20分钟)内重用相同终端环境的持久会话
  • 环境变量:为命令设置自定义环境变量
  • 多种连接方式:通过stdio或SSE(服务器发送事件)连接

安装

通过Smithery安装

通过以下方式自动安装Claude Desktop的终端mcp服务器 铁匠铺:

npx -y @smithery/cli install @weidwonder/terminal-mcp-server --client claude

手动安装

# Clone the repository
git clone https://github.com/weidwonder/terminal-mcp-server.git
cd terminal-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

用法

启动服务器

# Start the server using stdio (default mode)
npm start

# Or run the built file directly
node build/index.js

以SSE模式启动服务器

SSE(服务器发送事件)模式允许您通过HTTP远程连接到服务器。

# Start the server in SSE mode
npm run start:sse

# Or run the built file directly with SSE flag
node build/index.js --sse

您可以使用以下命令行选项自定义SSE服务器:

选项 描述 默认值
--port 或 -p 要侦听的端口 8080
--endpoint 或 -e 端点路径 /sse
--host 或 -h 要绑定到 localhost的主机

自定义选项示例:

# Start SSE server on port 3000, endpoint /mcp, and bind to all interfaces
node build/index.js --sse --port 3000 --endpoint /mcp --host 0.0.0.0

这将启动服务器并在以下位置监听SSE连接 http://0.0.0.0:3000/mcp.

MCP检验员测试

# Start the MCP Inspector tool
npm run inspector

execute_command工具

execute_command工具是终端MCP服务器提供的核心功能,用于在本地或远程主机上执行命令。

参数

参数 类型 必填 说明
command string Yes 要执行的命令
host string 否 要连接的远程主机。如果没有提供,则将在本地执行该命令
username string 指定主机时必填 SSH连接的用户名
session string No 会话名称,默认为“默认”。相同的会话名称将在20分钟内重复使用相同的终端环境
env object No 环境变量,默认为空对象

例子

在本地执行命令

{
  "command": "ls -la",
  "session": "my-local-session",
  "env": {
    "NODE_ENV": "development"
  }
}

在远程主机上执行命令

{
  "host": "example.com",
  "username": "user",
  "command": "ls -la",
  "session": "my-remote-session",
  "env": {
    "NODE_ENV": "production"
  }
}

使用AI助手进行配置

使用Roo代码进行配置

  1. 打开VSCode并安装Roo Code扩展
  2. 打开Roo Code设置文件: ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
  3. 添加以下配置:

用于stdio模式(本地连接)

{
  "mcpServers": {
    "terminal-mcp": {
      "command": "node",
      "args": ["/path/to/terminal-mcp-server/build/index.js"],
      "env": {}
    }
  }
}

用于SSE模式(远程连接)

{
  "mcpServers": {
    "terminal-mcp-sse": {
      "url": "http://localhost:8080/sse",
      "headers": {}
    }
  }
}

替换 localhost:8080/sse 如果您已经对其进行了自定义,则使用您的实际服务器地址、端口和端点。

使用Cline进行配置

  1. 打开Cline设置文件: ~/.cline/config.json
  2. 添加以下配置:

用于stdio模式(本地连接)

{
  "mcpServers": {
    "terminal-mcp": {
      "command": "node",
      "args": ["/path/to/terminal-mcp-server/build/index.js"],
      "env": {}
    }
  }
}

用于SSE模式(远程连接)

{
  "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模式(本地连接)

{
  "mcpServers": {
    "terminal-mcp": {
      "command": "node",
      "args": ["/path/to/terminal-mcp-server/build/index.js"],
      "env": {}
    }
  }
}

用于SSE模式(远程连接)

{
  "mcpServers": {
    "terminal-mcp-sse": {
      "url": "http://localhost:8080/sse",
      "headers": {}
    }
  }
}

最佳实践

命令执行

  • 在运行命令之前,最好确定系统类型(Mac、Linux等)
  • 使用完整路径以避免与路径相关的问题
  • 对于需要维护环境的命令序列,请使用 && 连接多个命令
  • 对于长时间运行的命令,考虑使用 nohup 或 screen/tmux

SSH连接

  • 确保已设置基于SSH密钥的身份验证
  • 如果连接失败,请检查密钥文件是否存在(默认路径: ~/.ssh/id_rsa)
  • 确保SSH服务正在远程主机上运行

会话管理

  • 使用会话参数来维护相关命令之间的环境
  • 对于需要特定环境的操作,请使用相同的会话名称
  • 请注意,会话将在20分钟不活动后自动关闭

错误处理

  • 命令执行结果包括stdout和stderr
  • 检查stderr以确定命令是否成功执行
  • 对于复杂的操作,添加验证步骤以确保成功

重要说明

  • 对于远程命令执行,必须提前设置基于SSH密钥的身份验证
  • 对于本地命令执行,命令将在启动服务器的用户的上下文中运行
  • 会话超时为20分钟,之后连接将自动关闭