go-mcp-postgres について
go-mcp-postgresは、PostgreSQLの操作や自動化に使うMCPサーバーで、データベース、スキーマ、データを扱うツールを提供します。stdioとSSE、読み取り専用モード、クエリプランの確認に対応し、開発中のプロジェクトです。
主な機能
- 01データベースとテーブル構造の操作
- 02SQLの読み取り、書き込み、更新、削除
- 03書き込みを制限する読み取り専用モード
- 04実行前のクエリプラン確認
- 05stdioとSSEモード
- 06ツール説明の多言語対応
活用シーン
- 01AIクライアントからPostgreSQLのデータベースやテーブルを確認
- 02書き込みを制限してクエリを実行
- 03データベース操作前にクエリプランを確認
MCP 対応
stdioまたはSSEを通じて、PostgreSQLのデータベース、スキーマ、クエリ、データ変更のツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
go-mcp-postgres
概要
https://github.com/Zhwt/go-mcp-mysql/ のコードをコピーし、AI のサポートを受けて、データベースを MySQL から Postgres に変更しました。
Postgres との連携や自動化にすぐ使える、導入の負担がない Model Context Protocol(MCP)サーバーです。Node.js や Python の環境は必要ありません。このサーバーは、MySQL データベースとテーブルに対する CRUD 操作用のツールを提供し、予期しない書き込みを防ぐ読み取り専用モードも備えています。また、--with-explain-check フラグを追加すると、クエリを実行する前に EXPLAIN ステートメントを使ってクエリプランを確認するよう、MCP サーバーに指示できます。
現在も開発中のため、本番環境での使用にはまだ適さない可能性がありますのでご注意ください。
インストール
-
最新のリリースを取得し、
$PATH内、または簡単にアクセスできる場所に配置します。 -
Go がインストールされている場合は、ソースからビルドすることもできます。
go install -v github.com/guoling2008/go-mcp-postgres@latest
使用方法
方法 A:stdio モードでコマンドライン引数を使用する
{
"mcpServers": {
"postgres": {
"command": "go-mcp-postgres",
"args": [
"--dsn",
"postgresql://user:pass@host:port/db"
]
}
}
}
注:バイナリを $PATH の外に配置した場合は、go-mcp-postgres をバイナリへのフルパスに置き換える必要があります。たとえば、バイナリを Downloads フォルダーに配置した場合は、次のパスを使用できます。
{
"mcpServers": {
"postgres": {
"command": "C:\\Users\\<username>\\Downloads\\go-mcp-postgres.exe",
"args": [
...
]
}
}
}
方法 B:sse モードでコマンドライン引数を使用する
./go-mcp-postgres --t sse --ip x.x.x.x --port nnnn --dsn postgresql://user:pass@host:port/db --lang en
任意のフラグ
--lang:言語オプションを設定します(en/zh-CN)。デフォルトはシステム言語です。--read-onlyフラグを追加すると、読み取り専用モードが有効になります。このモードでは、名前がlist、read_、desc_で始まるツールのみ使用できます。このフラグを追加した後は、MCP サーバーを更新または再起動してください。- デフォルトでは、生成されたクエリプランが想定されるパターンと一致するか確認するため、CRUD クエリはまず
EXPLAIN ?ステートメントで実行されます。この動作を無効にするには、--with-explain-checkフラグを追加してください。
ツール
多言語サポート:すべてのツールの説明は、lang パラメーターに応じて自動的にローカライズされます。
独自の言語サポートを追加する場合は、[locales](for i18n) フォルダーを参照してください。 コマンドラインで使用するには、新しい locales/xxx/active-xx.toml ファイルを作成してください。
スキーマツール
-
list_database- ${mcp.tool.list_database.desc}
- パラメーター:なし
- 戻り値:一致するデータベース名の一覧。
-
list_table- ${mcp.tool.list_table.desc}
- パラメーター:
name:指定すると、その名前に一致するテーブルを一覧表示します。指定しない場合は、すべてのテーブルを一覧表示します。
- 戻り値:一致するテーブル名の一覧。
-
create_table- ${mcp.tool.create_table.desc}
- パラメーター:
query:テーブルを作成する SQL クエリ。
- 戻り値:影響を受けた行数。
-
alter_table- Postgres サーバー上の既存のテーブルを変更します。LLM には、既存のテーブルや列を削除しないよう指示されます。
- パラメーター:
query:テーブルを変更する SQL クエリ。
- 戻り値:影響を受けた行数。
-
desc_table- テーブルの構造を説明します。
- パラメーター:
name:説明するテーブルの名前。
- 戻り値:テーブルの構造。
データツール
-
read_query- 読み取り専用の SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリです。
- 戻り値:クエリの結果です。
-
write_query- 書き込み SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリです。
- 戻り値:影響を受けた行数、最後に挿入された ID:<last_insert_id>。
-
update_query- 更新 SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリです。
- 戻り値:影響を受けた行数です。
-
delete_query- 削除 SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリです。
- 戻り値:影響を受けた行数です。
-
count_query- 特定のテーブルの行数を取得します。
- パラメーター:
name:行数を取得するテーブルの名前です。
- 戻り値:テーブルの行数です。
https://github.com/Zhwt/go-mcp-mysql/ にも改めて深く感謝します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。