返回市场
控制台终端MCP服务器

控制台终端MCP服务器

作者:nexon336 星标更新:2025-05-15

项目介绍

技术文档摘要

Electron 终端 MCP 服务器

在一个理想的世界里,供应商会为其终端提供自己的 MCP 集成,但在那之前,这个项目提供了一个模型上下文协议(MCP)服务器,允许客户端与运行在 Electron 应用中的系统终端进行交互。它能够执行命令、管理终端会话并以编程方式检索输出。

<a href="https://glama.ai/mcp/servers/@nexon33/console-terminal-mcp-server"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=847031029,2188809527&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Electron 终端服务器 MCP 服务器" /> </a>

该系统由两个主要部分组成:

  • MCP 服务器 (index.js):一个 Node.js 脚本,通过标准输入/输出(stdio)监听 MCP 请求。它使用 @modelcontextprotocol/sdk 并作为到 Electron 后端的桥梁。如果后端尚未运行,它会自动启动 Electron 后端。需要 mcp-package.json 来指定 "type": "module"
  • Electron 后端 (main.js):Electron 应用的主要进程。它运行一个 Express HTTP 服务器(默认端口 3000),MCP 服务器 (index.js) 通过此服务器进行健康检查和 API 调用。此后台使用 node-pty 管理实际的终端进程,并在加载 terminal.html 的隐藏 BrowserWindow 实例中运行。

2. 截图

这是终端交互在像 Claude Desktop 这样的客户端中的样子:

Claude Desktop 窗口带终端输出: Claude Desktop 窗口带终端输出

单独的 Electron 终端窗口: Electron 终端窗口

3. 安装

  1. 先决条件:确保已安装 Node.js 和 npm。
  2. 克隆:如果你还没有克隆仓库,请执行以下操作。
    git clone <your-repository-url>
    cd command-terminal-electron # 或你的仓库目录名称
    
  3. 安装依赖项:为 MCP 服务器和 Electron 应用安装 Node 模块。
    npm install
    
  4. 重建原生模块:为 Electron 重建原生模块(如 node-pty)。
    node rebuild.js
    
    (详情见 rebuild.js)

3. 使用方法

  1. 启动 MCP 服务器: 使用 Node.js 运行 index.js 脚本。这将通过 stdio 监听 MCP 命令,并在 Electron 后端进程 (main.js) 尚未运行且未监听预期的 HTTP 端口时自动尝试启动它。

    node index.js
    

    注意:Electron 进程在后台隐藏运行,并会在需要时自动重新启动,尽可能复用。

  2. 通过 MCP 交互: 客户端通过 stdio 连接到 node index.js 进程,并使用 use_mcp_tool 命令。服务器名称在 index.js 中定义为 "Electron Terminal"。

    可用工具:

    • terminal_start:创建一个新的终端会话并执行初始命令。

      • 输入{ "command": "string" }
      • 输出{ "content": [...], "sessionId": "string" }
      <use_mcp_tool>
        <server_name>Electron Terminal</server_name>
        <tool_name>terminal_start</tool_name>
        <arguments>
        {
          "command": "ls -l"
        }
        </arguments>
      </use_mcp_tool>
      
    • terminal_execute:在现有会话中执行命令。

      • 输入{ "command": "string", "sessionId": "string" }
      • 输出{ "content": [...] }(会话 ID 包含在文本内容中)
      <use_mcp_tool>
        <server_name>Electron Terminal</server_name>
        <tool_name>terminal_execute</tool_name>
        <arguments>
        {
          "sessionId": "session_id_from_start",
          "command": "pwd"
        }
        </arguments>
      </use_mcp_tool>
      
    • terminal_get_output:检索特定会话的累积输出。

      • 输入{ "sessionId": "string" }
      • 输出{ "content": [...] }
      <use_mcp_tool>
        <server_name>Electron Terminal</server_name>
        <tool_name>terminal_get_output</tool_name>
        <arguments>
        {
          "sessionId": "session_id_from_start"
        }
        </arguments>
      </use_mcp_tool>
      
    • terminal_stop:终止特定的终端会话进程。

      • 输入{ "sessionId": "string" }
      • 输出{ "content": [...] }
      <use_mcp_tool>
        <server_name>Electron Terminal</server_name>
        <tool_name>terminal_stop</tool_name>
        <arguments>
        {
          "sessionId": "session_id_from_start"
        }
        </arguments>
      </use_mcp_tool>
      
    • terminal_get_sessions:列出所有当前由 Electron 后端管理的活动会话。

      • 输入{}
      • 输出{ "content": [...] }(内容包含活动会话的 JSON 字符串)
      <use_mcp_tool>
        <server_name>Electron Terminal</server_name>
        <tool_name>terminal_get_sessions</tool_name>
        <arguments>
        {}
        </arguments>
      </use_mcp_tool>
      

5. 与文件系统 MCP 服务器的协同工作

这个 Electron 终端 MCP 服务器与 文件系统 MCP 服务器 配合得非常有效。你可以使用文件系统服务器浏览目录、读写文件,然后使用这个终端服务器在这些目录或相关文件上执行命令,提供一个全面的远程开发和交互体验,无缝地与例如内置在 Claude Desktop 中的互联网搜索功能一起工作。

6. 要求

  • Node.js(推荐 v20 或更高版本,我使用的是 node 22)
  • npm
  • 兼容 Electron 的操作系统(Windows、macOS、Linux)

7. 配置

Claude Desktop MCP 服务器配置

位置

claude_desktop_config.json 文件应放置在用户的 AppData 目录下:

  • WindowsC:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json

此文件用于 Claude Desktop 发现和配置外部 MCP 服务器。

目的和结构

配置文件定义了 Claude Desktop 可以启动并连接的 MCP 服务器。每个服务器条目指定了如何启动服务器进程。

  • mcpServers: 每个键是一个服务器名称,值是其启动配置的对象。

  • 服务器配置示例 (command-terminal)

    • command:要运行的可执行文件(例如,Node.js 服务器的 node)。
    • args:传递给命令的参数数组(例如,指向你的 MCP 服务器脚本的路径)。

示例

{
  "mcpServers": {
    "command-terminal": {
      "command": "node",
      "args": [
        "C:\\Path\\to\\index.js"
      ]
    }
  }
}

字段解释

  • mcpServers: 映射服务器名称到它们配置的顶级对象。

  • command-terminal: 示例服务器名称。你可以在该对象中定义多个服务器。

  • command: 用于启动 MCP 服务器的可执行文件。

  • args: 传递给命令的参数,例如服务器脚本的路径。

8. 许可证

本项目根据 MIT 许可证发布。详情见 LICENSE 文件。