项目简介
这是一个基于 Electron 和 Model Context Protocol (MCP) 的服务器,旨在允许大型语言模型(LLM)客户端通过标准化的协议,远程控制和交互一个系统终端。它通过一个 Node.js 脚本 ('index.js') 作为 MCP 接口,使用 '@modelcontextprotocol/sdk' 并通过标准输入/输出 (stdio) 进行通信。实际的终端功能则由一个 Electron 应用 ('main.js') 在后台管理和执行,二者之间通过内部的 HTTP API 通信。
主要功能点
- 启动终端会话: 创建新的终端实例,并在其中执行指定的初始命令,返回会话ID和首次输出。
- 在现有会话中执行命令: 向已存在的活动终端会话发送新的命令并执行,获取执行结果输出。
- 获取终端输出: 检索指定终端会话当前的累计输出内容。
- 停止终端会话: 终止指定的终端进程。
- 列出活动会话: 查看当前所有由服务器管理的正在运行的终端会话列表。
安装步骤
- 准备Node.js和npm: 确保您的系统已安装 Node.js(建议 v20 或更高版本)和 npm。
- 克隆仓库: 将项目代码下载到本地您的目录中。
git clone <仓库URL> cd console-terminal-mcp-server # 或您的项目目录名 - 安装依赖: 在项目目录下运行以下命令安装所有必需的 Node.js 模块(包括 Electron、'node-pty'、MCP SDK等)。
npm install - 重建原生模块: 运行以下命令为 Electron 环境重建像 'node-pty' 这样的原生模块,这是 Electron 应用必需的步骤。
node rebuild.js
MCP客户端配置
MCP 服务器通常由 MCP 客户端(如 Claude Desktop)启动和管理。客户端需要知道如何运行此服务器的脚本。这通常通过在客户端的配置文件中添加一个服务器条目来完成,指定启动命令及其参数。
以下是MCP客户端配置所需的关键信息(请根据您的实际安装路径进行调整):
- 服务器名称: 'Electron Terminal' (这是在 'index.js' 中定义的服务器名称)
- 启动命令 ('command'): 'node'
- 命令参数 ('args'): 这是一个数组,包含传递给 'node' 命令的参数。其中最重要的参数是 MCP 服务器主脚本 ('index.js') 的完整文件路径。例如: '[ "C:\您的项目路径\console-terminal-mcp-server\index.js" ]' (Windows 示例) '[ "/home/您的用户/您的项目路径/console-terminal-mcp-server/index.js" ]' (Linux/macOS 示例)
请将上述信息配置到您的 MCP 客户端指定的配置文件中(例如 Claude Desktop 的 'claude_desktop_config.json' 文件),以便客户端能够发现并启动此服务器。
基本使用方法
- 启动服务器:
在项目目录下打开终端,运行以下命令启动 MCP 服务器:
这将启动 MCP 服务器进程(通过 stdio 监听客户端请求),并自动在后台启动一个隐藏的 Electron 进程,该进程管理实际的终端窗口。Electron 进程会自动在需要时(或丢失时)重启和复用。node index.js - 通过MCP客户端交互:
使用已配置好的 MCP 客户端(如 Claude Desktop),通过调用此服务器提供的工具('terminal_start', 'terminal_execute', etc.)与后台终端进行交互。客户端通过标准输入/输出与您刚刚启动的 'node index.js' 进程通信。例如,LLM可能会生成如下 MCP 工具调用指令来启动一个终端并执行 'ls -l' 命令:
服务器将处理此请求,在 Electron 后台启动一个终端,执行命令,并将结果通过 MCP 响应返回给客户端。<use_mcp_tool> <server_name>Electron Terminal</server_name> <tool_name>terminal_start</tool_name> <arguments> { "command": "ls -l" } </arguments> </use_mcp_tool>
信息
分类
桌面与硬件