mcp-odbc

Official

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コネクタでも使用できます。他のデータベース管理システムに関するコードの投稿や使用方法のデモの提出を強く推奨します。これらの投稿は、本プロジェクトへの組み込みに活用させていただきます。

主要なシステムコンポーネント

  1. node.js のバージョンを確認します。21.1.0 でない場合は、次のコマンドを使用して明示的にアップグレードまたはインストールします: nvm install v21.1.0
  2. 次のコマンドを使用して MCP コンポーネントをインストールします: npm install @modelcontextprotocol/sdk zod tsx odbc dotenv
  3. nvm alias default 21.1.0を使用してnvmのバージョンを設定します。

インストール

  1. git clone https://github.com/OpenLinkSoftware/mcp-odbc-server.gitを実行します。
  2. ディレクトリを変更cd mcp-odbc-server
  3. npm init -yを実行します。
  4. package.jsonファイルにエントリ"type":"module"を追加します。
  5. npm install @modelcontextprotocol/sdk zod tsx odbc dotenv実行します。

unixODBC ランタイム環境チェック

  1. odbcinst -jを実行してインストール構成(つまり、主要な INI ファイルの場所)を確認します。
  2. 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) のバインディングを設定する必要があります。

API_KEY=sk-xxx ODBC_DSN=Local Virtuoso ODBC_USER=dba ODBC_PASSWORD=dba ODBCINI=/Library/ODBC/odbc.ini

使用法

ツール

インストールが成功すると、次のツールが MCP クライアント アプリケーションで使用できるようになります。

概要

名前説明
get_schemas接続されたデータベース管理システム (DBMS) にアクセス可能なデータベース スキーマを一覧表示します。
get_tables選択したデータベース スキーマに関連付けられているテーブルを一覧表示します。
テーブルの説明指定されたデータベーススキーマに関連付けられたテーブルの説明を提供します。これには、列名、データ型、NULL値の扱い、自動増分、主キー、外部キーに関する情報が含まれます。
フィルターテーブル名選択したデータベース スキーマに関連付けられた、 q入力フィールドのサブ文字列パターンに基づいてテーブルを一覧表示します。
クエリデータベースSQL クエリを実行し、結果を JSONL 形式で返します。
クエリ実行SQL クエリを実行し、結果を JSONL 形式で返します。
クエリ実行mdSQL クエリを実行し、結果を Markdown テーブル形式で返します。
spasql_querySPASQL クエリを実行し、結果を返します。
スパークエリSPARQL クエリを実行し、結果を返します。
virtuoso_support_aiVirtuoso サポート アシスタント/エージェントと対話する - 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 )。

基本的なインストールテストとトラブルシューティング

  1. 次のコマンドを使用して、mcp-server ディレクトリ/フォルダーからインスペクターを起動します。
    ODBCINI=/Library/ODBC/odbc.ini npx -y @modelcontextprotocol/inspector npx tsx ./src/main.ts
  2. 「接続」ボタンをクリックし、「ツール」タブをクリックして開始します。

MCP アプリケーションの使用

クロードデスクトップ構成

この構成ファイルのパスは、 ~{username}/Library/Application Support/Claude/claude_desktop_config.jsonです。

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "~/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

クロードのデスクトップ使用状況

  1. アプリケーションを起動する
  2. 設定 | 開発者ユーザーインターフェースから(上記の)構成を適用します
  3. データソース名 (DSN) への ODBC 接続が機能していることを確認します。
  4. クエリの実行を要求するプロンプトを表示します。例: 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

{ "mcpServers": { "ODBC": { "command": "/path/to/.nvm/versions/node/v21.1.0/bin/node", "args": [ "/path/to/mcp-odbc-server/node_modules/.bin/tsx", "/path/to/mcp-odbc-server/src/main.ts" ], "env": { "ODBCINI": "/Library/ODBC/odbc.ini", "NODE_VERSION": "v21.1.0", "PATH": "/path/to/.nvm/versions/node/v21.1.0/bin:${PATH}" }, "disabled": false, "autoApprove": [] } } }

Cline (Visual Studio 拡張機能) の使用法

  1. Shift+Command+P でコマンドパレットを開きます
  2. 入力: Cline
  3. 選択: Cline View。VSCode サイドバーに Cline UI が開きます。
  4. 4つの四角形のアイコンを使用して、MCPサーバーのインストールと構成のためのUIにアクセスします。
  5. Cline Config を適用する(上記)
  6. 拡張機能のメイン UI に戻り、次のプロンプトの処理を要求する新しいタスクを開始します。「次のクエリを実行します: SELECT TOP 5 * from Demo..Customers」

カーソルの設定

設定ギアを使用して、 mcp servers登録および構成するための MCP メニュー項目を含む構成メニューを開きます。

カーソルの使用

  1. Command or Control + Iキーの組み合わせを使用してチャットインターフェースを開きます
  2. UIの左下にあるドロップダウンからAgentを選択します。デフォルトはAskです。
  3. パターン@odbc {rest-of-prompt}を使用して、 mcp-server for odbcの使用を限定してプロンプトを入力します。
  4. 「承認」をクリックしてプロンプトを実行します。

関連している

-
security - not tested
F
license - not found
-
quality - not tested

ODBC コネクタ (ドライバー) を介してアクセス可能な任意のデータベース管理システム (DBMS) に汎用の Open Database Connectivity (ODBC) を提供します。

  1. Server Implementation
    1. Operating Environment Setup & Prerequisites
      1. Key System Components
      2. Installation
      3. unixODBC Runtime Environment Checks
      4. Environment Variables
    2. Usage
      1. Tools
      2. Basic Installation Testing & Troubleshooting
      3. MCP Application Usage
    3. Related
      ID: 4ypqmj472o