linux-mcp-server について
linux-mcp-serverは、Spring BootとSpring AIを基盤とするMCPサーバーで、Linuxホストを扱う運用や開発向けです。ローカル実行とリモートSSHコマンドを`executeShell`ツールにまとめています。
主な機能
- 01ローカルとリモートのシェル実行
- 02SSHによるリモートホスト接続
- 03SSH接続のキャッシュと再利用
- 04hosts.jsonによるホスト設定
- 05Streamable HTTP対応
活用シーン
- 01MCPクライアントからローカルコマンドを実行
- 02SSH経由でリモートLinuxホスト上のスクリプトを実行
- 03コマンドの標準出力とエラーログを確認
MCP 対応
Streamable HTTP経由で`executeShell`ツールを公開し、MCPクライアントがホスト、ディレクトリ、コマンドを指定してローカルまたはリモートのLinux上で実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Linux MCP Server
Spring Boot と Spring AI を基盤に構築された Model Context Protocol (MCP) サーバーです。ローカルおよびリモートの Linux ホストで、安全に Shell コマンドを実行できます。MCP 標準インターフェースを介して、Claude Desktop などの MCP 対応 AI アシスタントから直接接続でき、AI の運用管理能力を拡張します。
目次
概要
Linux MCP Server は Shell の実行を MCP ツール executeShell としてラップし、Spring AI によって MCP Server に自動登録します。クライアントは標準の MCP 呼び出しを通じて、対象ホストとコマンドを指定するだけで、ローカルまたはリモートの Linux マシン上でスクリプトを実行し、標準出力とエラーログを取得できます。
主な機能
- デュアルモード実行:コマンドの実行場所を自動判定し、ローカルプロセスの実行とリモート SSH 実行に対応します。
- 接続プール管理:Caffeine キャッシュを使用して SSH 接続を再利用し、デフォルトでは 5 分後に自動的に期限切れとなり、削除されます。
- シンプルな設定:シンプルな
hosts.jsonでリモートホストの一覧を管理でき、再起動すると設定が反映されます。 - Spring Boot とのネイティブ統合:すぐに使える
mvn spring-boot:runと実行可能 JAR によるデプロイに対応し、デフォルトでポート3001をリッスンします。 - MCP プロトコル互換:
spring-ai-starter-mcp-server-webmvcに依存し、STREAMABLE HTTP チャネルに対応するため、主要な MCP クライアントで利用できます。
クイックスタート
環境の準備
- Java 17+
- Maven 3.6+(リポジトリに同梱されている
./mvnw/mvnw.cmdの使用を推奨) - SSH サービスが稼働している対象 Linux ホスト
コードの取得
git clone <repository-url>
cd linux-mcp-server
リモートホストの設定
src/main/resources/hosts.json を編集します:
[
{
"ip": "192.168.1.100",
"username": "devops",
"password": "your_password"
}
]
ip:対象ホストのアドレスです。executeShellのmachineIpと一致させる必要があります。username/password:SSH ログイン認証情報です。現在はパスワード認証を使用していますが、コードを拡張すれば鍵認証にも対応できます。
⚠️ 本番環境の認証情報をバージョン管理に登録しないことをお勧めします。環境変数または設定センターを使用して機密情報を管理してください。
サービスの起動
開発環境では、次のコマンドを直接実行します:
mvn spring-boot:run
または、パッケージ化して単独で実行します:
mvn clean package
java -jar target/linux-mcp-server-1.0.0.jar
起動が完了すると、デフォルトで http://localhost:3001/mcp に MCP 接続エンドポイントが公開されます。
設定
主要な設定は src/main/resources/application.yml にまとめられています:
server:
port: 3001 # MCP Server 监听端口
spring.ai.mcp.server:
name: linux-mcp-server
version: 1.0.0
protocol: STREAMABLE # 使用流式 HTTP 传输
streamable-http:
mcp-endpoint: /mcp # MCP 入口路径
カスタマイズする場合:
- ポートまたは
mcp-endpointを変更する場合は、MCP クライアントの設定も忘れずに更新してください。 - 接続するホストを追加する場合は、
hosts.jsonにエントリーを追加してサービスを再起動してください。
AI アシスタントとの統合
Claude Desktop を例に、claude_desktop_config.json に次の設定を追加します:
{
"mcpServers": [
{
"name": "linux-mcp-server",
"type": "http",
"command": "http",
"args": ["http://localhost:3001/mcp"]
}
]
}
接続に成功すると、Claude はツール executeShell を自動的に検出します:
machineIp(省略可):空またはローカルアドレスの場合、ローカルマシンでコマンドを実行します。path(省略可):コマンドの実行ディレクトリです。省略時は/になります。shell(必須):実行する完全なコマンドです。
セキュリティに関する推奨事項
- 認証情報の管理:
hosts.jsonにはパスワードが平文で保存されます。開発環境または管理された環境でのみ使用してください。本番環境では鍵認証または外部の安全なストレージに切り替えてください。 - ホストの検証:現在は
PromiscuousVerifierを使用してホストフィンガープリントの検証をスキップしています。中間者攻撃を防ぐため、本番環境へのデプロイ前に既知のホスト一覧を使用する方式に置き換えてください。 - 最小権限:リモートマシンには権限を制限したユーザーを作成し、
rootアカウントの使用を避け、実行可能なコマンドの範囲を制限してください。 - ネットワーク制限:ファイアウォール/セキュリティグループを使用して、MCP Server と対象ホストへのアクセス元を制限してください。
開発とデバッグ
- 主なコードは
src/main/java/com/doodl6/mcp/linuxにあります。必要に応じて新しいツールメソッドを追加できます。 - SSH キャッシュのポリシーを調整する場合は、
RemoteShellServiceのCACHE_DURATION_MINUTES、MAX_CACHE_SIZEを変更してください。 - 変更後は、
executeShellを手動で一度(ローカルとリモートで各一度)実行し、出力とエラー処理のロジックを確認することをお勧めします。
ライセンス
このプロジェクトは MIT ライセンス に基づくオープンソースであり、自由に使用および二次開発できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。