PyODBC 経由の MCP サーバー ODBC
FastAPIとpyodbcを使用して構築されたODBC用の軽量MCP(Model Context Protocol)サーバー。このサーバーは、Virtuoso DBMSおよびODBCドライバーを備えたその他のDBMSバックエンドと互換性があります。

特徴
スキーマの取得: 接続されたデータベースからすべてのスキーマ名を取得して一覧表示します。
テーブルの取得: 特定のスキーマまたはすべてのスキーマのテーブル情報を取得します。
テーブルの説明: 次の内容を含むテーブル構造の詳細な説明を生成します:
列名とデータ型
ヌル値可能な属性
主キーと外部キー
テーブルの検索: 名前の部分文字列に基づいてテーブルをフィルタリングおよび取得します。
ストアド プロシージャの実行: Virtuoso の場合は、ストアド プロシージャを実行して結果を取得します。
クエリの実行:
JSONL 結果形式: 構造化された応答に最適化されています。
Markdown テーブル形式: レポートと視覚化に最適です。
Related MCP server: Multi Database MCP Server
前提条件
uvをインストールします:
pip install uvまたは Homebrew を使用します:
brew install uvunixODBC ランタイム環境チェック:
odbcinst -jを実行してインストール構成(つまり、主要な INI ファイルの場所)を確認します。odbcinst -q -sを実行して、利用可能なデータソース名を一覧表示します。ODBC DSN設定:対象データベースのODBCデータソース名(
~/.odbc.ini)を設定します。Virtuoso DBMSの例:[VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
インストール
このリポジトリをクローンします:
環境変数
.envを更新して、デフォルトを上書きし、好みに合わせてください。
構成
Claude Desktopユーザーの場合: claude_desktop_config.jsonに以下を追加します。
使用法
提供されるツール
インストールが成功すると、次のツールが MCP クライアント アプリケーションで使用できるようになります。
概要
名前 | 説明 |
podbc_get_schemas | 接続されたデータベース管理システム (DBMS) にアクセス可能なデータベース スキーマを一覧表示します。 |
podbc_get_tables | 選択したデータベース スキーマに関連付けられているテーブルを一覧表示します。 |
podbc_describe_table | 指定されたデータベーススキーマに関連付けられたテーブルの説明を提供します。これには、列名、データ型、NULL値の扱い、自動増分、主キー、外部キーに関する情報が含まれます。 |
podbc_filter_table_names | 選択したデータベース スキーマに関連付けられた、
入力フィールドのサブ文字列パターンに基づいてテーブルを一覧表示します。 |
podbc_query_database | SQL クエリを実行し、結果を JSONL 形式で返します。 |
podbc_execute_query | SQL クエリを実行し、結果を JSONL 形式で返します。 |
podbc_execute_query_md | SQL クエリを実行し、結果を Markdown テーブル形式で返します。 |
podbc_spasql_クエリ | SPASQL クエリを実行し、結果を返します。 |
podbc_sparql_クエリ | SPARQL クエリを実行し、結果を返します。 |
podbc_virtuoso_support_ai | Virtuoso サポート アシスタント/エージェントと対話する - LLM と対話するための Virtuoso 固有の機能 |
詳細な説明
podbc_get_schemas
接続されたデータベースからすべてのスキーマ名のリストを取得して返します。
入力パラメータ:
user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
スキーマ名の JSON 文字列配列を返します。
podbc_get_tables
指定されたスキーマ内のテーブルに関する情報を含むリストを取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマが使用されます。
入力パラメータ:
schema(文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
テーブル情報 (例: TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE) を含む JSON 文字列を返します。
podbc_filter_table_names
名前に特定の部分文字列が含まれるテーブルに関する情報をフィルタリングして返します。
入力パラメータ:
q(文字列、必須): テーブル名内で検索する部分文字列。schema(文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
一致するテーブルの情報を含む JSON 文字列を返します。
podbc_describe_table
特定のテーブルの列に関する詳細情報を取得して返します。
入力パラメータ:
schema(文字列、必須): テーブルを含むデータベース スキーマ名。table(文字列、必須): 説明するテーブルの名前。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
テーブルの列を記述する JSON 文字列を返します (例: COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
podbc_query_database
標準 SQL クエリを実行し、結果を JSON 形式で返します。
入力パラメータ:
query(文字列、必須): 実行する SQL クエリ文字列。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
クエリ結果を JSON 文字列として返します。
podbc_query_database_md
標準 SQL クエリを実行し、Markdown テーブルとしてフォーマットされた結果を返します。
入力パラメータ:
query(文字列、必須): 実行する SQL クエリ文字列。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
クエリ結果を Markdown テーブル文字列として返します。
podbc_query_database_jsonl
標準 SQL クエリを実行し、結果を JSON Lines (JSONL) 形式 (1 行につき 1 つの JSON オブジェクト) で返します。
入力パラメータ:
query(文字列、必須): 実行する SQL クエリ文字列。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
クエリ結果を JSONL 文字列として返します。
podbc_spasql_クエリ
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_クエリ
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キー。デフォルトは「なし」です。user(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
AI サポート アシスタント関数呼び出しの結果を返します (例:
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)。
トラブルシューティング
トラブルシューティングを簡単にするには:
MCP Inspector をインストールします。
npm install -g @modelcontextprotocol/inspectorインスペクターを起動します。
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-pyodbc-server run mcp-pyodbc-server
提供された URL にアクセスして、サーバー相互作用のトラブルシューティングを行います。