mcpField
P
PostgreSQL MCP Server

PostgreSQL MCP Server

ローカル
github.com/habuvoデータベース279 週間前に更新

PostgreSQL MCP Server について

PostgreSQL MCP Serverは、MCPクライアントからPostgreSQLを操作・確認するためのインターフェースです。パラメーター化SQL、複数文のトランザクション、テーブルスキーマ取得に対応します。

主な機能

  1. 01パラメーター化SQLクエリの実行
  2. 02挿入・更新・削除の実行
  3. 03複数文トランザクションの実行
  4. 04テーブルスキーマ情報の取得
  5. 05クエリパラメーターの安全な処理

活用シーン

  1. 01条件を指定してPostgreSQLデータを検索
  2. 02複数の書き込みをトランザクションで実行
  3. 03テーブルの列と型を確認

MCP 対応

MCP経由でSQL実行、クエリ、トランザクション、スキーマ取得のツールを提供し、PostgreSQL操作を可能にします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

PostgreSQL MCP サーバー

これは、PostgreSQL データベースとやり取りするためのインターフェースを提供する Model Context Protocol(MCP)サーバーです。標準化された API を通じて、クエリの実行、データベース操作、トランザクション管理を行えます。

特長

  • パラメーター化された入力を使用した SQL クエリの実行
  • データベース操作(INSERT、UPDATE、DELETE)の実行
  • 複数のステートメントを含むトランザクションの実行
  • データベースのスキーマ情報の取得
  • SQL インジェクションを防ぐ安全なパラメーター処理

インストール

  1. リポジトリをクローンします。

    git clone https://github.com/yourusername/postgres-mcp.git
    cd postgres-mcp
    
  2. 依存関係をインストールします。

    go mod download
    
  3. データベース接続を設定します。

    cp .env.example .env
    

    .env ファイルを編集し、PostgreSQL データベースの認証情報を設定します。

  4. サーバーをビルドします。

    go build -o postgres-mcp
    
  5. サーバーを起動します。

    ./postgres-mcp
    

使い方

サーバーは、以下の MCP ツールを公開します。

1. execute_tool

単一の SQL ステートメントを実行します。

リクエスト:

{
  "statement": "INSERT INTO users(name, email) VALUES($1, $2)",
  "arguments": ["Jane Doe", "[email protected]"]
}

レスポンス:

{
  "rows affected": 1
}
2. query_tool

SELECT クエリを実行し、結果を返します。

リクエスト:

{
  "statement": "SELECT * FROM users WHERE id = $1",
  "arguments": [1]
}

レスポンス:

{
  "rows": [
    {
      "id": 1,
      "name": "John Doe",
      "email": "[email protected]"
    }
  ],
  "columns": ["id", "name", "email"],
  "rowCount": 1
}
3. transaction_tool

トランザクション内で複数のステートメントを実行します。

リクエスト:

{
  "statements": [
    "INSERT INTO users(name, email) VALUES($1, $2)",
    "INSERT INTO user_roles(user_id, role) VALUES($1, $2)"
  ],
  "arguments": [
    ["Alice", "[email protected]"],
    [1, "admin"]
  ]
}

レスポンス:

{
  "results": [
    {
      "statement": 0,
      "rowsAffected": 1
    },
    {
      "statement": 1,
      "rowsAffected": 1
    }
  ]
}
4. schema_tool

テーブルのスキーマ情報を取得します。

リクエスト:

{
  "table_name": "users"
}

レスポンス:

{
  "table": "users",
  "columns": [
    {
      "name": "id",
      "type": "integer",
      "nullable": false,
      "default": "nextval('users_id_seq'::regclass)"
    },
    {
      "name": "name",
      "type": "character varying",
      "nullable": false,
      "default": null
    },
    {
      "name": "email",
      "type": "character varying",
      "nullable": false,
      "default": null
    }
  ]
}

クライアントの例

MCP クライアントを使用してサーバーとやり取りする方法の例を示します。

package main

import (
 "encoding/json"
 "fmt"
 "log"

 "github.com/mark3labs/mcp-go/client"
)

func main() {
 // Create a new MCP client
 c := client.NewClient("http://localhost:8080")

 // Prepare a query request
 queryReq := map[string]interface{}{
  "statement": "SELECT * FROM users WHERE id = $1",
  "arguments": []interface{}{1},
 }

 // Execute the query
 resp, err := c.Execute("query_tool", queryReq)
 if err != nil {
  log.Fatalf("Failed to execute query: %v", err)
 }

 // Print the response
 prettyJSON, _ := json.MarshalIndent(resp.Data, "", "  ")
 fmt.Println(string(prettyJSON))
}

セキュリティに関する考慮事項

  • SQL インジェクション攻撃を防ぐため、必ずパラメーター化クエリを使用してください。
  • データベースユーザーの権限は、必要なものだけに制限してください。
  • 本番環境では、データベース接続に SSL/TLS を使用してください。
  • MCP サーバーに適切な認証と認可を実装してください。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。