Skip to main content
Glama
kobramantra-debug

mcp-database-universal

MCP Database Server

MCP対応AIエージェント向けのデータベース推論インターフェース — 単なるSQLラッパーではありません。

mcp-database-universal は、AIエージェントに 7つの推論ツール を提供し、データベースを安全に探索・クエリし、スキーマとデータ構造を理解し、自然言語の質問を実行し、リレーションシップを可視化します — すべて生の接続内部を公開することなく。

特徴

  • AIエージェント向けの7つの推論ツール: 接続テスト、テーブル一覧、テーブル検査、パラメータ化SQLの実行、平文での質問、データプロファイリング、ER図の描画。

  • マルチエンジン: SQLite(組み込み)に加え、PostgreSQL、MySQL、MSSQLをオプションでサポート。

  • 安全性最優先: デフォルトで読み取り専用、パラメータ化クエリ、ステートメント検証、行数・時間・出力サイズの制限。

  • LLMに優しい出力: 型を変換し、NULLを処理し、結果をMarkdownテーブルでコンテキスト付きで整形。

  • スキーマイントロスペクション: テーブル、カラム、インデックス、外部キー、リレーションシップを自動検出。

  • 自然言語クエリ: 平文の質問をSQLに変換し、結果を返します。

Related MCP server: database-explorer-mcp

サポートされているエンジン

エンジン

要件

追加インストール

SQLite

組み込み

—

PostgreSQL

psycopg

pip install "mcp-database-universal[postgres]"

MySQL

PyMySQL

pip install "mcp-database-universal[mysql]"

MSSQL

pyodbc + ODBCドライバ

pip install "mcp-database-universal[mssql]"

すべて

—

pip install "mcp-database-universal[all]"

インストール

pip install mcp-database-universal

# With optional engines:
pip install "mcp-database-universal[postgres]"
pip install "mcp-database-universal[mysql]"
pip install "mcp-database-universal[mssql]"
# or everything:
pip install "mcp-database-universal[all]"

クイックスタート

STDIO(MCPクライアントのデフォルトトランスポート)でサーバーを実行します:

DATABASE_URL=sqlite:///app.db python -m mcp_database_universal

接続URL:

sqlite:///path/to/db.db              SQLite (file)
sqlite:///:memory:                   SQLite (in-memory)
postgresql://user:pass@host:5432/db  PostgreSQL
mysql://user:pass@host:3306/db       MySQL
mssql://user:pass@host:1433/db       MSSQL (uses ODBC Driver 18)

Docker

docker build -t mcp-db .

# Mount a SQLite database read-only:
docker run --rm -i \
  -v /host/path/app.db:/data/app.db:ro \
  -e DATABASE_URL=sqlite:////data/app.db \
  mcp-db

# Or in-memory:
docker run --rm -i -e DATABASE_URL=sqlite:///:memory: mcp-db

設定

すべての設定は環境変数で行います。

変数

デフォルト

説明

DATABASE_URL

(必須)

データベース接続URL。

DATABASE_READ_ONLY

true

読み取り専用モードを強制(DATABASE_WRITE_ENABLED が設定されていても書き込みをブロック)。

DATABASE_WRITE_ENABLED

false

DATABASE_READ_ONLY=false の場合に書き込みステートメントを許可。

DATABASE_MAX_ROWS

1000

クエリごとに返される最大行数。

DATABASE_MAX_QUERY_TIME

30

クエリのタイムアウト(秒)。

DATABASE_MAX_OUTPUT_BYTES

50000

結果ペイロードのサイズ上限。

DATABASE_SAMPLE_SIZE

5

テーブル/カラム統計で表示されるサンプル行数。

DATABASE_PROFILE_TOP_N

10

プロファイリングでの上位N値の分布エントリ。

OPENAI_API_KEY

—

LLMベースの natural_query モード用のAPIキー。

ANTHROPIC_API_KEY

—

LLMベースの natural_query モード用のAPIキー。

ツール

ツール

説明

test_connection

DB接続をテストし、エンジン、バージョン、名前、サイズ、テーブル数を報告。

list_tables

行数、カラム数、FKリレーションシップを含む全テーブルの概要。

inspect_table

1つのテーブルの完全な構造: カラム、型、インデックス、FK、サンプルデータ。

query

安全なパラメータ化SQLクエリを実行し、Markdown結果を取得。

natural_query

平文で質問し、生成されたSQLと結果を取得。

profile_database

データプロファイル: 分布、NULL率、リレーションシップ、サイズ。

schema_graph

テーブルリレーションシップのMermaid ER図。

例: パラメータ付き query

{
  "sql": "SELECT * FROM users WHERE id = :id AND active = :active",
  "params": "{\"id\": 42, \"active\": true}"
}

パラメータは :name プレースホルダーを使用します。params にJSON文字列として値を渡します。

例: natural_query

question: "How many users are there?"
-> SELECT COUNT(*) FROM users
question: "Show me all orders"
-> SELECT * FROM orders LIMIT 100

小さなサンプルデータベースに対する動作例は examples/ にあり、一般的なMCPクライアント用のすぐ使える設定スニペットも同梱されています。

MCPクライアント設定

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["-m", "mcp_database_universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Cursor / その他のCLIベースのクライアント

{
  "mcpServers": {
    "database": {
      "command": "uvx",
      "args": ["mcp-database-universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Windowsに関する注意: 非同期PostgresドライバーはWindowsセレクターイベントループを必要とします。このパッケージは win32 で自動的にこのポリシーを設定するため、追加設定は不要です。

開発

pip install -e ".[dev]"
pytest

PostgreSQL/MySQLの統合テストはDocker Composeを使用し、サーバーに到達できない場合は自動的にスキップされます:

docker compose -f tests/integration/docker-compose.yml up -d
pytest

安全性モデル

  • サーバーはデフォルトで読み取り専用です。INSERT/UPDATE/DELETE/DROP/ALTER などの書き込みステートメントはブロックされます。

  • 書き込みは、オペレーターが明示的に DATABASE_READ_ONLY=false かつ DATABASE_WRITE_ENABLED=true を設定した場合のみ可能です。

  • クエリ結果は行数、タイムアウト、出力サイズで制限され、暴走クエリは防止されます。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connect AI agents to SQL databases (SQLite, PostgreSQL, MySQL) with a unified interface for querying data, exploring schemas, inserting rows, and exporting results to CSV. Includes safety features like dangerous query blocking and write guards.
    5 npm
    40 PyPI
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with PostgreSQL or MySQL databases using natural language. Supports SQL queries, schema discovery, and pre-built aggregations without writing SQL.
    139 npm
    MIT