mcpField
T
Terminal UI DevTools

Terminal UI DevTools

本地服务
github.com/nvms开发工具1412 周前更新

关于 Terminal UI DevTools

tui-mcp 是用于在持久伪终端会话中启动和控制终端应用的 MCP 服务,为 Agent 和开发者提供交互式 TUI 操作,并可呈现截图和可读文本。

主要功能

  1. 01在持久伪终端中启动应用
  2. 02发送按键、文本和鼠标事件
  3. 03捕获 PNG 截图和文本快照
  4. 04读取终端区域与滚动历史
  5. 05监控和管理多个会话

适用场景

  1. 01操作交互式命令行工具
  2. 02处理 SSH 提示和安装程序
  3. 03监控构建、日志和部署
  4. 04并行运行开发与调试会话

MCP 相关

它向 MCP 客户端提供用于启动、检查和交互操作终端会话的工具。服务会在工具调用之间保持活动的伪终端会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"tui": {
"command": "npx",
"args": [
"-y",
"tui-mcp"
]
}
}
}
启动命令npx -y tui-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtui-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

tui-mcp

对于浏览器, Chrome DevTools MCP 是什么;对于终端,tui-mcp 就是什么。

在受管理的 pty 中启动任意终端应用,截取屏幕截图、读取文本、发送按键。应用会认为自己运行在真实终端中。适用于任何 TUI 框架,也适用于完全不使用框架的应用——vim、htop、bubbletea、textual、ink、inquirer、trend、ncurses 等等。

tui-mcp MCP 服务

这与 bash 工具有何不同?

bash 工具运行的是离散命令——每次调用都是即发即弃。进程退出,输出返回。tui-mcp 会维护一个持久的交互式会话。pty 会在各次调用之间保持运行。这在以下情况中很重要:

  • 工具有状态——你在 mysql shell 中,已经执行了 USE 选择数据库,或正在事务中。bash 工具无法在各次调用之间保持该会话打开。
  • 工具有界面——htop、vim、k9s、lazygit。由于这些应用会用 ANSI 转义码绘制全屏界面,bash 工具只能返回一堆乱码。tui-mcp 通过 xterm 仿真将其渲染为易读的屏幕截图或文本快照。
  • 交互需要多个步骤——SSH 先提示输入密码,再提示输入 2FA 代码,然后你才能登录。交互式安装程序会询问问题。git rebase -i 会打开编辑器。这些都是无状态 bash 工具无法处理的对话式流程。
  • 你需要监视某些内容——跟踪日志、监视构建、等待部署完成。会话会保持打开,Agent 可以随时截取快照以检查进度。
  • 工具需要 TTY——有些 CLI 在没有真实终端时行为会不同(或拒绝运行)。node-pty 会为它们提供带有 xterm-256color 的真实 pty,因此一切都能按预期运行。

bash 工具就是 exec()。tui-mcp 则是“坐到终端前,像人一样使用它”。一个运行命令,另一个操作软件。

以下是 screenshot 工具的一些示例输出:

trend dashboard lore htop

设置

claude mcp add --scope user tui-mcp -- npx tui-mcp

工具

工具描述
launch在受管理的 pty 中启动 TUI 应用
kill终止会话
list_sessions列出会话,包括最近退出的会话
status获取某个会话的状态和退出代码
resize调整终端大小
screenshot将终端截取为 PNG
snapshot将终端截取为纯文本
scrollback读取缓冲区,包括已滚出屏幕的历史内容
output读取原始 pty 字节流(包括转义序列)
read_region读取缓冲区的矩形区域
cursor获取光标位置
send_keys发送按键或组合键(Enter、Ctrl+C、Ctrl+Up、q)
send_text输入字符串
send_mouse发送鼠标事件
wait_for_text等待正则表达式匹配内容出现
wait_for_idle等待终端停止变化
wait_for_exit等待进程退出并获取其退出代码

有趣的用例

  • 远程运维:Agent 通过 SSH 登录生产服务器,持续查看日志、搜索错误、重启服务,并观察服务恢复。它读取的终端输出与人工 SRE 看到的相同,无需自定义 API。
  • 与旧系统交互:ncurses 管理面板、mysql cli、redis-cli、psql——Agent 都能操作。这些系统永远不会提供 REST API。
  • 多会话编排:Agent 同时启动 3–4 个会话。一个运行开发服务器,一个运行测试,一个持续查看日志,一个在调试器中运行。这基本上就像结对编程,只不过多了一双手。
  • 交互式调试器:gdb、lldb、pdb、node --inspect。Agent 可以设置断点、单步执行代码、检查变量。
  • 以对话方式管理基础设施:kubectl、terraform、docker、aws cli。Agent 无需使用 Kubernetes MCP 服务或 AWS MCP 服务,只需像人一样直接使用命令行工具。

大多数 MCP 服务都封装了某个特定工具或 API。tui-mcp 封装的是终端本身——所有工具都已支持的通用界面。它就是 MCP 的 eval()。

监控

在终端中查看并控制所有活动会话:

npx tui-mcp monitor

左侧是会话列表,右侧是实时 ANSI 渲染的终端预览。监控器会发现此计算机上所有正在运行的 tui-mcp 服务,并汇总它们的会话。

按键:

  • 使用 j/k 或方向键浏览服务及其会话,使用 g/G 跳到顶部/底部,也可以用鼠标点击和滚动
  • 在会话上按 enter 可连接——你输入的所有内容都会传递给其 pty,按 ctrl+\ 可断开连接
  • 在服务上按 enter 可打开以该服务为目标的启动面板
  • 按 s 可将会话的完整回滚缓冲区加载到可滚动视图中,按 esc 返回实时视图
  • 按 l 可在当前选中行对应的服务上启动新会话(按 ctrl+s 可循环切换目标)
  • 在 3 秒内按两次 x 可终止选中的会话
  • 按 q 退出

连接、启动、终止和查看回滚缓冲区需要服务版本为 1.2 或更高;较旧服务上的会话会标记为 ro(只读),仍可查看。

工作原理

your app  <-->  node-pty  <-->  xterm-headless  <-->  MCP tools
                (pty)        (terminal emulator)    (screenshot, send_keys, etc.)

此应用通过 node-pty 在真实的伪终端中运行。其输出由 xterm-headless 解析(它与驱动 VS Code 终端的终端模拟器相同,但没有 DOM)。MCP 工具会读取并操作解析后的缓冲区。

评论

支持 Markdown

第一次接触 MCP?

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

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