终端MCP服务器
用于管理多个持久终端会话的模型上下文协议(MCP)服务器。
特性
- 创建和管理多个命名终端会话
- 在特定会话中执行命令
- 持久化shell环境(环境变量、工作目录、历史记录)
- 会话输出缓冲和检索
- 清洁会话生命周期管理
- 为方便起见,默认会话支持
- 使用Observer应用程序(macOS)进行可视化会话监控
安装
npm install
npm run build用法
可用工具
- 创建会话 -创建新的持久终端会话
- sessionId (字符串,必填):会话的唯一标识符 - shell (字符串,可选):要使用的Shell(默认值:系统Shell) - cwd (字符串,可选):工作目录(默认:当前目录)
- list_sessions -列出所有活动的终端会话
- execute_in_session -在特定会话中执行命令
- sessionId (string,必填):在中执行命令的会话ID - command (string,必填):要执行的命令
- get_session_output -获取会话的最新输出
- sessionId (string,必填):从中获取输出的会话ID - lines (number,可选):要检索的最近行数
- destroy_session -销毁终端会话
- sessionId (字符串,必填):要销毁的会话ID
- set_default_session -为后续操作设置默认会话
- sessionId (字符串,必填):会话ID设置为默认值
示例用法
// Create two sessions
create_session({ sessionId: "app" })
create_session({ sessionId: "client", cwd: "/tmp" })
// Start an app in session 1
execute_in_session({ sessionId: "app", command: "npm start" })
// Interact with the app from session 2
execute_in_session({ sessionId: "client", command: "curl http://localhost:3000" })
// Check what's running
list_sessions({})
// Get recent output
get_session_output({ sessionId: "app", lines: 20 })
// Cleanup
destroy_session({ sessionId: "client" })建筑
- 每个会话都以非交互模式运行一个持久shell进程
- 命令通过stdin发送到shell
- 输出被捕获和缓冲(每个会话最多1000行)
- 会话维护自己的环境和工作目录
- 适当的清理可确保没有孤立的进程
- 事件侦听器管理可防止内存泄漏
- 使用Claude代码进行稳健操作的错误处理
稳定性和可靠性
此服务器已经过测试和调试,可以与Claude Code一起使用。关键修复包括:
- 内存泄漏预防:在命令执行中正确清理事件侦听器
- TTY兼容性:用于基于管道的通信的非交互式外壳模式
- 错误处理:文件操作和流程管理的全面错误处理
- 资源清理:进程终止和目录清理的适当时间
看 ISSUE_MEMORY_LEAK.md 有关稳定性改进的详细技术信息。
观察者应用程序(macOS)
这 observer/ 该目录包含一个Swift macOS应用程序,用于实时可视化监控终端会话。Observer应用程序提供:
- 用于会话显示的网格和侧边栏视图模式
- 通过文件监视进行实时输出监控
- 用于跟踪多个终端会话的可视化界面
要运行Observer应用程序,请执行以下操作:
cd observer
./run.sh发展
npm install
npm run build
npm run dev # Watch mode许可证
麻省理工学院
