关于 MCP Interactive Terminal Server
MCP Interactive Terminal Server 让 Agent 操作 gdb 或 REPL 等需要交互输入的命令行程序,并通过工具管理进程会话、命令和输出。
主要功能
- 01启动交互式命令会话
- 02向运行中的进程发送命令
- 03等待输出或提示文本
- 04查看活动会话
- 05可选将会话输出写入日志
适用场景
- 01自动化 gdb 调试会话
- 02交互操作 UART 控制台
- 03使用 Python REPL
- 04监控交互式命令的输出
MCP 相关
向 MCP 客户端提供交互式终端会话管理工具,支持 stdio、sse 和 streamable-http 传输方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 交互式终端服务
概述
MCP 交互式终端服务允许 Agent 与命令行驱动的提示交互。它适用于自动化和管理交互式终端命令,例如 gdb、UART 控制台或任何其他基于 REPL 的工具。该服务使用 FastMCP 包构建,提供用于管理交互式终端会话的工具,并遵循最新的 MCP 标准。服务支持 FastMCP 提供的三种传输方式:stdio(默认)、sse 和 streamable-http,可适用于各种使用场景。
安装
前提条件
-
Python 3.12 或更高版本 确保系统已安装 Python 3.12 或更高版本。
-
UV Astral 包管理器 UV Astral 是一个可选的包管理器,用于管理依赖项。如果使用它,它会为 Python 提供所需的依赖项。如果调用需要其他依赖项的命令,可以将这些依赖项添加到 UV 配置中,以便一并加载。更好的做法可能是在下游包中完成此操作;如果环境已配置为直接提供所有包,也可以不使用 UV。
使用以下任一方法安装 UV:
- 独立安装程序:
curl -LsSf https://astral.sh/uv/install.sh | sh - Pip 安装:
pip install uv
验证安装:
uv --version - 独立安装程序:
将依赖项添加到 UV Astral
如果使用 UV Astral 作为包管理器,可以选择在其配置中添加 Python 和其他依赖项。有关使用 UV Astral 管理依赖项的详细说明,请参阅 UV Astral 官方文档。
克隆仓库
将仓库克隆到本地计算机:
git clone https://github.com/danielp370-msft/mcp_interactive_terminal
cd mcp_interactive_terminal
用法
运行服务
使用 VS Code
-
在 VS Code 中打开项目。
-
确保
.vscode/mcp.json文件配置正确。可以使用以下任一示例:示例 1:使用 uv(包管理器)
{ "servers": { "interactive-terminal-server": { "type": "stdio", "command": "uv", "args": ["run", "${workspaceFolder}/interactive/server.py"] } } }示例 2:直接使用 python(当前默认方式)
{ "servers": { "interactive-terminal-server": { "type": "stdio", "command": "python3.13", "args": ["${workspaceFolder}/interactive/server.py"] } } }示例 3:使用 streamable-http 传输方式
{ "servers": { "interactive-terminal-server": { "type": "http", "url": "http://localhost:8070/mcp/" } } } -
使用 VS Code 中的 MCP 界面启动服务。
使用命令行
**注意:**只有在使用非 stdio 传输方式(例如
streamable-http)或希望在 VS Code 之外运行服务时,才需要通过命令行启动服务。对于 stdio,VS Code 的 MCP 界面可以自动启动服务。
-
Stdio 传输方式(默认):
uv run python -m interactive.server如果希望使用运行时环境提供的包,也可以不使用
uv来运行服务:python -m interactive.server -
Streamable HTTP 传输方式:
uv run python -m interactive.server --transport streamable-http --port 8070或者不使用
uv:python -m interactive.server --transport streamable-http --port 8070
交互式终端工具
该服务提供以下工具:
-
启动会话:
- 描述:通过调用 shell 命令启动新的交互式会话。
- 参数:
command(str):用于启动会话的命令(例如,python)。args(list):命令的参数。log_file(str,可选):日志文件的路径,会话输出将写入该文件。如果未提供,则不会记录日志。
- 返回值:包含会话 ID 的消息。
-
等待输出或提示:
- 描述:等待特定输出或提示,或在超时时间内收集输出。
- 参数:
session_id(int):要监控的会话 ID。prompts(list):用于检测输出的字符串列表(例如,提示或特定文本)。timeout(int):等待输出的最长时间,单位为秒。
- 返回值:指示检测到的输出的消息;如果未找到匹配项,则返回超时消息。
- 注意:此函数也可用于获取当前输出缓冲区。
-
发送命令:
- 描述:向交互式会话发送命令。
- 参数:
session_id(int):会话 ID。command(str):要发送的命令。
- 返回值:指示成功或失败的消息。
-
退出会话:
- 描述:终止交互式会话。
- 参数:
session_id(int):要终止的会话 ID。
- 返回值:指示会话终止状态的消息。
-
获取活动会话:
- 描述:获取所有活动交互式会话的列表。
- 返回值:包含会话 ID 及其状态的字典。
启动会话
你可以使用 start_session 工具启动新会话。
start_session(command: str, args: list, log_file: str = None)
command:用于启动交互式会话的命令(例如,'python')。args:要传递给命令的参数列表。log_file:用于写入会话输出的可选日志文件。
示例:
start_session("python", ["-i"])
这将启动一个 Python 交互式会话。
测试
运行单元测试以验证服务的功能:
uv run python3 -m unittest
参考资料
致谢
本产品是在 Daniel Potts 的帮助下通过 vibe coding 编写的,特别感谢他不断催促 AI 进行一轮又一轮的交互式测试——他确实是质量保证(以及耐心)方面的楷模。没有人类直接编写任何代码或文档,甚至没人费心协助为此项目提交 PR。所有代码和文档均由 GitHub Copilot(OpenAI GPT-4)辅助生成。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。