使用说明
交互式终端MCP
英语 | 中文
一种模型上下文协议(MCP)服务器,提供 有状态的交互式终端访问.
与独立运行的标准命令执行工具不同,此服务器允许LLM生成持久进程(如 ssh, ipython,或 gdb),维护会话上下文,并通过标准输入/输出流与shell交互。
为什么要使用此MCP?
标准命令执行工具通常独立运行(无状态)。此MCP服务器允许持久会话(有状态),这对于远程管理和调试工具至关重要。
并排比较
| 场景 | 没有此MCP(无状态) | 有交互式终端MCP(有状态) |
|---|---|---|
| 1.远程SSH会话 | 上下文丢失:必须为每个命令重新连接。 > ssh user@host "cd /var/www" (出口)> ssh user@host "ls" (从home目录开始) |
上下文已保留:保持一个连接。 1. spawn_process(["ssh", "user@host"])2. send_command(id, "cd /var/www")3. send_command(id, "ls") -> index.php |
| 2.交互式调试 | 不支持:无法处理交互式提示或等待特定的输出模式。 | 支持:可以驱动交互式工具。 1. spawn_process(["gdb", "./binary"])2. send_command(id, "break main")3. send_command(id, "run") |
特性
- 有意义的会议:环境变量、工作目录和进程状态在命令之间保持不变。
- 交互式支持:专为需要持续输入的REPL和交互式CLIs而设计。
- 输出控制:支持等待特定的输出模式(正则表达式),以确保命令在返回前完成。
- 会话管理:处理多个并发终端会话。
- 历史:通过MCP资源访问完整会话日志。
用法
直接运行
uvx interactive-terminal-mcp
与Claude Code的集成
您可以将此服务器添加到Claude Code uvx.
使用pipx:
claude mcp add --transport stdio interactive-terminal-mcp -- uvx interactive-terminal-mcp
手动配置(claude_config.json):
{
"mcpServers": {
"interactive-terminal": {
"command": "uvx",
"args": ["interactive-terminal-mcp"]
}
}
}
可用工具
spawn_process
启动一个新的交互过程。
- 参数:
command(List[str]):要运行的命令(例如。,["bash"],["python3", "-i"]).
- 退货:
session_id(str)
send_command
将输入发送到活动会话并等待输出。
- 参数:
session_id(str):目标会话ID。cmd(str):要发送的命令字符串。wait_for(str,可选):要等待的正则表达式模式(例如。,\$\s*).如果未提供,则默认为短超时。timeout(int,可选):等待的最长时间(秒)。
read_buffer
从会话缓冲区读取任何待处理的输出,而不发送新命令。
- 参数:
session_id(str)
kill_session
终止特定会话。
- 参数:
session_id(str)
资源
cli://{session_id}/history:检索特定会话的完整交互历史记录(输入和输出)。
路线图
- [ ] 会话录制:支持以标准格式保存交互日志(例如。, 终端录屏工具)用于回放和审计。
- [ ] 人为干预:启用用户暂停、终止或手动干预代理管理的活动shell会话的机制。
[!警告] 安全警告:此工具提供对连接的LLM的完全终端访问。LLM将具有与运行MCP服务器的用户相同的权限。仅在受信任的环境或沙盒容器(如Docker)中使用,以防止未经授权的系统修改。
