Infra MCP について
Infra MCPは、オンプレミスのLinux VMとPostgreSQLをSSH経由で調べる、運用担当者向けの読み取り専用MCPサーバーです。許可リストと追記専用の監査ログで操作を管理し、サービス、ログ、データベースを確認できます。
主な機能
- 01VMの到達性とサービス状態の確認
- 02journaldとログファイルの行数制限付き取得
- 03PostgreSQLの状態確認と読み取り専用クエリ
- 04データベースのテーブルとスキーマの確認
- 05リモート操作の監査ログ記録
活用シーン
- 01VM上のサービスの稼働状況調査
- 02重大度別のサービスログ確認
- 03データベース接続、ロック、長時間クエリの確認
- 04テーブル定義の確認や件数制限付きSELECTの実行
MCP 対応
stdio MCPサーバーとして動作し、MCPクライアントから利用できます。SSH経由でVMとPostgreSQLを調べ、リモート操作をローカルの監査ログに記録します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
infra-mcp
SSH 経由でオンプレミスの Linux VM と PostgreSQL データベースに読み取り専用で MCP アクセスできます。
agent ──stdio──▶ infra-mcp ──SSH──▶ VMs (journald · log files)
└──▶ DBs (read-only PostgreSQL)
エージェントは、ターミナルにアクセスすることなく、サービスの稼働状況の確認、範囲を限定したログの取得、DB の状態の調査、テーブルスキーマの確認を行えます。すべてのリモート操作は許可リストで制限され、追記専用の監査ログに記録されます。
インストール
uv tool install infra-mcp
# or
pip install infra-mcp
設定
infra-mcp.yaml.example を ~/.infra-mcp/infra-mcp.yaml にコピーして編集します。
# Generate a starter config from ~/.ssh/config
infra-mcp generate-config -o ~/.infra-mcp/infra-mcp.yaml
# Create the read-only PostgreSQL role(s)
infra-mcp setup
# Check VM reachability
infra-mcp test
# Refresh discovered services, log dirs, and databases (updates config in place)
infra-mcp discover --in-place
--config または INFRA_MCP_CONFIG で設定ファイルのパスを指定できます。
実行
infra-mcp run
クライアント(Claude Code、Cursor など)で、コマンド infra-mcp run を使用する stdio MCP サーバーとして登録します。
更新
infra-mcp は 1 日に 1 回 PyPI を確認し、新しいリリースがある場合は、アップグレード方法を知らせる 1 行のヒントを stderr に出力します。
uv tool upgrade infra-mcp # or: pip install --upgrade infra-mcp
確認はバックグラウンドで実行され、起動を妨げることも、stdout に触れることもありません。infra-mcp --version でインストール済みのバージョンを表示できます。INFRA_MCP_NO_UPDATE_CHECK=1 を設定すると、確認を完全に無効にできます。
ツール
VM とサービス
| ツール | 用途 |
|---|---|
list_vms | 到達可能性と監視対象サービスを含むすべての VM |
get_infra_overview | 1 回の呼び出しで 1 台の VM のサービス状態と DB の健全性を取得 |
get_service_status | systemd の状態、稼働時間、直近 5 行のログ |
get_service_logs | 重大度でフィルタリングした、範囲を限定した journald ログ |
get_log_file | 許可されたログファイルの末尾 N 行。grep は任意 |
データベース
| ツール | 用途 |
|---|---|
get_db_status | 接続数、待機中のロック、長時間実行中のクエリ数 |
query_db | 呼び出し元が指定する、範囲を限定した SELECT |
list_tables | データベース内のテーブル(スキーマ+名前)。上限 200 |
describe_table | 1 つのテーブルの列、型、主キー、外部キー |
メタ
| ツール | 用途 |
|---|---|
get_audit_log | ローカル監査ログの最近のエントリ |
すべての出力はサーバー側で上限が設定されています(ログ行 200 行、DB 行 100 行、テーブル/列は最大 200 件)。切り詰めが発生した場合は必ず -- TRUNCATED: マーカーで示されます。list_tables と describe_table は結果をメモリにキャッシュします(TTL:schema_cache_ttl_hours、既定値は 24 時間)。最新の情報を再取得するには refresh: true を指定してください。
セキュリティモデル
- SSH コマンドと systemd サービスは、ネットワーク呼び出しを行う前に、VM ごとの許可リストと照合されます。
- すべてのデータベースクエリは、
READ ONLYトランザクション内で読み取り専用ロールとして実行されます。 - ログファイルのパスは、VM ごとのディレクトリ許可リストに照らして解決されます(
..によるディレクトリ遡りは禁止されています)。 - すべてのリモート操作は、ローカルの JSONL 監査ログに追記されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。