Super Shell MCP Server

MIT License
13
  • Linux
  • Apple

Integrations

  • Provides Linux-specific shell integration with support for bash, sh, and zsh shells, along with platform-appropriate command whitelists.

  • Supports macOS-specific shell environments (zsh, bash, sh) with tailored command whitelists and security considerations for the platform.

  • Enables execution of shell commands across multiple platforms (Windows, macOS, Linux) with platform-specific command whitelists and security levels.

スーパーシェルMCPサーバー

複数のプラットフォーム(Windows、macOS、Linux)でシェルコマンドを実行するためのMCP(Model Context Protocol)サーバー。このサーバーは、ホワイトリストと承認メカニズムを組み込んだ安全なシェルコマンド実行方法を提供します。

特徴

  • Windows、macOS、Linux で MCP を介してシェル コマンドを実行する
  • 自動プラットフォーム検出とシェル選択
  • 複数のシェルのサポート:
    • Windows : cmd.exe、PowerShell
    • macOS : zsh、bash、sh
    • Linux : bash、sh、zsh
  • セキュリティ レベルによるコマンドのホワイトリスト:
    • 安全: 承認なしで実行できるコマンド
    • 承認が必要: 実行前に明示的な承認が必要なコマンド
    • 禁止: 明示的にブロックされているコマンド
  • プラットフォーム固有のコマンドホワイトリスト
  • 潜在的に危険なコマンドに対する非ブロッキング承認ワークフロー
  • ファイルベースのログを備えた包括的なログシステム
  • 包括的なコマンド管理ツール
  • 診断用プラットフォーム情報ツール

インストール

Smithery経由でインストール

Smithery経由で Claude Desktop 用の Super Shell MCP Server を自動的にインストールするには:

npx -y @smithery/cli install @cfdude/super-shell-mcp --client claude

手動でインストールする

# Clone the repository git clone https://github.com/cfdude/super-shell-mcp.git cd super-shell-mcp # Install dependencies npm install # Build the project npm run build

使用法

サーバーの起動

npm start

または直接:

node build/index.js

Roo CodeとClaude Desktopでの設定

Roo CodeとClaude Desktopはどちらも、MCPサーバーに同様の設定形式を使用しています。Super Shell MCPサーバーの設定方法は次のとおりです。

オプション 1: NPX を使用する (推奨)

Super Shell MCPを使用する最も簡単な方法はNPXを使用することです。NPXを使用すると、npmからパッケージが自動的にインストールされ、実行されるため、手動での設定は不要です。パッケージはNPMのhttps://www.npmjs.com/package/super-shell-mcpから入手できます。

NPXを使用したRooコード構成
"super-shell": { "command": "npx", "args": [ "-y", "super-shell-mcp" ], "alwaysAllow": [], "disabled": false }
NPXを使用したClaudeデスクトップ構成
"super-shell": { "command": "npx", "args": [ "-y", "super-shell-mcp" ], "alwaysAllow": false, "disabled": false }

オプション2: ローカルインストールを使用する

ローカル インストールを使用する場合は、Roo Code MCP 設定構成ファイル ( ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.jsonにあります) に次の内容を追加します。

"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js" ], "alwaysAllow": [], "disabled": false }

オプションで、シェル パラメータを追加してカスタム シェルを指定することもできます。

"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js", "--shell=/usr/bin/bash" ], "alwaysAllow": [], "disabled": false }

Windows 11の例

"super-shell": { "command": "C:\\Program Files\\nodejs\\node.exe", "args": [ "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npx-cli.js", "-y", "super-shell-mcp", "C:\\Users\\username" ], "alwaysAllow": [], "disabled": false }

クロードデスクトップ構成

Claude Desktop 構成ファイル ( ~/Library/Application Support/Claude/claude_desktop_config.jsonにあります) に次のコードを追加します。

"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js" ], "alwaysAllow": false, "disabled": false }

Windows ユーザーの場合、構成ファイルは通常%APPDATA%\Claude\claude_desktop_config.jsonにあります。

プラットフォーム固有の構成

