交互式终端MCP服务器

一个提供有状态交互式终端访问的模型上下文协议(MCP)服务器,支持持久会话和交互式命令行工具。

  • by WangYihang
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 WangYihang/interactive-terminal-mcp

使用说明

交互式终端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)中使用,以防止未经授权的系统修改。