Integrations
Creates and manages terminal sessions within Electron windows, enabling command execution and output retrieval through a programmatic API
Uses an Express HTTP server to facilitate communication between the MCP server and the Electron backend for terminal operations
Provides a bridge between the MCP protocol and Node.js to manage terminal sessions, execute commands, and retrieve terminal output
電子端末MCPサーバー
1. 説明
理想的には、ベンダーがターミナル向けに独自のMCP統合を提供するはずですが、当面はこのプロジェクトで、クライアントがElectronアプリケーション内で動作するシステムターミナルと対話できるモデルコンテキストプロトコル(MCP)サーバーを提供します。これにより、コマンドの実行、ターミナルセッションの管理、プログラムによる出力の取得が可能になります。
このシステムは、主に次の 2 つの部分から構成されます。
- **MCPサーバー (
index.js
):**標準入出力 (stdio) 経由でMCPリクエストをリッスンするNode.jsスクリプトです。@modelcontextprotocol/sdk
を使用し、Electronバックエンドへのブリッジとして機能します。Electronバックエンドがまだ実行されていない場合は、自動的に起動します。mcpmcp-package.json
で"type": "module"
を指定する必要があります。 - Electronバックエンド(
main.js
): Electronアプリケーションのメインプロセス。MCPサーバー(index.js
)がヘルスチェックやAPI呼び出しのために通信するExpress HTTPサーバー(デフォルトはポート3000)を実行します。このバックエンドは、terminal.html
を読み込む非表示のBrowserWindow
インスタンス内でnode-pty
を使用して、実際のターミナルプロセスを管理します。
2. スクリーンショット
Claude Desktop のようなクライアント内でのターミナル操作は次のようになります。
ターミナル出力付きのClaudeデスクトップウィンドウ:
個別電子端末ウィンドウ:
3. インストール
- 前提条件: Node.js と npm がインストールされていることを確認してください。
- **クローン:**まだリポジトリをクローンしていない場合は、クローンを作成します。Copy
- 依存関係のインストール: MCP サーバーと Electron アプリの両方に Node モジュールをインストールします。Copy
- ネイティブ モジュールの再構築: Electron 用のネイティブ モジュール (
node-pty
など) を再構築します。(詳細はCopyrebuild.js
参照)
3. 使用方法
- MCPサーバーを起動します。Node.jsを使用して
index.js
スクリプトを実行します。これにより、stdioでMCPコマンドがリッスンされ、Electronバックエンドプロセス(main.js
)がまだ実行されておらず、想定されるHTTPポートでリッスンしていない場合は、自動的に起動を試みます。注: Electron プロセスはバックグラウンドで隠れて実行され、必要なときに自動的に (再) 起動され、可能な場合は常に再利用されます。Copy - **MCP経由のやり取り:**クライアントはstdio経由で
node index.js
プロセスに接続し、use_mcp_tool
コマンドを使用します。サーバー名はindex.js
内で「Electron Terminal」として定義されています。利用可能なツール:terminal_start
: 新しいターミナルセッションを作成し、初期コマンドを実行します。- 入力:
{ "command": "string" }
- 出力:
{ "content": [...], "sessionId": "string" }
GXP5
- 入力:
terminal_execute
: 既存のセッションでコマンドを実行します。- 入力:
{ "command": "string", "sessionId": "string" }
- 出力:
{ "content": [...] }
(セッションIDはテキストコンテンツに含まれます) GXP6
- 入力:
terminal_get_output
: セッションの累積出力を取得します。- 入力:
{ "sessionId": "string" }
- 出力:
{ "content": [...] }
GXP7
- 入力:
terminal_stop
: 特定のターミナルセッションプロセスを終了します。- 入力:
{ "sessionId": "string" }
- 出力:
{ "content": [...] }
GXP8
- 入力:
terminal_get_sessions
: Electron バックエンドによって管理されている現在アクティブなセッションをすべて一覧表示します。- 入力:
{}
- 出力:
{ "content": [...] }
(コンテンツにはアクティブなセッションのJSON文字列が含まれています) GXP9
- 入力:
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 Desktop によって外部 MCP サーバーを検出し、構成するために使用されます。
目的と構造
設定ファイルは、Claude Desktop が起動および接続できる MCP サーバーを定義します。各サーバーエントリは、サーバープロセスの起動方法を指定します。
mcpServers
: 各キーがサーバー名で、値がその起動構成であるオブジェクト。- サーバー構成例 (
command-terminal
) :command
: 実行する実行可能ファイル (例: Node.js サーバーの場合はnode
)。args
: コマンドに渡される引数の配列 (例: MCP サーバー スクリプトへのパス)。
例
フィールドの説明
mcpServers
: サーバー名とその構成をマッピングする最上位オブジェクト。command-terminal
: サーバー名の例。このオブジェクトには複数のサーバーを定義できます。command
: MCP サーバーを起動するために使用される実行可能ファイル。args
: サーバー スクリプトへのパスなど、コマンドに渡される引数。
8. ライセンス
このプロジェクトはMITライセンスの下で提供されています。詳細はLICENSEファイルをご覧ください。
You must be authenticated.
local-only server
The server can only run on the client's local machine because it depends on local resources.
クライアントが Electron アプリケーションで実行されているシステム ターミナルと対話できるようにし、コマンドの実行、ターミナル セッションの管理、プログラムによる出力の取得を可能にするモデル コンテキスト プロトコル サーバー。
Related Resources
Related MCP Servers
- -securityFlicense-qualityThis server enables running a Model Context Protocol in a web browser with functionalities including arithmetic operations and session-based key-value storage.Last updated -2TypeScript
- -securityFlicense-qualityA Model Context Protocol server that allows LLMs to execute shell commands and receive their output in a controlled manner.Last updated -Python
- AsecurityAlicenseAqualityA secure terminal execution server that enables controlled command execution with security features and resource limits via the Model Context Protocol (MCP).Last updated -1121JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables seamless execution of commands, Python code, web content fetching, and reusable task management with secure credentials handling.Last updated -2PythonMIT License