ウィンドウズ

  • デフォルトのシェル: cmd.exe (または PowerShell (使用可能な場合))
  • 構成パス:
    • Roo コード: %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json
    • クロード デスクトップ: %APPDATA%\Claude\claude_desktop_config.json
  • シェルパスの例:
    • cmd.exe: C:\\Windows\\System32\\cmd.exe
    • PowerShell: C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
    • PowerShell コア: C:\\Program Files\\PowerShell\\7\\pwsh.exe

macOS

  • デフォルトのシェル: /bin/zsh
  • 構成パス:
    • Roo コード: ~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
    • Claude デスクトップ: ~/Library/Application Support/Claude/claude_desktop_config.json
  • シェルパスの例:
    • zsh: /bin/zsh
    • バッシュ: /bin/bash
    • sh: /bin/sh

リナックス

  • デフォルトのシェル: /bin/bash (または $SHELL 環境変数)
  • 構成パス:
    • Roo コード: ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
    • クロード デスクトップ: ~/.config/Claude/claude_desktop_config.json
  • シェルパスの例:
    • バッシュ: /bin/bash
    • sh: /bin/sh
    • zsh: /usr/bin/zsh

オプションでカスタム シェルを指定することもできます。

"super-shell": { "command": "node", "args": [ "/path/to/super-shell-mcp/build/index.js", "--shell=C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" ], "alwaysAllow": false, "disabled": false }

/path/to/super-shell-mcpを、リポジトリのクローンを作成した実際のパスに置き換えます。

注記

  • Roo Codeの場合:セキュリティ上の理由から、 alwaysAllow空の配列[]に設定することを推奨します。これにより、コマンド実行前に承認を求めるプロンプトが表示されます。特定のコマンドをプロンプトなしで許可したい場合は、そのコマンドの名前を配列に追加します。例: "alwaysAllow": ["execute_command", "get_whitelist"]
  • Claude Desktopの場合:セキュリティ上の理由から、 alwaysAllowfalseに設定することをお勧めします。Claude Desktopでは、配列ではなくブール値を使用します。false falseすべてのコマンドに承認が必要であり、 trueはすべてのコマンドがプロンプトなしで許可されることを意味します。

重要alwaysAllowパラメータは、Super Shell MCPサーバー自体ではなく、MCPクライアント(Roo CodeまたはClaude Desktop)によって処理されます。クライアントはサーバーにリクエストを送信する前に承認プロセスを処理するため、サーバーはどちらの形式でも正常に動作します。

利用可能なツール

サーバーは次の MCP ツールを公開します。

get_platform_info

現在のプラットフォームとシェルに関する情報を取得します。

{}

execute_command

現在のプラットフォームでシェル コマンドを実行します。

{ "command": "ls", "args": ["-la"] }

get_whitelist

ホワイトリストに登録されたコマンドのリストを取得します。

{}

add_to_whitelist

コマンドをホワイトリストに追加します。

{ "command": "python3", "securityLevel": "safe", "description": "Run Python 3 scripts" }

update_security_level

ホワイトリストに登録されたコマンドのセキュリティ レベルを更新します。

{ "command": "python3", "securityLevel": "requires_approval" }

remove_from_whitelist

ホワイトリストからコマンドを削除します。

{ "command": "python3" }

get_pending_commands

承認待ちのコマンドのリストを取得します。

{}

approve_command

保留中のコマンドを承認します。

{ "commandId": "command-uuid-here" }

deny_command

保留中のコマンドを拒否します。

{ "commandId": "command-uuid-here", "reason": "This command is potentially dangerous" }

デフォルトのホワイトリストコマンド

サーバーには、検出されたプラットフォームに基づいて自動的に選択されるプラットフォーム固有のコマンド ホワイトリストが含まれています。

一般的なセーフコマンド(全プラットフォーム)

  • echo - 標準出力にテキストを出力する

