mcpField
D
db-metadata-extractor-mcp

db-metadata-extractor-mcp

ローカル
github.com/Optisol-Businessデータベース028 週間前に更新

db-metadata-extractor-mcp について

PostgreSQL、Snowflake、SQL Server、BigQuery、Oracleのスキーマメタデータを抽出・検索するMCPサーバーです。開発者やデータベース担当者向けに、メタデータをローカルのJSONとして保存し、絞り込みやページ分割に対応します。

主な機能

  1. 015種類のデータベースに対応
  2. 02テーブル、列、キー、索引、制約を抽出
  3. 03メタデータをローカルJSONに保存
  4. 04テーブル名や列名で検索
  5. 05メタデータをページ分割して表示

活用シーン

  1. 01データベーススキーマをローカルに記録
  2. 02抽出済みメタデータから表や列を検索
  3. 03指定したスキーマやテーブルを抽出
  4. 04大規模スキーマをページ単位で閲覧

MCP 対応

MCPクライアントに `extract_metadata` と `query_metadata` ツールを提供します。stdioとHTTPのトランスポートに対応しています。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"optisol-business-db-metadata-extractor": {
"command": "uvx",
"args": [
"db-metadata-extractor-mcp"
]
}
}
}
起動コマンドuvx db-metadata-extractor-mcp

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

パッケージ
pypidb-metadata-extractor-mcp0.1.6
ocidocker.io/optisolbusinesssol/db-metadata-extractor-mcp:0.1.6

ツール

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

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

詳細

mcp-name: io.github.Optisol-Business/db-metadata-extractor-mcp

Database Metadata Extractor MCP Server

PostgreSQL、Snowflake、SQL Server、BigQuery、Oracle データベースからデータベーススキーマのメタデータを抽出して検索する、Model Context Protocol(MCP)サーバーです。

機能

  • ✅ 複数データベース対応:PostgreSQL、Snowflake、SQL Server(MSSQL)、BigQuery、Oracle
  • ✅ 完全なスキーマ抽出:テーブル、列、主キー、インデックス、制約
  • ✅ ローカル JSON 出力:メタデータをローカルフォルダーに直接保存します(クラウドは不要です)
  • ✅ クエリインターフェース:テーブル名/列名でメタデータを検索、フィルタリングします
  • ✅ ページネーション対応:大規模なスキーマを効率的に閲覧できます
  • ✅ VS Code 連携:VS Code Agent Mode で動作します
  • ✅ CLI のカスタマイズ:トランスポートオプション(stdio、HTTP)

インストール

PyPI から
pip install db-metadata-extractor-mcp
ソースから
git clone https://github.com/Optisol-Business/db-metadata-extractor-mcp.git
cd db-metadata-extractor-mcp
pip install -e .

クイックスタート

1. MCP サーバーを起動する
db-metadata-extractor-mcp

サーバーはデフォルトで stdio モードで起動し、MCP クライアントからの接続を待ち受けます。

2. Claude Desktop で設定する

~/.config/Claude/claude_desktop_config.json(macOS/Linux)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加します。

{
  "mcpServers": {
    "db-metadata-extractor": {
      "command": "db-metadata-extractor-mcp",
      "args": [],
      "env": {}
    }
  }
}

Claude Desktop を再起動します。

3. Claude で使用する

Claude に次のように伝えます。

PostgreSQL データベースからメタデータを抽出して、/tmp/output に保存してください

Claude はサーバーのツールを使って、データベーススキーマを抽出し、検索します。

ツール

extract_metadata

データベースから完全なスキーマメタデータを抽出します。

パラメーター:

  • db_type(必須):postgresql、snowflake、sqlserver、bigquery、oracle
  • output_path(必須):JSON 出力先のローカルディレクトリ
  • database_name:データベース/スキーマ名
  • host:データベースホスト(BigQuery/Snowflake では不要)
  • port:データベースポート
  • username:データベースユーザー
  • password:データベースパスワード
  • schema_name:特定のスキーマ(任意)
  • tables:抽出するテーブル名の配列(任意)
  • account:Snowflake アカウント ID
  • warehouse:Snowflake ウェアハウス
  • role_name:Snowflake ロール
  • project_id:BigQuery プロジェクト ID
  • service_account_key:BigQuery サービスアカウントの JSON(Base64 エンコード)

