mcpField
M
MCP Server ODBC via SQLAlchemy

MCP Server ODBC via SQLAlchemy

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

MCP Server ODBC via SQLAlchemy について

FastAPI、pyodbc、SQLAlchemy で構築された、ODBC データベース向けの軽量な MCP サーバーです。Virtuoso DBMS に対応し、SQLAlchemy ドライバーを備えた他のデータベースでも利用できます。MCP クライアントからデータベースを操作したい利用者を想定しています。

主な機能

  1. 01スキーマ、テーブル、テーブル構造の一覧表示
  2. 02テーブル名の部分一致検索
  3. 03JSONL または Markdown 形式での SQL 実行
  4. 04Virtuoso ストアドプロシージャの実行
  5. 05SPARQL および SPASQL クエリツールの提供

活用シーン

  1. 01アシスタントによるテーブル構造と主キー・外部キーの確認
  2. 02SQL クエリの実行と Markdown 形式のレポート作成
  3. 03Virtuoso に対する SPARQL クエリの実行

MCP 対応

テーブル構造の参照、SQL 実行、ストアドプロシージャ呼び出し、Virtuoso 専用の AI サポート関数などのデータベースツールを MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"odbc": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

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

パッケージ
npm@modelcontextprotocol/inspector

ツール

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

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

詳細


SQLAlchemy 経由の MCP Server ODBC

FastAPI、pyodbc、SQLAlchemyで構築された、ODBC 用の軽量な MCP(Model Context Protocol)サーバーです。このサーバーは、Virtuoso DBMS および SQLAlchemy プロバイダーを実装するその他の DBMS バックエンドと互換性があります。

mcp-client-and-servers|648x499


機能

  • スキーマの取得:接続先のデータベースからすべてのスキーマ名を取得して一覧表示します。
  • テーブルの取得:指定したスキーマ、またはすべてのスキーマのテーブル情報を取得します。
  • テーブルの説明:次の情報を含む、テーブル構造の詳細な説明を生成します。
    • カラム名とデータ型
    • NULL 許容属性
    • 主キーと外部キー
  • テーブルの検索:名前の部分文字列に基づいてテーブルを絞り込み、取得します。
  • ストアドプロシージャの実行:Virtuoso の場合、ストアドプロシージャを実行して結果を取得します。
  • クエリの実行:
    • JSONL 結果形式:構造化された応答に最適化されています。
    • Markdown テーブル形式:レポートや可視化に最適です。

前提条件

  1. uv をインストールする:

    pip install uv
    

    または Homebrew を使用します:

    brew install uv
    
  2. unixODBC ランタイム環境の確認:

  3. odbcinst -j を実行して、インストール設定(主要な INI ファイルの場所など)を確認します。

  4. odbcinst -q -s を実行して、利用可能なデータソース名を一覧表示します。

  5. ODBC DSN の設定:対象データベース用の ODBC データソース名(~/.odbc.ini)を設定します。Virtuoso DBMS の例:

    [VOS]
    Description = OpenLink Virtuoso
    Driver = /path/to/virtodbcu_r.so
    Database = Demo
    Address = localhost:1111
    WideAsUTF16 = Yes
    
  6. SQLAlchemy URL のバインディング:次の形式を使用します:

    virtuoso+pyodbc://user:password@VOS
    

インストール

このリポジトリをクローンします:

git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git
cd mcp-sqlalchemy-server

環境変数

.envを更新し、デフォルト値を好みに合わせて上書きします。

ODBC_DSN=VOS
ODBC_USER=dba
ODBC_PASSWORD=dba
API_KEY=xxx

設定

Claude Desktop ユーザーの場合: 次の内容を claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "my_database": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"],
      "env": {
        "ODBC_DSN": "dsn_name",
        "ODBC_USER": "username",
        "ODBC_PASSWORD": "password",
        "API_KEY": "sk-xxx"
      }
    }
  }
}

使用方法

データベース管理システム(DBMS)の接続 URL

この mcp-server を使用して接続をテストした DBMS システム向けの pyodbc URL の例を示します。

データベースURL 形式
Virtuoso DBMSvirtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQLpostgresql://user:password@localhost/dbname
MySQLmysql+pymysql://user:password@localhost/dbname
SQLitesqlite:///path/to/database.db
接続後は、Claude の AI 機能を活用して、WhatsApp の会話を通じて Claude と WhatsApp の連絡先についてやり取りできます。

提供されるツール

