mcpField
T
Terminator

Terminator

远程服务
github.com/iris-networks开发工具1067 周前更新
代码仓库

关于 Terminator

Terminator 是以 Go 编写的 MCP 服务,可在 macOS 和 Linux 上受控执行终端命令。它面向需要单次命令或保留状态的 Shell 会话的 AI 集成,支持 STDIO 和 StreamableHTTP。

主要功能

  1. 01执行命令并设置超时
  2. 02持久化 Shell 会话
  3. 03配置执行 Shell
  4. 04支持 STDIO 和 StreamableHTTP
  5. 05为 GUI 命令转发 DISPLAY

适用场景

  1. 01通过 MCP 客户端运行终端命令
  2. 02在多条命令间保留目录和环境状态
  3. 03通过命令启动 GUI 应用

MCP 相关

向 MCP 客户端提供 execute_command、persistent_shell 和 session_manager 工具,并支持 STDIO 与 StreamableHTTP 传输。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:8080/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
ocishanurcsenitap/terminator:latest

工具

详细介绍

💻 MCP Terminal Server

构建状态 版本 Go 版本 许可证

🚀 用于安全终端执行的高性能模型上下文协议服务
✨ 跨平台 • ⚡ 高性能 • 🔒 超安全 ✨

Terminator 终端

功能

  • 跨平台支持:适用于 macOS 和 Linux
  • 可配置超时:为命令执行设置自定义超时值
  • 安全执行:命令在受控环境中运行,并提供适当的错误处理
  • 平台感知:自动检测并适配宿主平台
  • 灵活的 Shell 支持:可配置用于执行命令的 Shell
  • GUI 应用支持:自动转发 X11 应用所需的 DISPLAY 环境变量
  • 多种传输模式:
    • STDIO 模式,适用于传统 MCP 客户端
    • 🌐 StreamableHTTP 传输:符合标准的基于 HTTP 的 MCP 传输方式,适用于 Web 集成
  • 灵活的会话管理:可使用任意会话 ID,无需预先注册
  • 🎉 持久 Shell 会话:在命令之间保留 Shell 状态(工作目录、环境变量等)

快速开始

# Build the server
make build

# Run in HTTP mode with StreamableHTTP transport
./mcp-terminal-server --http --port 8080

# Run in STDIO mode (default)
./mcp-terminal-server

🚀 快速测试

测试 StreamableHTTP 传输
# Start server in HTTP mode
./mcp-terminal-server --http --port 8080

# Test MCP initialization
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test-client", "version": "1.0.0"}}}'

# Test tools listing (use session ID from initialize response)
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: <session-id>" \
  -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'

# Execute a command
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: <session-id>" \
  -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "execute_command", "arguments": {"command": "echo Hello StreamableHTTP!"}}}'
测试持久 Shell
# Test persistent shell functionality
chmod +x examples/persistent_shell_examples.sh
./examples/persistent_shell_examples.sh

文档

📚 完整文档

可用工具

  1. execute_command - 在超时限制内执行单条命令
  2. persistent_shell - 在持久 Shell 会话中执行命令
  3. session_manager - 管理 Shell 会话(列出、关闭)

环境变量

服务支持以下环境变量:

  • MCP_COMMAND_TIMEOUT - 命令默认超时时间,单位为秒(默认值:30)
  • MCP_SHELL - 用于执行命令的自定义 Shell(Unix 上的默认值:/bin/bash)
  • DISPLAY - GUI 应用使用的 X11 显示器(自动转发给命令)
GUI 应用支持

服务会自动将 DISPLAY 环境变量转发给所有已执行的命令,使 GUI 应用能够在正确的显示器上打开。此功能适用于非持久命令和持久 Shell 会话。

示例:启动 GUI 应用

# Set DISPLAY when starting the server
DISPLAY=:0 ./mcp-terminal-server

# GUI applications launched through MCP will use the correct display
# e.g., xterm, firefox, gedit, etc.

服务端点

以 HTTP 模式运行时(使用 --http 标志),服务会提供:

  • POST /mcp - 用于所有 MCP 操作的 StreamableHTTP 传输端点
    • 支持 initialize、tools/list、tools/call 方法
    • 已认证的请求必须包含 Mcp-Session-Id 请求头
    • 对 initialize 调用,会在响应头中返回会话 ID
MCP 协议支持

此服务实现了 Model Context Protocol 规范:

  • JSON-RPC 2.0 通信
  • 基于 UUID 会话 ID 的会话管理
  • 具有结构化输入/输出的工具执行
  • 使用标准 JSON-RPC 错误代码的错误处理

平台支持

  • macOS(darwin):全面支持 — AMD64 和 ARM64
  • Linux:全面支持 — AMD64 和 ARM64
  • Docker:通过 buildx 提供多架构支持

集成

Claude Desktop

添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "terminal": {
      "command": "/path/to/mcp-terminal-server",
      "env": {
        "MCP_COMMAND_TIMEOUT": "30",
        "DISPLAY": ":0"
      }
    }
  }
}
Docker
# Run AMD64 image
docker run --rm -p 8080:8080 terminal-mcp:latest-linux-amd64 --http --port 8080

# Run ARM64 image  
docker run --rm -p 8080:8080 terminal-mcp:latest-linux-arm64 --http --port 8080

# Run with persistent shell session
docker run --rm -p 8080:8080 -v /tmp:/tmp terminal-mcp:latest-linux-amd64 --http --port 8080
其他 MCP 客户端

此服务遵循标准 MCP 协议,应可与任何兼容的 MCP 客户端配合使用。

开发

构建
# Build for current platform
make build

# Build for all platforms
make build-all

# Build Docker images
make docker-build

# Build and push Docker images
REGISTRY=your-registry.com make docker-push

# Build DXT package for distribution
make dxt
依赖项
  • github.com/mark3labs/mcp-go — MCP Go 库
  • Go 1.23+(自动管理)

生产环境部署

在生产环境中,建议使用适当的进程管理和安全措施运行此服务:

进程管理
  • s6:轻量级进程监控,支持自动重启
  • systemd:功能全面的服务管理,支持资源限制
  • Docker:通过安全隔离进行容器化部署
  • Supervisor:基于 Python 的进程管理
安全功能
  • 非 root 用户运行:使用专用用户账户运行,以限制权限
  • 资源限制:限制 CPU、内存和文件访问
  • 网络隔离:仅绑定到 localhost,以增强安全性
  • AppArmor/SELinux:额外的强制访问控制
  • 文件权限:仅允许访问必要的目录

📋 详细设置说明请参阅 进程管理指南

与 Iris Agent 集成

此 MCP 服务由 Iris Computer Use Agent 使用,这是我们的高级计算机操作 Agent,可自动执行终端交互。

许可证

本项目按原样提供,仅用于开发目的。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。