Unixライクな安全なコマンド(macOS/Linux)

  • ls - ディレクトリの内容を一覧表示する
  • pwd - 作業ディレクトリを印刷する
  • echo - 標準出力にテキストを出力する
  • cat - ファイルを連結して印刷する
  • grep - ファイル内のパターンを検索する
  • find - ディレクトリ階層内のファイルを検索する
  • cd - ディレクトリを変更する
  • head - ファイルの最初の部分を出力する
  • tail - ファイルの最後の部分を出力する
  • wc - 改行、単語、バイト数を出力する

Windows固有のセーフコマンド

  • dir - ディレクトリの内容を一覧表示する
  • type - テキストファイルの内容を表示する
  • findstr - ファイル内の文字列を検索する
  • where - プログラムを探す
  • whoami - 現在のユーザーを表示する
  • hostname - コンピュータ名を表示する
  • ver - オペレーティングシステムのバージョンを表示する

承認が必要なコマンド

承認が必要なWindowsコマンド

  • copy - ファイルをコピーする
  • move - ファイルを移動する
  • mkdir - ディレクトリを作成する
  • rmdir - ディレクトリを削除する
  • rename - ファイルの名前を変更する
  • attrib - ファイル属性を変更する

承認が必要なUnixコマンド

  • mv - ファイルを移動(名前変更)する
  • cp - ファイルとディレクトリをコピーする
  • mkdir - ディレクトリを作成する
  • touch - ファイルのタイムスタンプを変更するか、空のファイルを作成する
  • chmod - ファイルモードビットを変更する
  • chown - ファイルの所有者とグループを変更する

禁止コマンド

Windows の禁止コマンド

  • del - ファイルを削除する
  • erase - ファイルを削除する
  • format - ディスクをフォーマットする
  • runas - 別のユーザーとしてプログラムを実行する

Unix 禁止コマンド

  • rm - ファイルまたはディレクトリを削除する
  • sudo - 別のユーザーとしてコマンドを実行する

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

  • すべてのコマンドは、MCPサーバーを実行しているユーザーの権限で実行されます。
  • 承認を必要とするコマンドは、明示的に承認されるまでキューに保持されます。
  • 禁止されたコマンドは決して実行されない
  • サーバーはシェルインジェクションを防ぐためにexecの代わりにNode.jsのexecFileを使用します。
  • 引数は、指定された場合に許可されたパターンに対して検証されます。

ホワイトリストの拡張

ホワイトリストを拡張するには、 add_to_whitelistツールを使用します。例:

{ "command": "npm", "securityLevel": "requires_approval", "description": "Node.js package manager" }

NPM パッケージ情報

Super Shell MCP は、 https://www.npmjs.com/package/super-shell-mcpで npm パッケージとして入手できます。

NPXを使用するメリット

NPX 方式 (構成セクションのオプション 1 を参照) を使用すると、いくつかの利点があります。

  1. 手動セットアップ不要: リポジトリのクローン作成、依存関係のインストール、プロジェクトのビルドは不要
  2. 自動更新: 常に最新の公開バージョンを使用します
  3. クロスプラットフォームの互換性: Windows、macOS、Linuxで同じように動作します
  4. 簡素化された構成: 絶対パスのない短い構成
  5. メンテナンスの軽減: 管理や更新が必要なローカルファイルはありません

GitHubからの使用

GitHub から最新の開発バージョンを直接使用したい場合は、次の手順に従ってください。