戻り値:

  • メタデータの保存先ファイルパス
  • 概要統計(テーブル数、列数など)
query_metadata

以前に抽出したメタデータを検索します。

パラメーター:

  • filepath(必須):メタデータ JSON ファイルのパス
  • table_name:テーブル名でフィルタリング(部分一致)
  • field_name:列名でフィルタリング(部分一致)
  • page:ページ番号(デフォルト:1)
  • page_size:1 ページあたりの結果数(デフォルト:20)

戻り値:

  • フィルター条件に一致する、ページ分割されたテーブルの結果

使用例

PostgreSQL
# Via Claude
"Extract all tables from my dev PostgreSQL database at localhost:5432"

Claude が使用するパラメーター:

{
  "db_type": "postgresql",
  "host": "localhost",
  "port": 5432,
  "database_name": "dev_db",
  "username": "postgres",
  "password": "your_password",
  "output_path": "/tmp/db_metadata"
}
Snowflake
"Extract schema from Snowflake account XYZ123"

パラメーター:

{
  "db_type": "snowflake",
  "account": "XYZ123",
  "username": "your_user",
  "password": "your_password",
  "warehouse": "COMPUTE_WH",
  "role_name": "ANALYST",
  "database_name": "PRODUCTION",
  "output_path": "C:/metadata"
}
BigQuery
"Extract metadata from BigQuery project my-project-123"

パラメーター:

{
  "db_type": "bigquery",
  "project_id": "my-project-123",
  "service_account_key": "base64_encoded_json_key",
  "output_path": "/tmp/bq_metadata"
}

高度な使い方

カスタムトランスポート

HTTP トランスポートで起動します。

db-metadata-extractor-mcp --transport streamable-http --port 3000
環境変数
# Set database credentials via env
export DB_HOST=localhost
export DB_USER=postgres
export DB_PASSWORD=secret

db-metadata-extractor-mcp

出力形式

抽出したメタデータは、次の構造の JSON ファイルとして保存されます。

{
  "source": {
    "db_type": "postgresql",
    "extracted_at": "2026-04-09T14:30:00",
    "host": "localhost"
  },
  "schemas": [
    {
      "schema_name": "public",
      "tables": [
        {
          "table_name": "users",
          "columns": [
            {
              "column_name": "id",
              "data_type": "int",
              "is_nullable": false,
              "is_primary_key": true
            },
            {
              "column_name": "email",
              "data_type": "varchar",
              "is_nullable": false
            }
          ],
          "indexes": [
            {
              "index_name": "users_email_idx",
              "columns": ["email"]
            }
          ]
        }
      ]
    }
  ]
}

要件

  • Python 3.8+
  • PostgreSQL の場合:psycopg2-binary
  • Snowflake の場合:snowflake-connector-python
  • SQL Server の場合:pyodbc、pymssql
  • BigQuery の場合:google-cloud-bigquery
  • Oracle の場合:oracledb

トラブルシューティング

接続エラー

問題:「データベースに接続できません」

解決方法:認証情報とネットワークアクセスを確認します。

# Test PostgreSQL connection
psql -h localhost -U postgres -c "SELECT 1"

# Test Snowflake
snowsql -a XYZ123 -u your_user
権限エラー

問題:「アクセスが拒否されました」または「権限が不十分です」

解決方法:データベースユーザーに次の権限があることを確認します。

  • テーブルに対する SELECT
  • スキーマに対する USAGE
  • データベースに対する CONNECT
大規模スキーマのタイムアウト

問題:大規模なデータベースで抽出がタイムアウトします

解決方法:特定のスキーマ/テーブルを抽出します。

{
  "schema_name": "public",
  "tables": ["users", "orders"]  // Specify subset
}

ライセンス

MIT License - LICENSE ファイルを参照してください

貢献

貢献を歓迎します。次の手順でお願いします。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. プルリクエストを送信します

Support

Links

コメント

MCP は初めてですか?

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

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