MCP-PostgreSQL-Opsは、PostgreSQLデータベース用に設計されたプロフェッショナルな運用監視ツールです。大規模言語モデル(LLM)やAIエージェントが安全なモデルコンテキストプロトコル(MCP)サーバを通してデータベースと対話する機能を提供します。このツールの最大の特徴は、すべての操作が読み取り専用であることです。これにより、パフォーマンス分析、構成チェック、構造ブラウジングが、オンラインデータベースに意図しない変更を加えることなく実行され、絶対的なデータセキュリティが保証されます。このプロジェクトでは、PostgreSQLに組み込まれている pg_stat_statements
歌で応える pg_stat_monitor
データベース管理者(DBA)や開発者が、処理速度の遅いクエリを素早く特定し、インデックスの使用効率を分析し、データベースのキャパシティを管理できるよう、パフォーマンスに関する深い洞察を提供する拡張プラグイン。ユーザは自然言語で質問することで、「最も遅いSQLを10個クエリする」や「データベースへの接続数をチェックする」など、さまざまな操作やメンテナンスのコマンドを実行することができ、複雑なデータベース管理をより簡単かつ直感的に行うことができます。
機能一覧
- サーバー情報とステータス:
get_server_info
PostgreSQLサーバのバージョン、動作状況、インストールされている拡張プラグインに関する情報を取得します。get_active_connections
現在のデータベースのアクティブな接続数とセッションの詳細を表示します。get_postgresql_config
キーワードに基づいてPostgreSQLの設定パラメータを検索・取得します。
- データベース構造ビュー:
get_database_list
すべてのデータベースとそのサイズを一覧表示します。get_table_list
指定したデータベース内のすべてのテーブルとそのサイズに関する情報を表示します。get_user_list
データベースの全ユーザーとその権限を一覧表示します。
- パフォーマンスの監視と分析:
get_pg_stat_statements_top_queries
パフォーマンス統計に基づき、実行速度の遅いクエリを分析・特定する。get_pg_stat_monitor_recent_queries
:: 最近実行されたクエリのリアルタイム監視。get_index_usage_stats
インデックスの使用頻度と効率を分析し、使用されていないインデックスや非効率なインデックスを特定する。
- キャパシティ・マネジメント:
get_database_size_info
各データベースの容量の大きさを分析し、実証する。get_table_size_info
データテーブルとインデックスのサイズを分析し、表示します。get_vacuum_analyze_stats
:: データベーステーブルのVACUUM
(ゴミ収集)とANALYZE
(統計情報更新)の状況と歴史。
ヘルプの使用
MCP-PostgreSQL-Opsをインストールして使用するプロセスは非常に簡単で、主に3つのステップに分かれています:環境の準備、依存関係のインストール、サービスの開始です。
ステップ1:環境の準備と設定
をインストールする必要があります。Python 3.11
以上、およびuv
Pythonのパッケージ管理ツール。
- プロジェクトコードのダウンロード
まず、プロジェクトをGitHubからローカル・コンピューターにクローンする。git clone https://github.com/call518/MCP-PostgreSQL-Ops.git cd MCP-PostgreSQL-Ops
- データベース接続の設定
プロジェクトには.env.example
このファイルをコピーし、名前を変更する必要があります。このファイルをコピーし、名前を変更する必要があります。.env
そして、実際の状況に応じて中のデータベース接続情報を修正する。cp .env.example .env
次に、テキストエディタで
.env
ファイルに、PostgreSQLデータベースの情報を入力してください:# 数据库服务器的主机名或IP地址 POSTGRES_HOST=localhost # 数据库服务器的端口 POSTGRES_PORT=5432 # 连接数据库的用户名 POSTGRES_USER=postgres # 连接数据库的密码 POSTGRES_PASSWORD=your-secret-password # 默认连接的数据库名称 POSTGRES_DB=postgres
ステップ2: 必要なPostgreSQL拡張機能のインストール
完全な性能監視機能を使用するためには、PostgreSQLデータベースにpg_stat_statements
拡張機能。これは公式の拡張機能で、通常はデフォルトでインストールされていますが、有効にはなっていません。
- 修正
postgresql.conf
PostgreSQL設定ファイルの検索postgresql.conf
でshared_preload_libraries
を追加する設定項目です。pg_stat_statements
.shared_preload_libraries = 'pg_stat_statements'
リアルタイムのクエリー監視機能も使いたい場合は、次のように追加します。
pg_stat_monitor
.shared_preload_libraries = 'pg_stat_statements,pg_stat_monitor'
- データベースサービスの再起動
設定を変更した後、変更を有効にするにはPostgreSQLサービスを再起動する必要があります。 - データベースにエクステンションを作成する
データベースクライアント(例えばpsql
) データベースに接続し、以下のSQLコマンドを実行してエクステンションを作成します。CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -- 如果需要,也创建pg_stat_monitor CREATE EXTENSION IF NOT EXISTS pg_stat_monitor;
これは、プロジェクトが提供する
get_server_info
ツールを使用して、拡張機能が正常にインストールされたことを確認してください。
ステップ3:Pythonの依存関係をインストールし、サービスを開始する
- 仮想環境の作成と依存関係のインストール
プロジェクトにお勧めuv
でPython環境と依存関係を管理し、非常に素早くインストールできる。# 创建一个基于Python 3.11的虚拟环境 uv venv --python 3.11 # 激活虚拟环境 (在Linux/macOS下) source .venv/bin/activate # 安装所有依赖 uv sync
- MCPサービスの開始
このプロジェクトにはいくつかの始め方があるが、最も一般的なのはローカルで開発しテストする方法である。- 開発モデル(推奨)
スクリプトを直接実行するこのモードでは、ローカルのMCPインスペクターが起動し、ツールとの直接対話が容易になります。./scripts/run-mcp-inspector-local.sh
- デバッグモード
より詳細なロギング出力を見る必要がある場合は、Pythonコマンドで直接起動し、ロギングレベルをDEBUG
.python -m src.mcp_postgresql_ops.mcp_main --log-level DEBUG
- HTTPサービスモデル
また、サービスをHTTPサーバーとして実行することで、他のアプリケーションがネットワークリクエスト経由でその機能を呼び出すこともできる。python -m src.mcp_postgresql_ops.mcp_main \ --type streamable-http \ --host 127.0.0.1 \ --port 8080 \ --log-level DEBUG
サービスが開始されると、AIエージェントや他のMCPクライアントを介して対話し、自然言語コマンドを送信してデータベースを管理・監視することができます。例えば、"最も遅いクエリのトップ10を表示する "や "すべてのデータベース・サイズをチェックする "といったことが可能です。
- 開発モデル(推奨)
アプリケーションシナリオ
- データベース・パフォーマンスのボトルネックの場所
オンライン・アプリケーションの応答が遅い場合、DBAや開発者はすぐにこのツールを使ってデータベースの現在のパフォーマンス状況を照会できます。最もリソースを消費するSQLクエリを分析する」または「最近の遅いクエリを表示する」と質問することで、パフォーマンスの問題を引き起こしている特定のSQLステートメントを素早く特定できるため、本番環境に影響を及ぼす誤操作を心配することなく、そのSQLステートメントを最適化できます。 - 毎日のデータベース・ヘルス・パトロール
DBAはこのツールを使って、日常的にルーチン・チェックを行うことができる。アクティブな接続はいくつあるか」、「すべてのデータベースのサイズをチェックする」、「VACUUMが必要なテーブルは?また、"すべてのデータベースのサイズをチェック"、"どのテーブルに VACUUM を実行する必要があるか?"といったクエリを実行することで、データベースの稼動状況、容量の使用状況、メンテナンスの必要性などを総合的に把握し、問題が発生する前に未然に防ぐプロアクティブな運用・保守を実現することができます。 - AIエージェントの統合と運用の自動化
このツールは、AIエージェントや自動化された運用保守プロセスに組み込むことができる。例えば、自動化タスクを設定して、AIエージェントに毎日定期的に「未使用インデックスの有無を確認する」クエリを実行させ、無駄なインデックスを発見した場合はレポートやアラートを自動生成させることで、DBAは継続的にデータベース構造を最適化し、メンテナンスコストを削減することができる。 - データ・アーキテクチャとリソース計画
システム・アーキテクチャやキャパシティ・プランニングを設計する際、開発チームや運用保守チームはこのツールを使用して、既存のデータベースの構造やリソースの使用状況を把握することができます。すべてのテーブルとインデックスのサイズを一覧表示する」や「ユーザー権限リストを表示する」などのクエリーは、新機能の開発や将来のサーバーリソース購入をサポートする正確なデータを提供することができます。
品質保証
- このツールは私のデータベースを修正しますか?
MCP-PostgreSQL-Ops の最も核となる設計原則の 1 つはセキュリティです。MCP-PostgreSQL-Opsの最も基本的な設計原則の1つはセキュリティです。UPDATE
そしてDELETE
もしかしたらINSERT
などの書き込み操作が可能で、本番環境でも安心して使用できる。 - このツールを使用する前に、データベースを準備する必要がありますか?
データベースのバージョンがPostgreSQL 12以上であることを確認する必要があります。最も重要な準備はpg_stat_statements
これはパフォーマンス分析機能の基礎となるものである。これを有効にするにはpostgresql.conf
ファイルを作成し、データベース・サービスを再起動する。 - MCPとは何か、このツールはどう違うのか?
MCP(Model Context Protocol)は、AIモデルがデータベースなどの外部ツールと安全にやりとりできるようにするプロトコルである。AIに、ツールがどのような機能を持ち、どのように呼び出すかを知らせる一連のルールを定義する。AIにSQLクエリを直接実行させる可能性のある他のツールとは異なり、このツールはすべての操作を安全な事前定義された読み取り専用関数にカプセル化し、AIのみが呼び出すことができ、任意のコードを実行することはできないため、SQLインジェクションなどのセキュリティリスクを回避することができます。 - このツールを複数のデータベースサーバーで使用できますか?
できる。ただ.env
構成ファイル内のデータベース接続情報が別のデータベース・サーバを指している場合は、サービスを再起動するだけです。複数のサーバーを同時に監視したい場合は、サーバーごとにMCP-PostgreSQL-Opsサービスの個別のインスタンスを起動できます。