nexon33
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"command-terminal": {
"args": [
"C:\\Path\\to\\index.js"
],
"command": "node"
}
}
}
服务介绍
Electron 终端 MCP 服务器
在一个理想的世界中,供应商会为终端提供自己的MCP集成。但在此期间,此项目提供了一个模型上下文协议(MCP)服务器,允许客户端与在Electron应用程序中运行的系统终端进行交互。它支持执行命令、管理终端会话和以编程方式检索输出。
该系统由两个主要部分组成:
- 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在隐藏的BrowserWindow实例中加载terminal.html来管理实际的终端进程。
2. 屏幕截图
这是在类似Claude Desktop这样的客户端中终端交互的样子:
Claude Desktop 窗口显示终端输出:

单独的 Electron 终端窗口:

3. 安装
-
先决条件: 确保已安装Node.js和npm。
-
克隆仓库: 如果还没有克隆仓库,请克隆。
bash
git clone
cd command-terminal-electron # 或者你的仓库目录名 -
安装依赖: 为MCP服务器和Electron应用安装Node模块。
bash
npm install -
重建原生模块: 为Electron重建原生模块(如
node-pty)。
bash
node rebuild.js(详情见
rebuild.js)
3. 使用
-
启动MCP服务器:
使用Node.js运行index.js脚本。这将在stdio上监听MCP命令,并且如果Electron后端进程(main.js)尚未运行并监听预期的HTTP端口,则会自动尝试启动它。
bash
node index.js注意:Electron进程在后台隐藏运行,并在需要时自动(重新)启动,并且如果可能的话总是会被重用。
-
通过MCP交互:
客户端通过stdio连接到node index.js进程,并使用use_mcp_tool命令。服务器名称在index.js中定义为“Electron Terminal”。可用工具:
-
terminal_start: 创建一个新的终端会话并执行初始命令。- 输入:
{ "command": "string" } - 输出:
{ "content": [...], "sessionId": "string" }
xml
<use_mcp_tool>
<server_name>Electron Terminal</server_name>
<tool_name>terminal_start</tool_name>
{
"command": "ls -l"
}
</use_mcp_tool>
- 输入:
-
terminal_execute: 在现有会话中执行命令。- 输入:
{ "command": "string", "sessionId": "string" } - 输出:
{ "content": [...] }(会话ID包含在文本内容中)
xml
<use_mcp_tool>
<server_name>Electron Terminal</server_name>
<tool_name>terminal_execute</tool_name>
{
"sessionId": "session_id_from_start",
"command": "pwd"
}
</use_mcp_tool>*terminal_get_output: 获取会话的累积输出。
- 输入:
-
输入:
{ "sessionId": "string" } -
输出:
{ "content": [...] }
xml
<use_mcp_tool>
<server_name>Electron Terminal</server_name>
<tool_name>terminal_get_output</tool_name>
{
"sessionId": "session_id_from_start"
}
</use_mcp_tool>
-
-
terminal_stop: 终止特定终端会话进程。- 输入:
{ "sessionId": "string" } - 输出:
{ "content": [...] }
xml
<use_mcp_tool>
<server_name>Electron Terminal</server_name>
<tool_name>terminal_stop</tool_name>
{
"sessionId": "session_id_from_start"
}
</use_mcp_tool>
- 输入:
-
terminal_get_sessions: 列出由 Electron 后端管理的所有当前活动会话。- 输入:
{} - 输出:
{ "content": [...] }(内容包含活动会话的 JSON 字符串)
xml
<use_mcp_tool>
<server_name>Electron Terminal</server_name>
<tool_name>terminal_get_sessions</tool_name>
{}
</use_mcp_tool>
- 输入:
5. 与文件系统 MCP 服务器的协同工作
此 Electron 终端 MCP 服务器与 文件系统 MCP 服务器 结合使用效果非常好。您可以使用文件系统服务器浏览目录、读写文件,然后使用此终端服务器在这些目录中执行命令或与这些文件相关的命令,提供一个全面的远程开发和交互体验,可以无缝地与例如内置到 Claude 桌面的互联网搜索功能一起工作。
6. 要求
- Node.js (推荐 v20 或更高版本,我使用的是 node 22)
- npm
- 与 Electron 兼容的操作系统 (Windows, macOS, Linux)
7. 配置
Claude 桌面 MCP 服务器配置
位置
claude_desktop_config.json 文件应放置在用户的 AppData 目录中:
- Windows:
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
该文件被 Claude 桌面用于发现和配置外部 MCP 服务器。
目的和结构
配置文件定义了 Claude 桌面可以启动并连接到的 MCP 服务器。每个服务器条目指定了如何启动服务器进程。
-
mcpServers:
一个对象,其中每个键是服务器名称,值是其启动配置。 -
服务器配置示例 (
command-terminal):command: 要运行的可执行文件(例如,对于 Node.js 服务器为node)。args: 传递给命令的参数数组(例如,您的 MCP 服务器脚本的路径)。
示例
json
{
"mcpServers": {
"command-terminal": {
"command": "node",
"args": [
"C:\Path\to\index.js"
]
}
}
}
字段解释
-
mcpServers:
顶级对象,将服务器名称映射到它们的配置。 -
command-terminal:
示例服务器名称。您可以在该对象中定义多个服务器。 -
command:
用于启动 MCP 服务器的可执行文件。 -
args:
传递给命令的参数,例如您的服务器脚本的路径。
8. 许可证
该项目根据 MIT 许可证许可。有关详细信息,请参阅 LICENSE 文件。