使用说明
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
贡献
- 克隆该仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
麻省理工学院 许可证
