OpenSource-Hub

DesktopCommanderMCP

アプリケーション

wonderwhy-er/DesktopCommanderMCP

AI ターミナル制御およびファイル編集 MCP サーバー。

概要

Desktop Commander MCP は、Claude などの AI アシスタントにターミナル制御、ファイル検索、コード編集の機能を提供します。コマンドの実行、プロセスの管理、ファイルの読み書き、テキストの置換をサポートします。MCP Filesystem Server をベースに構築されており、インタラクティブなプロセス制御とファイルプレビュー機能が新たに追加されています。

README プレビュー

# Desktop Commander MCP\n### Search, update, manage files and run terminal commands with AI\n\n[](https://www.npmjs.com/package/@wonderwhy-er/desktop-commander)\n[](https://agentaudit.dev/skills/desktop-commander)\n[](https://archestra.ai/mcp-catalog/wonderwhy-er__desktopcommandermcp)\n[](https://smithery.ai/server/@wonderwhy-er/desktop-commander)\n[](https://www.buymeacoffee.com/wonderwhyer)\n\n\n[](https://discord.gg/kQ27sNnZr7)\n\n\nWork with code and text, run processes, and automate tasks, going far beyond other AI editors - while using host client subscriptions instead of API token costs.\n\n\n  \n\n\n## 🖥️ Try the Desktop Commander App (Beta)\n\n**Want a better experience?** The Desktop Commander App gives you everything the MCP server does, plus:\n\n- **Use any AI model** — Claude, GPT-4.5, Gemini 2.5, or any model you prefer\n- **See file changes live** — visual file previews as AI edits your files\n- **Add custom MCPs and context** — extend with your own tools, no config files\n- **Coming soon** — skills system, dictation, background scheduled tasks, and more\n\n**👉 [Download the App](https://desktopcommander.app/#download)** (macOS & Windows)\n\n> The MCP server below still works great with Claude Desktop and other MCP clients — the app is for those who want a dedicated, polished experience.\n\n## Table of Contents\n- [Features](#features)\n- [How to install](#how-to-install)\n- [Getting Started](#getting-started)\n- [Usage](#usage)\n- [File Preview UI & Markdown Editor](#file-preview-ui--markdown-editor)\n- [Handling Long-Running Commands](#handling-long-running-commands)\n- [Work in Progress and TODOs](#roadmap)\n- [Sponsors and Supporters](#support-desktop-commander)\n- [Website](#website)\n- [Media](#media)\n- [Testimonials](#testimonials)\n- [Frequently Asked Questions](#frequently-asked-questions)\n- [Contributing](#contributing)\n- [License](#license)\n\nAll of your AI development tools in one place.\nDesktop Commander puts all dev tools in one c

FAQ (5)

トラブル対応
read_multiple_files が複数の大きな画像を返すときに発生する「MCP error -32000: Connection closed」は、どのように修正すればよいですか?

**Remote Desktop Commander を 0.2.51 以降にアップグレードしてください**。バージョン 0.2.51 では、サイズが大きすぎる read_multiple_files のレスポンスが MCP stdio バッファを超過しないようにガードされ、ローカルの Desktop Commander 子プロセスが終了した場合に実行中の呼び出しを直ちに失敗させます。

根本原因: @modelcontextprotocol/sdk 1.30.0 では、StdioClientTransport がデフォルトで **10 MiB の読み取りバッファ**を使用しており、単一のメッセージがそれを超過するとトランスポートを閉じます。Base64 エンコードされた画像が複数あると、この制限を簡単に超えてしまいます。たとえば、約 8.8 MB のソース画像が、JSON のオーバーヘッドを含める前の段階で約 11.8 MB の Base64 になりました。

0.2.47 での回避策:
1. PNG/JPEG ファイルを個別に、またはより小さなバッチで読み取ってください。
2. 結合した Base64 ペイロードを 10 MiB 未満に抑えてください。Base64 と JSON のオーバーヘッドを考慮し、ソース画像は控えめに **1 リクエストあたり約 7 MB 以下**に抑えてください。
3. クライアントが Not connected を報告した場合は、Remote Desktop Commander を再起動してください。
4. read_multiple_files 呼び出しあたりのファイル数を減らして再試行してください。

参照 Issue #658
トラブル対応
WebSocket socket 1006 の後に "IncreaseConnectionPool" で Desktop Commander リモートがオフラインになる問題の修正方法

