终端MCP服务器

一个允许客户端与Electron应用程序中运行的系统终端交互的MCP服务器,支持通过程序执行命令、管理终端会话和检索输出。

  • by nexon33
  • JavaScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 nexon33/console-terminal-mcp-server

使用说明

电子终端MCP服务器

在理想情况下,供应商将为终端提供自己的MCP集成,但与此同时,该项目提供了一个模型上下文协议(MCP)服务器,允许客户端与在Electron应用程序中运行的系统终端进行交互。它支持以编程方式执行命令、管理终端会话和检索输出。

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

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

2.屏幕截图

以下是像Claude Desktop这样的客户端中的终端交互:

带终端输出的Claude桌面窗口:

单个电子终端窗口:

3.安装

  1. 先决条件: 确保你已经安装了Node.js和npm。
  2. 克隆: 如果还没有,请克隆存储库。
    git clone <your-repository-url>
    cd command-terminal-electron # Or your repository directory name
    
  3. 安装依赖关系: 为MCP服务器和Electron应用程序安装节点模块。
    npm install
    
  4. 重建本机模块: 重建本机模块(如 node-pty)电子。
    node rebuild.js
    
    (参见 rebuild.js 详情)

3.使用方法

  1. 启动MCP服务器: 跑吧 index.js 使用Node.js编写脚本。这将监听stdio上的MCP命令,并自动尝试启动Electron后端进程(main.js)如果它尚未在预期的HTTP端口上运行和侦听。

    node index.js
    

    注意:Electron进程隐藏在后台运行,并在需要时自动(重新)启动,如果可能的话,将始终重复使用。

  2. 通过MCP交互: 客户端连接到 node index.js 通过stdio处理并使用 use_mcp_tool 命令。服务器名称在中定义 index.js 作为“电子终端”。

    可用工具:

    • 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服务器协同

此电子终端MCP服务器与 文件系统MCP服务器。您可以使用文件系统服务器浏览目录、读/写文件,然后使用此终端服务器在这些目录中或与这些文件相关的目录中执行命令,从而提供全面的远程开发和交互体验,例如与claude桌面内置的互联网搜索功能无缝协作。

6.要求

  • Node.js(建议使用v20或更高版本,我使用node22)
  • npm
  • 与Electron兼容的操作系统(Windows、macOS、Linux)

7.配置

Claude桌面MCP服务器配置

位置

这 claude_desktop_config.json 文件应该放在用户的AppData目录中:

  • 窗户: C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json

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

目的和结构

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

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

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

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

示例

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

现场解释

  • mcpServers: 顶级对象将服务器名称映射到其配置。

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

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

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

8.许可证

该项目根据MIT许可证获得许可。有关详细信息,请参阅LICENSE文件。