mcpField
M
MCP Interactive Terminal Server

MCP Interactive Terminal Server

本地服务
github.com/danielp370-msft开发工具170 周前更新

关于 MCP Interactive Terminal Server

MCP Interactive Terminal Server 让 Agent 操作 gdb 或 REPL 等需要交互输入的命令行程序,并通过工具管理进程会话、命令和输出。

主要功能

  1. 01启动交互式命令会话
  2. 02向运行中的进程发送命令
  3. 03等待输出或提示文本
  4. 04查看活动会话
  5. 05可选将会话输出写入日志

适用场景

  1. 01自动化 gdb 调试会话
  2. 02交互操作 UART 控制台
  3. 03使用 Python REPL
  4. 04监控交互式命令的输出

MCP 相关

向 MCP 客户端提供交互式终端会话管理工具,支持 stdio、sse 和 streamable-http 传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP 交互式终端服务

概述

MCP 交互式终端服务允许 Agent 与命令行驱动的提示交互。它适用于自动化和管理交互式终端命令,例如 gdb、UART 控制台或任何其他基于 REPL 的工具。该服务使用 FastMCP 包构建,提供用于管理交互式终端会话的工具,并遵循最新的 MCP 标准。服务支持 FastMCP 提供的三种传输方式:stdio(默认)、sse 和 streamable-http,可适用于各种使用场景。

安装

前提条件
  1. Python 3.12 或更高版本 确保系统已安装 Python 3.12 或更高版本。

  2. 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
  1. 在 VS Code 中打开项目。

  2. 确保 .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/"
        }
      }
    }
    
  3. 使用 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
    
交互式终端工具

该服务提供以下工具:

  1. 启动会话:

    • 描述:通过调用 shell 命令启动新的交互式会话。
    • 参数:
      • command(str):用于启动会话的命令(例如,python)。
      • args(list):命令的参数。
      • log_file(str,可选):日志文件的路径,会话输出将写入该文件。如果未提供,则不会记录日志。
    • 返回值:包含会话 ID 的消息。
  2. 等待输出或提示:

    • 描述:等待特定输出或提示,或在超时时间内收集输出。
    • 参数:
      • session_id(int):要监控的会话 ID。
      • prompts(list):用于检测输出的字符串列表(例如,提示或特定文本)。
      • timeout(int):等待输出的最长时间,单位为秒。
    • 返回值:指示检测到的输出的消息;如果未找到匹配项,则返回超时消息。
    • 注意:此函数也可用于获取当前输出缓冲区。
  3. 发送命令:

    • 描述:向交互式会话发送命令。
    • 参数:
      • session_id(int):会话 ID。
      • command(str):要发送的命令。
    • 返回值:指示成功或失败的消息。
  4. 退出会话:

    • 描述:终止交互式会话。
    • 参数:
      • session_id(int):要终止的会话 ID。
    • 返回值:指示会话终止状态的消息。
  5. 获取活动会话:

    • 描述:获取所有活动交互式会话的列表。
    • 返回值:包含会话 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)辅助生成。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。