リモートエージェントを Desktop Commander 0.2.51 以降にアップグレードしてください。再接続/コネクションプールの問題はそのリリースで修正され、動作が確認されています。既存のリモートエージェントをすべて停止し、重複している index.js remote/Node プロセスを削除してから、以下のコマンドで再起動してください:

npx @wonderwhy-er/desktop-commander@latest remote

修正済みリリースを明示的にテストするには、以下を使用してください:

npx @wonderwhy-er/desktop-commander@0.2.51 remote

バージョン 0.2.47 では、エージェントを再起動しても接続は一時的にしか回復しません。アップグレード後もエラーが解消しない場合、特に Cloudflare の 525 SSL エラーと併発している場合は、ネットワーク/SSL 経路と Desktop Commander サービスのステータスを確認してください。これは別のサービス容量または接続性の問題を示している可能性があります。

参照 Issue #652
トラブル対応
Desktop Commander MCP サーバーが initialize 時にブラウザのウェルカムページを開くのを停止するにはどうすればよいですか?

ウェルカムページは Desktop Commander の初回実行時のオンボーディングで、一度だけ開きます。これを表示せずに実行するには、次を実行してください:

npx @wonderwhy-er/desktop-commander@latest setup --no-onboarding

Desktop Commander の起動時に --no-onboarding を渡すか、設定で onboarding_injection: false を設定することもできます。これにより、ヘッドレス、IDE、CI 環境において、MCP の initialize ハンドシェイク中にブラウザウィンドウや utm_source アナリティクスリクエストがトリガーされるのを防ぎます。

参照 Issue #602
トラブル対応
desktop-commander 0.2.52 で `npm audit --omit=dev` によって報告された深刻度の高い脆弱性は、どのように修正すればよいですか?

これらの脆弱性は、マージされた本番依存関係の更新によって修正されており、npm audit --omit=dev の検出数が38件から0件に減少します。公開され次第、この修正を含むリリースにアップグレードしてください:

npm install -g @wonderwhy-er/desktop-commander@latest

MCPクライアント設定経由で起動している場合は、次を使用してください:

["-y", "@wonderwhy-er/desktop-commander@latest"]

その後、MCPサーバーを再起動し、次のコマンドで確認してください:

node --version
npm audit --omit=dev

Node.js **22.12以降** が必要です。アップグレードするまでは、無制限のシステムアクセスを許可することを避けるため、ChatGPT/MCP設定から desktop-commander を無効化または削除してください。

参照 Issue #814
トラブル対応
Windows 上で Desktop Commander の read_file を実行した後に、os.replace() や fs.rename() が 'PermissionError: WinError 5' (ERROR_ACCESS_DENIED) で失敗するのはなぜですか?

原因: Desktop Commander の read_file は、行数の上限で読み取りが早期に打ち切られるたびにファイルハンドルをリークします。readFromStartWithReadline は readline ループから抜け出して rl.close() を呼び出しますが、readline.Interface.close() は基盤となる fs.createReadStream を閉じないため、Node プロセスはサーバーが終了するまでファイルを開いたまま保持します。その結果、Windows は他のプロセスからのアトミックな名前変更による置き換え(os.replace()、fs.rename()、File.Move(...,true)、MOVEFILE_REPLACE_EXISTING を指定した MoveFileEx)を WinError 5 / EPERM で拒否します。

発生条件(0.2.46–0.2.52 で確認済み、0.3.0 で再発): リークは、EOF まで読み切るのではなく break に到達した場合にのみ発生します。例: 5行のファイルを length=5 で読み取った場合(または1200行のファイルにデフォルトの1000行制限が適用された場合)はハンドルがリークしますが、同じファイルを length=6 で読み取った場合はリークしません。ロックの保持者は Windows Restart Manager で確認できます(Desktop Commander の node.exe を探してください)。

回避策:
1. 既存のロックを解放する: Desktop Commander / Claude Desktop を完全に再起動します(正常なシャットダウンによりリークしたハンドルがすべて解放され、その後ファイルは通常どおり移動/置き換えできます)。
2. 新たなリークの発生を避ける: read_file を呼び出す際は、ファイルの総行数より大きい length を渡して、ストリームが EOF まで読み切り、正常にクローズされるようにしてください。デフォルトの1000行制限で大きなファイルを部分的に読み取ることは避けてください。
3. コード修正(コントリビューター向け): 4か所すべての readline 呼び出し箇所で入力 ReadStream を捕捉し、finally ブロック内で stream.destroy() を呼び出し、return する前にストリームの close イベントを待機してください。また、入力ストリームと readline インターフェースの両方で error/abort イベントも処理してください。

参照 Issue #631