概要
名前説明
podbc_get_schemas接続先のデータベース管理システム(DBMS)からアクセス可能なデータベーススキーマを一覧表示します。
podbc_get_tables選択したデータベーススキーマに属するテーブルを一覧表示します。
podbc_describe_table指定したデータベーススキーマに属するテーブルの説明を表示します。カラム名、データ型、NULL の処理、自動インクリメント、主キー、外部キーに関する情報が含まれます。
podbc_filter_table_names選択したデータベーススキーマに属するテーブルを、入力フィールド q の部分文字列パターンに基づいて一覧表示します。
podbc_query_databaseSQL クエリを実行し、結果を JSONL 形式で返します。
podbc_execute_querySQL クエリを実行し、結果を JSONL 形式で返します。
podbc_execute_query_mdSQL クエリを実行し、結果を Markdown テーブル形式で返します。
podbc_spasql_querySPASQL クエリを実行し、結果を返します。
podbc_sparql_querySPARQL クエリを実行し、結果を返します。
podbc_virtuoso_support_aiVirtuoso サポートアシスタント/エージェントとやり取りします。これは、LLM とやり取りするための Virtuoso 固有の機能です。
詳細な説明
  • podbc_get_schemas

    • 接続中のデータベースからすべてのスキーマ名を取得して返します。
    • 入力パラメーター:
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • スキーマ名を含む JSON 文字列配列を返します。
  • podbc_get_tables

    • 指定したスキーマ内のテーブル情報を取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマを使用します。
    • 入力パラメーター:
      • schema (string, optional):テーブルを絞り込むデータベーススキーマです。デフォルトは接続のデフォルトスキーマです。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • テーブル情報(例:TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)を含む JSON 文字列を返します。
  • podbc_filter_table_names

    • 名前に特定の部分文字列を含むテーブルの情報を絞り込んで返します。
    • 入力パラメーター:
      • q (string, required):テーブル名内で検索する部分文字列です。
      • schema (string, optional):テーブルを絞り込むデータベーススキーマです。デフォルトは接続のデフォルトスキーマです。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • 条件に一致するテーブルの情報を含む JSON 文字列を返します。
  • podbc_describe_table

    • 特定のテーブルの列に関する詳細情報を取得して返します。
    • 入力パラメーター:
      • schema (string, required):テーブルを含むデータベーススキーマ名です。
      • table (string, required):説明するテーブルの名前です。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • テーブルの列を説明する JSON 文字列を返します(例:COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
  • podbc_query_database

    • 標準 SQL クエリを実行し、結果を JSON 形式で返します。
    • 入力パラメーター:
      • query (string, required):実行する SQL クエリ文字列です。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • クエリ結果を JSON 文字列として返します。
  • podbc_query_database_md

    • 標準 SQL クエリを実行し、結果を Markdown テーブル形式で返します。
    • 入力パラメーター:
      • query (string, required):実行する SQL クエリ文字列です。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • クエリ結果を Markdown テーブル文字列として返します。
  • podbc_query_database_jsonl

    • 標準 SQL クエリを実行し、結果を JSON Lines(JSONL)形式(1 行につき 1 つの JSON オブジェクト)で返します。
    • 入力パラメーター:
      • query (string, required):実行する SQL クエリ文字列です。
      • user (string, optional):データベースのユーザー名です。デフォルトは "demo" です。
      • password (string, optional):データベースのパスワードです。デフォルトは "demo" です。
      • dsn (string, optional):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • クエリ結果を JSONL 文字列として返します。
  • podbc_spasql_query

    • SPASQL(SQL/SPARQL ハイブリッド)クエリを実行し、結果を返します。これは Virtuoso 固有の機能です。
    • 入力パラメーター:
      • query(文字列、必須):SPASQL クエリ文字列です。
      • max_rows(数値、任意):返す行数の最大値です。デフォルトは 20 です。
      • timeout(数値、任意):クエリのタイムアウト時間(ミリ秒)です。デフォルトは 30000 です。
      • user(文字列、任意):データベースのユーザー名です。デフォルトは "demo" です。
      • password(文字列、任意):データベースのパスワードです。デフォルトは "demo" です。
      • dsn(文字列、任意):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • 基盤となるストアドプロシージャ呼び出し(例:Demo.demo.execute_spasql_query)の結果を返します。
  • podbc_sparql_query

    • SPARQL クエリを実行し、結果を返します。これは Virtuoso 固有の機能です。
    • 入力パラメーター:
      • query(文字列、必須):SPARQL クエリ文字列です。
      • format(文字列、任意):希望する結果形式です。デフォルトは 'json' です。
      • timeout(数値、任意):クエリのタイムアウト時間(ミリ秒)です。デフォルトは 30000 です。
      • user(文字列、任意):データベースのユーザー名です。デフォルトは "demo" です。
      • password(文字列、任意):データベースのパスワードです。デフォルトは "demo" です。
      • dsn(文字列、任意):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • 基盤となる関数呼び出し(例:"UB".dba."sparqlQuery")の結果を返します。
  • podbc_virtuoso_support_ai

    • Virtuoso 固有の AI アシスタント関数を使用し、プロンプトと任意の API キーを渡します。これは Virtuoso 固有の機能です。
    • 入力パラメーター:
      • prompt(文字列、必須):AI 関数に渡すプロンプトテキストです。
      • api_key(文字列、任意):AI サービスの API キーです。デフォルトは "none" です。
      • user(文字列、任意):データベースのユーザー名です。デフォルトは "demo" です。
      • password(文字列、任意):データベースのパスワードです。デフォルトは "demo" です。
      • dsn(文字列、任意):ODBC データソース名です。デフォルトは "Local Virtuoso" です。
    • AI Support Assistant 関数呼び出し(例:DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)の結果を返します。

トラブルシューティング

トラブルシューティングを簡単にするには:

  1. MCP Inspector をインストールします:

    npm install -g @modelcontextprotocol/inspector
    
  2. Inspector を起動します:

    npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server
    

表示された URL にアクセスして、サーバーとのやり取りをトラブルシューティングします。

コメント

MCP は初めてですか?

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

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