项目简介
mcpterm 是一个基于 Model Context Protocol (MCP) 构建的工具服务器,它利用 'mcp-go' 库实现,旨在为 LLM 客户端(如 Claude Desktop)提供与终端会话交互的能力。通过 mcpterm,LLM 可以执行 shell 命令,并获取命令输出或终端屏幕内容,从而实现更丰富的交互式应用场景,例如代码执行、文件系统操作和 TUI 应用控制。
主要功能点
- 持久化终端会话: 为每个会话 ID 创建和维护一个 bash 终端会话,后续命令会在同一会话中执行,保持上下文状态(例如,目录切换、环境变量)。
- 命令执行工具 (run): 允许 LLM 客户端在指定的终端会话中执行 shell 命令,并同步返回命令的文本输出结果。
- 屏幕输出工具 (runScreen): 允许 LLM 客户端向终端会话发送命令或控制序列,并返回终端的屏幕输出,特别适用于 TUI (文本用户界面) 应用程序,例如 vim 或 REPL。
- 控制序列支持: 'runScreen' 工具支持常见的控制字符序列(如 Ctrl+C, Ctrl+Z, Escape 等),方便 LLM 控制 TUI 应用。
安装步骤
-
克隆仓库:
git clone https://github.com/dwrtz/mcpterm.git cd mcpterm -
编译程序: 确保已安装 Go 语言环境和 Make 工具,然后执行 'make' 命令编译 'mcpterm' 可执行文件。
make编译成功后,会在 'bin' 目录下生成 'mcpterm' 可执行文件。
-
移动到 PATH 目录 (可选): 为了方便在任何位置运行 'mcpterm' 命令,可以将编译好的可执行文件移动到系统的 PATH 目录,例如 '/usr/local/bin'。
sudo mv bin/mcpterm /usr/local/bin/mcpterm
服务器配置
要将 mcpterm 集成到 MCP 客户端(例如 Claude Desktop),需要编辑客户端的配置文件,添加 mcpterm 服务器的配置信息。以 Claude Desktop 为例,编辑 'claude_desktop_config.json' 文件(macOS 系统通常位于 '~/Library/Application Support/Claude/claude_desktop_config.json'),在 'mcpServers' 字段下添加如下配置:
{ "mcpServers": { "mcpterm": { "command": "mcpterm", // MCP 服务器启动命令,这里是 mcpterm 可执行文件的名称 "args": [] // 启动参数,mcpterm 不需要额外的启动参数,所以为空数组 } } }
配置参数说明:
- server name: 'mcpterm' (服务器名称,可以自定义,用于在客户端中标识和引用该服务器)
- command: 'mcpterm' (MCP 服务器的启动命令,通常是服务器可执行文件的名称。如果 'mcpterm' 没有添加到 PATH 目录,则需要使用可执行文件的完整路径)
- args: '[]' (启动参数,传递给服务器程序的命令行参数。'mcpterm' 默认不需要额外的参数)
配置完成后,重启 MCP 客户端,客户端应该能够检测到并连接到 mcpterm 服务器。
基本使用方法
配置完成后,在支持 MCP 协议的 LLM 客户端中,应该可以看到 'run' 和 'runScreen' 两个工具。
- run 工具: 用于执行简单的 shell 命令并获取输出。例如,在 Claude 中,你可以指示 Claude 使用 'run' 工具执行 'ls -l' 命令来查看当前目录的文件列表。
- runScreen 工具: 用于与 TUI 应用交互或获取终端屏幕内容。例如,你可以指示 Claude 使用 'runScreen' 工具发送 'vim' 命令和一些 vim 操作指令,来编辑文本文件。 结合提示词,可以指导 LLM 使用特定的控制序列(例如 '^C' 代表 Ctrl+C)来控制终端程序。
使用示例 (Claude 提示词):
请使用 mcpterm 的 run 工具执行 'pwd' 命令,告诉我当前的工作目录。 请使用 mcpterm 的 runScreen 工具打开 vim 编辑器,并创建一个名为 test.txt 的文件,内容为 "Hello MCP!",保存并退出。 (需要 Claude 理解和生成正确的 vim 命令和控制序列)
注意: mcpterm 是一个 proof-of-concept 项目,可能存在一些不完善之处。使用时请注意安全风险,避免执行未知的或潜在危险的命令。
信息
分类
桌面与硬件