PostgreSQL MCP サーバー (拡張版)
PostgreSQLデータベースへの読み取りと書き込みの両方のアクセスを提供するモデルコンテキストプロトコル(LLM)サーバー。このサーバーにより、LLMはデータベーススキーマの検査、クエリの実行、データの変更、データベーススキーマオブジェクトの作成/変更を行うことができます。
**注:**これはAnthropicによるオリジナルのPostgreSQL MCPサーバーの拡張版です。オリジナルのサーバーは読み取り専用アクセスを提供しますが、この拡張版では書き込み機能とスキーマ管理機能が追加されています。
コンポーネント
ツール
データクエリ
クエリ
接続されたデータベースに対して読み取り専用のSQLクエリを実行する
入力:
sql(文字列): 実行するSQLクエリすべてのクエリは読み取り専用トランザクション内で実行されます
データの変更
実行する
データを変更するSQL文を実行する(INSERT、UPDATE、DELETE)
入力:
sql(文字列): 実行するSQL文適切な COMMIT/ROLLBACK 処理を伴うトランザクション内で実行される
入れる
テーブルに新しいレコードを挿入する
入力:
table(文字列): テーブル名data(オブジェクト):キーと値のペア。キーは列名、値は挿入するデータです。
アップデート
テーブル内のレコードを更新する
入力:
table(文字列): テーブル名data(オブジェクト): 更新するフィールドのキーと値のペアwhere(文字列): 更新するレコードを識別するためのWHERE条件
消去
テーブルからレコードを削除する
入力:
table(文字列): テーブル名where(文字列): 削除するレコードを識別するためのWHERE条件
スキーマ管理
テーブルを作成する
指定された列と制約を持つ新しいテーブルを作成する
入力:
tableName(文字列): テーブル名columns(配列): 名前、型、およびオプションの制約を持つ列定義の配列constraints(配列):テーブルレベルの制約のオプションの配列
作成関数
PostgreSQL関数/プロシージャを作成する
入力:
name(文字列): 関数名parameters(文字列): 関数のパラメータreturnType(文字列): 戻り値の型language(文字列): 言語 (plpgsql、sql など)body(文字列): 関数本体options(文字列): オプションの追加関数オプション
トリガーの作成
テーブルにトリガーを作成する
入力:
name(文字列): トリガー名tableName(文字列): トリガーを適用するテーブルfunctionName(文字列): 呼び出す関数when(文字列): BEFORE、AFTER、またはINSTEAD OFevents(配列): イベントの配列 (INSERT、UPDATE、DELETE)forEach(文字列): ROW または STATEMENTcondition(文字列):オプションのWHEN条件
インデックス作成
テーブルにインデックスを作成する
入力:
tableName(文字列): テーブル名indexName(文字列): インデックス名columns(配列): インデックスを付ける列unique(boolean): インデックスがユニークかどうかtype(文字列): オプションのインデックスタイプ (BTREE、HASH、GIN、GIST など)where(文字列): オプションの条件
表の変更
テーブル構造を変更する
入力:
tableName(文字列): テーブル名operation(文字列): 操作 (ADD COLUMN、DROP COLUMN など)details(文字列): 操作の詳細
リソース
サーバーは、データベース内の各テーブルのスキーマ情報を提供します。
テーブルスキーマ(
postgres://<host>/<table>/schema)各テーブルのJSONスキーマ情報
列名とデータ型が含まれます
データベースのメタデータから自動的に検出
Related MCP server: PostgreSQL MCP Server
Claude Desktopでの使用
このサーバーを Claude Desktop アプリで使用するには、 claude_desktop_config.jsonの「mcpServers」セクションに次の構成を追加します。
ドッカー
macOSでdockerを実行する場合、サーバーがホストネットワーク(例:localhost)上で実行されている場合はhost.docker.internalを使用します。
ユーザー名/パスワードは
postgresql://user:password@host:port/db-nameのように postgresql の URL に追加できます。SSL証明書の検証をバイパスする必要がある場合は
?sslmode=no-verifyを追加します。
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/postgres",
"postgresql://host.docker.internal:5432/mydb"]
}
}
}NPX
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}/mydbデータベース名に置き換えます。
使用例
クエリデータ
/query SELECT * FROM users LIMIT 5データの挿入
/insert table="users", data={"name": "John Doe", "email": "john@example.com"}データの更新
/update table="users", data={"status": "inactive"}, where="id='123'"テーブルを作成する
/createTable tableName="tasks", columns=[
{"name": "id", "type": "SERIAL", "constraints": "PRIMARY KEY"},
{"name": "title", "type": "VARCHAR(100)", "constraints": "NOT NULL"},
{"name": "created_at", "type": "TIMESTAMP", "constraints": "DEFAULT CURRENT_TIMESTAMP"}
]関数とトリガーを作成する
/createFunction name="update_timestamp", parameters="", returnType="TRIGGER", language="plpgsql", body="BEGIN NEW.updated_at = NOW(); RETURN NEW; END;"
/createTrigger name="set_timestamp", tableName="tasks", functionName="update_timestamp", when="BEFORE", events=["UPDATE"], forEach="ROW"建物
ドッカー:
docker build -t mcp/postgres -f Dockerfile . セキュリティに関する考慮事項
すべてのデータ変更操作は、適切なCOMMIT/ROLLBACK処理を伴うトランザクションを使用します。
各操作は透明性のために実行されたSQLを返します
サーバーは、SQLインジェクションを防ぐために、挿入/更新操作にパラメータ化されたクエリを使用します。
ライセンス
このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。
This server cannot be installed
Maintenance
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GarethCott/enhanced-postgres-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
