Skip to main content
Glama
thhart

database-mcp

by thhart

database-mcp

SQLデータベースMCPサーバー。真のサーバーサイド結果ページングを備えています。これは、既存のデータベースMCPサーバーにはない機能です(DBHubは行数を制限し、GoogleのMCP Toolboxはすべてを返し、mcp-alchemyは4000文字で切り捨てます)。

PostgreSQLリファレンス実装。

なぜ

既存のSQL MCPサーバーはすべて、大きな結果を切り捨てるか、モデルのコンテキストに全体をダンプします。MCP仕様はリスト操作(tools/list)のみをページングし、ツール結果はページングしません。database-mcpはそのギャップを埋めます:

  • クエリはPostgreSQLサーバーサイドカーソル(DECLARE/FETCH FORWARD)として保持トランザクション内で一度だけ実行されます。

  • fetch(cursor)は、最後のページが終了した正確にその場所から続行します。再実行もOFFSET再スキャンもなく、MVCCスナップショットにより、同時書き込みが発生しても結果は安定しています。

  • ページは行数(page_sizeレンダリングバイト数(max_page_bytes)の両方で制限されます。過大なセルは明示的なマーカーで切り捨てられます。

  • 保持カーソルは制限されています:最大N個の同時実行(LRU退避)、TTLアイドル退避、さらにidle_in_transaction_session_timeoutをサーバーサイドのバックストップとして使用します。使い切ったカーソルは自動的に閉じられます。

Related MCP server: pgsql-mcp

接続プロファイル — 実行時にAIが管理

接続は名前付きプロファイルで、~/.config/database-mcp/profiles.json(chmod 600)に永続化されます。AIはツールを介して、サーバーを再起動することなく、プロファイルを追加、変更、テスト、削除できます:

  • profile_add(name, dsn, allow_writes=false, description, make_default, test=true)

  • profile_remove(name) · profile_test(name) · profiles()

  • すべてのクエリツールはオプションのprofileパラメータを受け取ります。省略時はデフォルトプロファイルが使用されます。

プロファイルはデフォルトで読み取り専用です(セッションレベルのdefault_transaction_read_only)。書き込みには明示的なallow_writes=trueプロファイルが必要です。

SSHブリッジ

プロファイルは、SSH経由でのみアクセス可能なデータベース(典型的な「Postgresがリモートホストのlocalhostでリッスンしている」設定)に到達できます:

profile_add(name="prod", dsn="postgresql://app@dbhost:5432/app",
            ssh_host="dbhost")
  • トンネルはシステムsshサブプロセス(-N -L、BatchMode、キープアライブ)です。~/.ssh/config、キー、エージェントはそのまま適用されます。認証は非対話的に機能する必要があります。

  • ssh_remote_host/ssh_remote_portは、SSHホストから見たDSNのホスト/ポートをデフォルトとします。DSNホストがSSHホストと等しい場合、127.0.0.1(通常のケース)をデフォルトとします。

  • トンネルは遅延起動し、使用のたびにヘルスチェックされ、自動的に再構築されます。ページング中にトンネルが死んだ場合、そのカーソルは明確なエラーで無効化され、次のクエリで再接続されます。

  • 多重化(ControlMaster)はトンネル接続では明示的に無効化され、トンネルの寿命がサブプロセスの寿命と正確に一致するようにします。

ツール

ツール

目的

query

SQLを実行し、最初のページと、さらに行がある場合のcursorを取得

fetch

保持カーソルから次のページを取得 — 再実行なし

close

1つまたはすべてのカーソルを早期に閉じる

tables

行推定値とサイズを含むテーブル/ビューを一覧表示

describe

1つのテーブルの列、制約、インデックス

explain

クエリプラン(オプションでanalyze

overview

オリエンテーションカード:すべてのテーブル+行推定値+列名を1回の呼び出しで

search_objects

名前またはコメントでテーブル/列/関数を検索

profile

pg_statsからの列統計 — スキャンなしの分布

relations

テーブルの外部キー(双方向)

join_path

2つのテーブル間の最短FKパスを、すぐに使えるJOINチェーンとして

count

即時のプランナー推定値(オプションのwhere)、実際のcount(*)にはexact=true

sample

TABLESAMPLEによる真にランダムな行(LIMITバイアスなし)

profiles / profile_add / profile_remove / profile_test

実行時接続管理

status

プロファイル、プール、開いているカーソル、制限

結果はコンパクトなJSONです — 列は一度だけ、行は配列として — 他のサーバーが出力する行辞書形式の約半分のトークンです。queryestimated_rowsEXPLAINによるプランナー推定値)も返すため、モデルは何をページングしているかを把握できます。

インストールと実行

uv pip install -e .
database-mcp --dsn postgresql://user@host:5432/db      # registers profile "default"
database-mcp                                           # start empty, add profiles at runtime

Claude Code登録:

claude mcp add database -- database-mcp --dsn postgresql://user@host:5432/db

オプション:--profiles FILE--allow-writes--page-size 50--max-page-size 500--max-page-bytes 32000--max-cell 400--cursor-ttl 300--max-cursors 4--statement-timeout 30--keepalive 120--connect-timeout 5。 環境変数:DATABASE_MCP_DSN / DATABASE_URLDATABASE_MCP_PROFILES

古さの処理

死んだ接続は、ハングする代わりに各レイヤーで迅速に検出されます:

  • SSHトンネルServerAliveInterval = --keepalive(デフォルト2分)でServerAliveCountMax=1 — 1回のプローブ失敗でトンネルプロセスが終了し、エンジンマネージャーが次の使用時に検出して遅延再構築します。

  • DB接続:TCPキープアライブ(keepalives_idle = --keepalive、10秒ごとのプローブ、3回の失敗)で、約30秒で死んだピアを検出します — プール外の固定カーソル接続も含みます。

  • プールチェックアウトチェック:配布されるすべての接続は、安価なラウンドトリップで検証されます。古いものは破棄され、透過的に置き換えられます — 呼び出し元はエラーを見ることはありません。アイドル状態のプール接続は--keepalive秒後に再利用され、接続試行は--connect-timeout(デフォルト5秒)後に失敗します(TCPデフォルトの約2分ではなく)。

テスト

uv pip install -e '.[dev]'
pytest            # needs a local PostgreSQL (DBMCP_TEST_DSN to override)

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables comprehensive PostgreSQL database management including index tuning, query plan analysis, health monitoring, schema-aware SQL generation, and safe SQL execution with configurable access control for both development and production environments.
    9
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables interaction with PostgreSQL databases through comprehensive database management tools including index tuning, query execution plans, health checks, schema intelligence, and safe SQL execution with configurable read-only mode for production use.
    35
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables querying PostgreSQL databases via MCP, with multi-database routing, credential isolation, and truncated results plus full CSV export.

View all related MCP servers

Related MCP Connectors

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

  • Connect to PlanetScale databases, branches, schema, query insights, and execute SQL

  • Comprehensive PostgreSQL documentation and best practices, including ecosystem tools

View all MCP Connectors

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/thhart/database-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server