"super-shell": { "command": "npx", "args": [ "-y", "github:cfdude/super-shell-mcp" ], "alwaysAllow": [], // For Roo Code "disabled": false }

独自のバージョンを公開する

独自に変更したバージョンを npm に公開する場合:

  1. 詳細を記載したpackage.jsonを更新します
  2. 「bin」フィールドが適切に設定されていることを確認します。
    "bin": { "super-shell-mcp": "./build/index.js" }
  3. npm に公開:
    npm publish

NPXベストプラクティス

NPX を使用した MCP クライアントとの最適な統合のために、このプロジェクトは次のベスト プラクティスに従います。

  1. 実行可能エントリ ポイント: メイン ファイルには、シェバン ライン ( #!/usr/bin/env node ) が含まれており、ビルド中に実行可能になります。
  2. パッケージ構成:
    • "type": "module" - ESモジュールが使用されていることを確認する
    • "bin"フィールド - コマンド名をエントリポイントにマッピングします
    • "files"フィールド - 公開時に含めるファイルを指定します
    • "prepare"スクリプト - インストール時にコンパイルが行われるようにします
  3. TypeScript 構成:
    • "module": "NodeNext" - 適切な ES モジュールのサポート
    • "moduleResolution": "NodeNext" - ESモジュールと一貫性があります
  4. 自動インストールと実行
    • MCPクライアント構成では、 npx -yを使用してパッケージを自動的にインストールして実行します。
    • プロセスはバックグラウンドで実行されるため、ターミナルウィンドウは固定されません。
  5. 出版プロセス
    # Update version in package.json npm version patch # or minor/major as appropriate # Build and publish npm publish

これらの方法により、別のターミナル ウィンドウを必要とせずに MCP クライアントによって MCP サーバーが自動的に起動されるようになり、ユーザー エクスペリエンスと運用効率が向上します。

トラブルシューティング

クロスプラットフォームの問題

Windows固有の問題

  1. PowerShell スクリプト実行ポリシー
    • 問題: PowerShell が「このシステムではスクリプトの実行が無効になっています」というエラーでスクリプトの実行をブロックする場合があります
    • 解決策: PowerShellを管理者として実行し、 Set-ExecutionPolicy RemoteSigned実行するか、シェルを構成するときに-ExecutionPolicy Bypassパラメータを使用します。
  2. パスセパレータ
    • 問題: Windows ではパスにバックスラッシュ ( \ ) が使用されるため、JSON ではエスケープする必要があります。
    • 解決策: JSON 構成ファイルで二重のバックスラッシュ ( \\ ) を使用します (例: C:\\Windows\\System32\\cmd.exe
  3. コマンドが見つかりません
    • 問題: Windows には、 lsgrepなどの Unix コマンドがありません。
    • 解決策: Windows の同等の機能を使用する ( lsの代わりにdirgrepの代わりにfindstr )

macOS/Linux特有の問題

  1. シェル権限
    • 問題: コマンド実行時に権限が拒否されました
    • 解決策: chmod +x /path/to/shellでシェルに適切な権限があることを確認します。
  2. 環境変数
    • 問題: MCP サーバーで環境変数が利用できない
    • 解決策: シェルのプロファイル ファイル ( .zshrc.bashrcなど) で環境変数を設定します。

一般的なトラブルシューティング

  1. シェル検出の問題
    • 問題: サーバーが正しいシェルを検出できない
    • 解決策: 構成でシェルパスを明示的に指定する
  2. コマンド実行タイムアウト
    • 問題: コマンドの実行に時間がかかり、タイムアウトする
    • 解決策: コマンドサービスコンストラクターのタイムアウト値を増やす

ログシステム

サーバーには、デバッグと監視を容易にするためにログをファイルに書き込む包括的なログ システムが含まれています。

  1. ログファイルの場所
    • デフォルト: サーバーのディレクトリ内のlogs/super-shell-mcp.log
    • ログディレクトリは自動的に作成され、Gitによって追跡されます(.gitkeepファイルを使用)
    • ログファイル自体は.gitignoreによってGitから除外されます。
    • サーバー操作、コマンド実行、承認ワークフローに関する詳細情報が含まれています
  2. ログレベル
    • INFO : 一般的な運用情報
    • DEBUG : 詳細なデバッグ情報
    • エラー: エラー状態と例外
  3. ログの表示
    • ログを確認するには、標準のファイル表示コマンドを使用します。
      # View the entire log cat logs/super-shell-mcp.log # Follow log updates in real-time tail -f logs/super-shell-mcp.log
  4. ログ内容
    • サーバーの起動と構成
    • コマンド実行要求と結果
    • 承認ワークフロー イベント (保留、承認、拒否)
    • エラー状態とトラブルシューティング情報
  5. ホワイトリスト管理
    • 問題: ホワイトリストにカスタムコマンドを追加する必要がある
    • 解決策: add_to_whitelistツールを使用して、環境に固有のコマンドを追加します。

ライセンス

このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。

ID: jcpbyv5qn0