交互式终端MCP
英语 | 中文
一种模型上下文协议(MCP)服务器,提供 有状态的交互式终端访问.
与独立运行的标准命令执行工具不同,此服务器允许LLM生成持久进程(如 ssh, ipython,或 gdb),维护会话上下文,并通过标准输入/输出流与shell交互。
为什么要使用此MCP?
标准命令执行工具通常独立运行(无状态)。此MCP服务器允许持久会话(有状态),这对于远程管理和调试工具至关重要。
并排比较
| 场景 | 没有此MCP(无状态) | 有交互式终端MCP(有状态) |
|---|---|---|
| 1.远程SSH会话 | 上下文丢失:必须为每个命令重新连接。 |
ssh user@host "cd /var/www"(出口)ssh user@host "ls"(从home目录开始)| 上下文已保留:保持一个连接。
spawn_process(["ssh", "user@host"])send_command(id, "cd /var/www")send_command(id, "ls")->index.php|
| 2.交互式调试 | 不支持:无法处理交互式提示或等待特定的输出模式。 | 支持:可以驱动交互式工具。
spawn_process(["gdb", "./binary"])send_command(id, "break main")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)中使用,以防止未经授权的系统修改。
