local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Uses .env files for securely storing and accessing configuration variables like API keys and database credentials.
Offers the ability to return SQL query results formatted as Markdown tables through the execute_query_md tool.
Provides routing of database calls through Node.js to the host system's ODBC Driver Manager, allowing for connection to various database systems.
導入
このドキュメントでは、モデルコンテキストプロトコル(MCP)用の汎用ODBCサーバー(mcp-odbcサーバー)のセットアップと使用方法について説明します。このサーバーは、特定のODBCコネクタ(またはドライバー)用に設定されたデータソース名を介して、大規模言語モデルからODBCアクセス可能なデータソースへの透過的なアクセスを提供するために開発されました。
サーバーの実装
このMCP Server for ODBCはnode-odbc
上に構築された小さなTypeScriptレイヤーです。node.js(TypeScriptの場合は「npx」を使用)を介して、ホストシステムのローカルODBCドライバーマネージャーへの呼び出しをルーティングします。
オペレーティング環境のセットアップと前提条件
以下の例はVirtuoso ODBCコネクタを対象としていますが、このガイドは他のODBCコネクタでも使用できます。他のデータベース管理システムに関するコードの投稿や使用方法のデモの提出を強く推奨します。これらの投稿は、本プロジェクトへの組み込みに活用させていただきます。
主要なシステムコンポーネント
- node.js のバージョンを確認します。21.1.0 でない場合は、次のコマンドを使用して明示的にアップグレードまたはインストールします:
nvm install v21.1.0
- 次のコマンドを使用して MCP コンポーネントをインストールします:
npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
nvm alias default 21.1.0
を使用してnvm
のバージョンを設定します。
インストール
git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.git
を実行します。- ディレクトリを変更
cd mcp-odbc-server
npm init -y
を実行します。package.json
ファイルにエントリ"type":"module"
を追加します。npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
実行します。
unixODBC ランタイム環境チェック
odbcinst -j
を実行してインストール構成(つまり、主要な INI ファイルの場所)を確認します。odbcinst -q -s
を実行して、利用可能なデータソース名を一覧表示します。
環境変数
適切なセキュリティ対策として、 mcp-ser
と同じディレクトリにある.env
ファイルを使用して、対象の Large Language Model API キー (ODBC 経由で OpenLink AI Layer (OPAL) を使用する場合)、ODBC データ ソース名 (ODBC_DSN)、ユーザー (ODBC_USER)、パスワード (ODBC_PWD)、および ODBC INI (ODBCINI) のバインディングを設定する必要があります。
使用法
ツール
インストールが成功すると、次のツールが MCP クライアント アプリケーションで使用できるようになります。
概要
名前 | 説明 |
---|---|
get_schemas | 接続されたデータベース管理システム (DBMS) にアクセス可能なデータベース スキーマを一覧表示します。 |
get_tables | 選択したデータベース スキーマに関連付けられているテーブルを一覧表示します。 |
テーブルの説明 | 指定されたデータベーススキーマに関連付けられたテーブルの説明を提供します。これには、列名、データ型、NULL値の扱い、自動増分、主キー、外部キーに関する情報が含まれます。 |
フィルターテーブル名 | 選択したデータベース スキーマに関連付けられた、 q 入力フィールドのサブ文字列パターンに基づいてテーブルを一覧表示します。 |
クエリデータベース | SQL クエリを実行し、結果を JSONL 形式で返します。 |
クエリ実行 | SQL クエリを実行し、結果を JSONL 形式で返します。 |
クエリ実行md | SQL クエリを実行し、結果を Markdown テーブル形式で返します。 |
spasql_query | SPASQL クエリを実行し、結果を返します。 |
スパークエリ | SPARQL クエリを実行し、結果を返します。 |
virtuoso_support_ai | Virtuoso サポート アシスタント/エージェントと対話する - LLM と対話するための Virtuoso 固有の機能 |
詳細な説明
- get_schemas
- 接続されたデータベースからすべてのスキーマ名のリストを取得して返します。
- 入力パラメータ:
user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- スキーマ名の JSON 文字列配列を返します。
- get_tables
- 指定されたスキーマ内のテーブルに関する情報を含むリストを取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマが使用されます。
- 入力パラメータ:
schema
(文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- テーブル情報 (例: TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE) を含む JSON 文字列を返します。
- フィルターテーブル名
- 名前に特定の部分文字列が含まれるテーブルに関する情報をフィルタリングして返します。
- 入力パラメータ:
q
(文字列、必須): テーブル名内で検索する部分文字列。schema
(文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- 一致するテーブルの情報を含む JSON 文字列を返します。
- テーブルの説明
- 特定のテーブルの列に関する詳細情報を取得して返します。
- 入力パラメータ:
schema
(文字列、必須): テーブルを含むデータベース スキーマ名。table
(文字列、必須): 説明するテーブルの名前。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- テーブルの列を記述する JSON 文字列を返します (例: COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
- クエリデータベース
- 標準 SQL クエリを実行し、結果を JSON 形式で返します。
- 入力パラメータ:
query
(文字列、必須): 実行する SQL クエリ文字列。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- クエリ結果を JSON 文字列として返します。
- クエリデータベースmd
- 標準 SQL クエリを実行し、Markdown テーブルとしてフォーマットされた結果を返します。
- 入力パラメータ:
query
(文字列、必須): 実行する SQL クエリ文字列。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- クエリ結果を Markdown テーブル文字列として返します。
- クエリデータベースJSONL
- 標準 SQL クエリを実行し、結果を JSON Lines (JSONL) 形式 (1 行につき 1 つの JSON オブジェクト) で返します。
- 入力パラメータ:
query
(文字列、必須): 実行する SQL クエリ文字列。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- クエリ結果を JSONL 文字列として返します。
- 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
) からの結果を返します。
- スパークエリ
- SPARQLクエリを実行し、結果を返します。これはVirtuoso固有の機能です。
- 入力パラメータ:
query
(文字列、必須): SPARQL クエリ文字列。format
(文字列、オプション): 希望する結果形式。デフォルトは 'json' です。timeout
(数値、オプション):クエリのタイムアウト(ミリ秒)。デフォルトは30000です。user
(文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。password
(文字列、オプション): データベースのパスワード。デフォルトは「demo」です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
- 基礎となる関数呼び出しの結果を返します (例:
"UB".dba."sparqlQuery"
)。
- 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-server ディレクトリ/フォルダーからインスペクターを起動します。Copy
- 「接続」ボタンをクリックし、「ツール」タブをクリックして開始します。
MCP アプリケーションの使用
クロードデスクトップ構成
この構成ファイルのパスは、 ~{username}/Library/Application Support/Claude/claude_desktop_config.json
です。
クロードのデスクトップ使用状況
- アプリケーションを起動する
- 設定 | 開発者ユーザーインターフェースから(上記の)構成を適用します
- データソース名 (DSN) への ODBC 接続が機能していることを確認します。
- クエリの実行を要求するプロンプトを表示します。例:
Execute the following query: SELECT TOP * from Demo..Customers
Cline (Visual Studio 拡張機能) の構成
この構成ファイルのパスは次のとおりです: ~{username}/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Cline (Visual Studio 拡張機能) の使用法
- Shift+Command+P でコマンドパレットを開きます
- 入力: Cline
- 選択: Cline View。VSCode サイドバーに Cline UI が開きます。
- 4つの四角形のアイコンを使用して、MCPサーバーのインストールと構成のためのUIにアクセスします。
- Cline Config を適用する(上記)
- 拡張機能のメイン UI に戻り、次のプロンプトの処理を要求する新しいタスクを開始します。「次のクエリを実行します: SELECT TOP 5 * from Demo..Customers」
カーソルの設定
設定ギアを使用して、 mcp servers
登録および構成するための MCP メニュー項目を含む構成メニューを開きます。
カーソルの使用
Command or Control + I
キーの組み合わせを使用してチャットインターフェースを開きます- UIの左下にあるドロップダウンから
Agent
を選択します。デフォルトはAsk
です。 - パターン
@odbc {rest-of-prompt}
を使用して、mcp-server for odbc
の使用を限定してプロンプトを入力します。 - 「承認」をクリックしてプロンプトを実行します。
関連している
This server cannot be installed
ODBC コネクタ (ドライバー) を介してアクセス可能な任意のデータベース管理システム (DBMS) に汎用の Open Database Connectivity (ODBC) を提供します。