mcpField
P
pgmoat

pgmoat

ローカル
github.com/Kitalon-Labs-LLCデータベース04 日前に更新

pgmoat について

pgmoat は、AI エージェントに Postgres の読み取り専用アクセスを提供するオープンソースの MCP サーバーです。Postgres パーサーによるクエリ検査に加え、行レベルセキュリティ、データ非表示、予算制限、改ざん検知可能な監査を備えています。

主な機能

  1. 01読み取り専用のデータベースアクセス
  2. 02Postgres パーサーによるクエリ検査
  3. 03指定したテーブルと列の非表示
  4. 04RLS、行数制限、タイムアウトの適用
  5. 05検証可能な改ざん検知監査ログ
  6. 06ロール権限の確認と可視スキーマの出力

活用シーン

  1. 01エージェントに統制されたデータベース検索を提供
  2. 02機密列をクエリ結果から隠す
  3. 03呼び出し元の ID に応じた行レベルセキュリティの適用
  4. 04監査ログのハッシュチェーンを検証

MCP 対応

pgmoat はツールを通じて、MCP クライアントに統制された Postgres の読み取り専用アクセスを提供する MCP サーバーです。クエリ解析、セキュリティ制御、制限、監査を適用します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"kitalon-labs-llc-pgmoat": {
"command": "npx",
"args": [
"-y",
"pgmoat"
],
"env": {
"PGMOAT_DATABASE_URL": "<PGMOAT_DATABASE_URL>"
}
}
}
}
起動コマンドnpx -y pgmoat
設定が必要な環境変数
PGMOAT_DATABASE_URLシークレットPostgres connection URL (use a read-only role)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmpgmoat0.1.1

ツール

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

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

詳細

pgmoat

CI npm version License: MIT

AI エージェント向けの、管理された Postgres アクセス。

pgmoat は、AI エージェントに Postgres への読み取り専用アクセスを提供するオープンソースの MCP サーバーです。すべてのクエリを実際の Postgres パーサーでチェックし、非表示に指定したテーブルやカラムを隠し、行数制限とタイムアウトを適用します。また、呼び出し元の ID に Row-Level Security をバインドし、改ざんを検知できる監査ログを書き込みます。

Node.js 22.12 以降および Postgres 15〜18 が必要です。

クイックスタート

安全なデフォルト設定で、設定ファイルを使わずにデータベースに接続して実行できます。

npx -y pgmoat postgresql://readonly_user:password@localhost:5432/mydb

Claude Code に追加します。

claude mcp add pgmoat -- npx -y pgmoat postgresql://readonly_user:password@localhost:5432/mydb

または、Claude Desktop(claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "pgmoat": {
      "command": "npx",
      "args": ["-y", "pgmoat", "--url-env", "PGMOAT_DATABASE_URL"],
      "env": { "PGMOAT_DATABASE_URL": "postgresql://readonly_user:password@localhost:5432/mydb" }
    }
  }
}

--url-env を使って URL を渡すと、パスワードがプロセス一覧に表示されません。

専用の読み取り専用ロールを使用してください。ロールがスーパーユーザーである場合や、書き込み権限を持つ場合、pgmoat は起動時に警告します。

説明を追加して機密データを非表示にする

export PGMOAT_DATABASE_URL=postgresql://readonly_user:password@localhost:5432/mydb
npx pgmoat init          # writes pgmoat.yaml; auto-hides columns like password_hash and token_hash
npx pgmoat validate      # checks the file against the schema and the database
npx pgmoat doctor        # checks the role for unsafe privileges
npx pgmoat start         # starts the server with ./pgmoat.yaml

pgmoat.yaml は次のようになります。

version: 1
server:
  name: mydb
connection:
  url: ${PGMOAT_DATABASE_URL}
  schemas: [public]
mode: read-only
budgets:
  max_rows: 200
  max_query_ms: 5000
tables:
  users:
    description: "One row per login account"
    columns:
      password_hash: { hidden: true }
      email:         { sensitive: high }

コマンド

コマンド説明
pgmoat <postgres-url>安全なデフォルト設定で起動します(設定ファイルは不要です)
pgmoat initデータベースから pgmoat.yaml を作成します
pgmoat startpgmoat.yaml から MCP サーバーを起動します
pgmoat validatepgmoat.yaml をスキーマおよびデータベースに照らして検証します
pgmoat doctorデータベースロールに危険な権限がないか確認します
pgmoat audit verify監査ログのハッシュチェーンを検証します
pgmoat schema-export表示対象のスキーマを Markdown として書き出します

すべてのオプションについては、pgmoat --help を実行してください。

pgmoat が行わないこと

  • プロンプトインジェクションを防止するものではありません。 書き込み経路を取り除き、非表示に指定した内容を隠し、返されたデータに信頼できないデータであることを示しますが、ほかのツール(ウェブアクセス、メール)を持つエージェントは、読み取り可能なデータをほかの場所に送信するようだまされる可能性があります。
  • Postgres の権限に取って代わるものではありません。 最も強力な制御は、必要な権限だけを付与した専用ロールを使用することです。
  • RLS ポリシーが正しいことを保証するものではありません。 ポリシーが参照するセッション変数を設定します。ポリシーに不備があれば、その不備は残ります。
  • 障害発生時にリモートの宛先へ監査ログが確実に届くことを保証するものではありません。 バッファリング、アラート、ドロップの記録を行います。

Docker

docker run -i --rm \
  -e PGMOAT_DATABASE_URL="postgresql://readonly_user:[email protected]:5432/mydb" \
  ghcr.io/kitalon-labs-llc/pgmoat:latest

コントリビューション

CONTRIBUTING.md をご覧ください。脆弱性は SECURITY.md の説明に従って非公開で報告してください。

リンク

ライセンス

MIT (c) 2026 Kitalon Labs

コメント

MCP は初めてですか?

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

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