终端界面控制协议服务器

TUI MCP服务器是一个允许AI代理通过interminai与基于终端的应用程序交互的工具,提供会话管理、安全控制和多种终端操作功能。

  • by fridegAI
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 fridegAI/tui-mcp

使用说明

TUI MCP服务器

MCP(模型上下文协议)服务器,使AI代理能够通过以下方式与基于终端的应用程序进行交互 火车 站.

特性

  • 10个MCP工具 完成TUI控制:启动、输入、输出、状态、等待、调整大小、信号、停止、调试、观察
  • 会话管理 具有自动非活动超时清理功能
  • 安全 具有可配置的命令允许列表和阻止模式
  • 逃生序列支持 用于箭头键、功能键和特殊字符
  • 可配置的 通过环境变量设置会话超时和安全策略

先决条件

  • 转到1.25+
  • 火车 站 已安装并在PATH中可用

安装

# Clone the repository
git clone git@github.com:fridegAI/tui-mcp.git
cd tui-mcp

# Build
go build -o tui-mcp ./cmd/tui-mcp

# Or install globally
go install ./cmd/tui-mcp

配置

可以使用环境变量配置服务器。这些可以在MCP客户端配置中设置。

变量 描述 默认值
SESSION_TIMEOUT 会话不活动超时(例如,“5m”、“1h”) 5m
ALLOWED_COMMANDS 以逗号分隔的其他允许命令列表 (空)
BLOCKED_PATTERNS 以逗号分隔的其他被阻止模式列表 (空)

MCP客户端配置

确保将环境变量添加到 env MCP客户端配置中的对象。

示例(通用JSON):

{
  "mcpServers": {
    "tui": {
      "command": "/path/to/tui-mcp",
      "env": {
        "SESSION_TIMEOUT": "10m",
        "ALLOWED_COMMANDS": "gdb,python,bash",
        "BLOCKED_PATTERNS": "rm"
      }
    }
  }
}

MCP工具

工具 说明 输入参数
tui.start 启动TUI会话 command (必填), cols, rows, cwd, env, emulator (默认值:“xterm”)
tui.input 发送按键 session_id (必填), text (必填), password
tui.output 获取屏幕内容 session_id (必填), color (默认值:false), cursor (默认:“打印”)
tui.status 检查会话能力 session_id (必填), quiet
tui.wait 等待活动/退出 session_id (必填), mode (“活动”或“退出”), timeout_ms
tui.resize 调整终端大小 session_id (必填), cols (必填), rows (必填)
tui.signal 发送信号 session_id (必填), signal (必填,例如“信号情报”)
tui.stop 停止会话 session_id (必填)
tui.debug 获取调试信息 session_id (必填), clear
tui.observe 获取输出+状态 session_id (必填)

用法示例

Agent: Start vim to edit a file
→ tui.start {"command": "vim test.txt", "rows": 24, "cols": 80}
← {"session_id": "/tmp/interminai-xxx/socket", "pid": 12345}

Agent: Type some text
→ tui.input {"session_id": "...", "text": "iHello World"}

Agent: Save and quit
→ tui.input {"session_id": "...", "text": "\e:wq\r"}

Agent: Cleanup
→ tui.stop {"session_id": "..."}

转义序列

这 tui.input 该工具支持C风格转义(\r, \n, \t, \e)十六进制逃逸(\xHH).

方向键

箭头键的转义顺序取决于终端的光标模式(正常与应用程序)。

按键 正常模式 应用模式
箭头向上 \e[A \eOA
向下箭头 \e[B \eOB
向右箭头 \e[C \eOC
左箭头 \e[D \eOD

提示: 使用 tui.debug 如果按键的行为不符合预期,则检查当前的termios模式。

安全

默认情况下,服务器强制执行严格的分配列表策略。

默认策略

  • 允许的命令:
    • 读取命令: head, tail, less, more
    • 文本编辑器: vim, nvim, vi, nano, emacs
    • 版本控制: git
    • 系统信息: htop, top, man
    • 网络工具: netstat, ping, traceroute, nc
  • 受阻模式:
    • 递归删除: rm -rf, rm -fr, rm -r /, rm -f /
    • 文件系统操作: mkfs, dd if=
    • 设备写入: > /dev/
    • 文件权限: chmod -R 777, chown -R

定制

您可以通过环境变量扩展允许列表或添加新的阻止模式:

  • ALLOWED_COMMANDS:添加工作流程所需的特定工具(例如。, gdb, python, bash).
  • BLOCKED_PATTERNS:阻止特定参数或危险的命令组合(例如。, rm).

发展

# Run tests
go test -v ./...

# Build
go build -o tui-mcp ./cmd/tui-mcp

贡献

  1. 克隆该仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

麻省理工学院 许可证