導入
このドキュメントでは、モデルコンテキストプロトコル(MCP)用の汎用ODBCサーバー( mcp-odbc
サーバー)のセットアップと使用方法について説明します。このサーバーは、特定のODBCコネクタ(ODBCドライバーとも呼ばれます)用に設定されたデータソース名を介して、大規模言語モデルからODBCアクセス可能なデータソースへの透過的なアクセスを提供するために開発されました。
サーバーの実装
このMCP Server for ODBCは、 node-odbc
上に構築された小さなTypeScriptレイヤーです。node.js(TypeScriptの場合はnpx
を使用)を介してnode.js
ホストシステムのローカルODBCドライバーマネージ���ーへの呼び出しをルーティングします。
動作環境のセットアップと前提条件
以下の例はVirtuoso ODBCコネクタを対象としていますが、このガイドは他のODBCコネクタでも使用できます。他のデータベース管理システム(DBMS)に関するコードの投稿や使用方法のデモの提出を強く推奨します。これらの投稿は、本プロジェクトへの組み込みに活用させていただきます。
主要なシステムコンポーネント
node.js
バージョンを確認してください21.1.0
以上でない場合は、次のコマンドで明示的にアップグレードまたはインストールしてください。- 次を使用して MCP コンポーネントをインストールします。
- 次を使用して
nvm
バージョンを設定します。
インストール
- 走る
- ディレクトリを変更する
- 走る
- 走る
unixODBC ランタイム環境チェック
- 次のコマンドを実行して、インストール構成 (つまり、主要な INI ファイルの場所) を確認します。
- 次のコマンドを実行して、使用可能なデータ ソース名 (DSN) を一覧表示します。
環境変数
適切なセキュリティ対策として、 mcp-ser
と同じディレクトリにある.env
ファイルを使用して、ODBC データ ソース名 ( ODBC_DSN
)、ユーザー ( ODBC_USER
)、パスワード ( ODBC_PWD
)、ODBC INI ( ODBCINI
)、および ODBC 経由で OpenLink AI Layer (OPAL) を使用する場合は対象の Large Language Model (LLM) API キー ( API_KEY
) のバインディングを設定する必要があります。
使用法
ツール
インストールが成功すると、次のツールが MCP クライアント アプリケーションで使用できるようになります。
概要
名前 | 説明 |
---|---|
get_schemas | 接続されたデータベース管理システム (DBMS) にアクセス可能なデータベース スキーマを一覧表示します。 |
get_tables | 選択したデータベース スキーマに関連付けられているテーブルを一覧表示します。 |
describe_table | 指定されたデータベーススキーマに関連付けられたテーブルの説明を提供します。これには、列名、データ型、NULL処理、自動インクリメント、主キー、外部キーに関する情報が含まれます。 |
filter_table_names | q 入力フィールドの部分文字列パターンに基づいて、選択したデータベース スキーマに関連付けられたテーブルを一覧表示します。 |
query_database | SQL クエリを実行し、結果を JSON Lines (JSONL) 形式で返します。 |
execute_query | SQL クエリを実行し、結果を JSON Lines (JSONL) 形式で返します。 |
execute_query_md | SQL クエリを実行し、結果を Markdown テーブル形式で返します。 |
spasql_query | SPASQL クエリを実行し、結果を返します。 |
sparql_query | 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 文字列を返します。
filter_table_names
- 名前に特定の部分文字列が含まれるテーブルに関する情報をフィルタリングして返します。
- 入力パラメータ:
q
(文字列、必須): テーブル名内で検索する部分文字列。schema
(文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- 一致するテーブルの情報を含む JSON 文字列を返します。
describe_table
- 特定のテーブルの列に関する詳細情報を取得して返します。
- 入力パラメータ:
schema
(文字列、必須): テーブルを含むデータベース スキーマ名。table
(文字列、必須): 説明するテーブルの名前。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- テーブルの列を記述する JSON 文字列を返します (例:
COLUMN_NAME
、TYPE_NAME
、COLUMN_SIZE
、IS_NULLABLE
)。
query_database
- 標準 SQL クエリを実行し、結果を JSON 形式で返します。
- 入力パラメータ:
query
(文字列、必須): 実行する SQL クエリ文字列。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- クエリ結果を JSON 文字列として返します。
query_database_md
- 標準 SQL クエリを実行し、Markdown テーブルとしてフォーマットされた結果を返します。
- 入力パラメータ:
query
(文字列、必須): 実行する SQL クエリ文字列。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- クエリ結果を Markdown テーブル文字列として返します。
query_database_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
、つまり30秒です。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- 基になるストアド プロシージャ呼び出し (例:
Demo.demo.execute_spasql_query
) からの結果を返します。
sparql_query
- SPARQLクエリを実行し、結果を返します。これはVirtuoso固有の機能です。
- 入力パラメータ:
query
(文字列、必須): SPARQL クエリ文字列。format
(文字列、オプション): 希望する結果の形式。デフォルトは'json'
です。timeout
(数値, オプション): クエリのタイムアウト時間(ミリ秒)。デフォルトは30000
、つまり30秒です。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- 基礎となる関数呼び出しの結果を返します (例:
"UB".dba."sparqlQuery"
)。
virtuoso_support_ai
- Virtuoso固有のAIアシスタント機能を利用し、プロンプトとオプションのAPIキーを渡します。これはVirtuoso固有の機能です。
- 入力パラメータ:
prompt
(文字列、必須): AI 関数のプロンプト テキスト。api_key
(文字列、オプション):AIサービスのAPIキー。デフォルトは"none"
です。user
(文字列、オプション): データベースのユーザー名。デフォルトは"demo"
です。password
(文字列、オプション): データベースのパスワード。デフォルトは"demo"
です。dsn
(文字列、オプション): ODBC データソース名。デフォルトは"Local Virtuoso"
です。
- AI サポート アシスタント関数呼び出しの結果を返します (例:
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI
)。
基本的なインストールテストとトラブルシューティング
MCP インスペクターツール
標準MCPインスペクタツールエディション
- 次のコマンドを使用して、mcp-server ディレクトリ/フォルダーからインスペクターを起動します。
- 「接続」ボタンをクリックし、「ツール」タブをクリックして開始します。
OpenLink MCP インスペクターツールエディション
これは、この MCP サーバーでの使用に関連する JSON 処理のバグ修正を含む標準エディションのフォークです。
- 走る
- 走る
- http://localhost:6274から MCP Inspectors UI の
Arguments
入力フィールドに次の値を入力します。 - 指定されたMCPサーバーとのセッションを初期化するには、
Connect
ボタンをクリックします。
Apple Silicon (ARM64) と MCP ODBC サーバの互換性に関する問題
Node x86_64とarm64の競合問題
node
の arm64 エディションではなく x86_64 エディションが使用されている可能性がありますが、ODBC ブリッジと MCP サーバーは arm64 ベースのコンポーネントです。
この問題は、次の手順を実行することで解決できます。
- 次のコマンドを実行して、x86_64 エディションの
node
をアンインストールします。 - 次のコマンドを実行して、現在のシェルが arm64 モードになっていることを確認します。
- x86_64 が返された場合は、次のコマンドを実行してアクティブ モードを変更します。
- x86_64 が返された場合は、次のコマンドを実行してアクティブ モードを変更します。
- 次のコマンドを実行して、arm64 エディションの
node
をインストールします。
ノードと ODBC ブリッジ層の非互換性
Apple Silicon マシンで Model Context Protocol (MCP) ODBC サーバーを使用しようとすると、アーキテクチャの不一致エラーが発生する場合があります。これは、Node.js ODBC ネイティブモジュール ( odbc.node
) が ARM64 アーキテクチャ用にコンパイルされているにもかかわらず、unixODBC ランタイムの x86_64 ベースエディションがロードされているためです。
一般的なエラーメッセージ:
この問題は、次の手順を実行することで解決できます。
- Node.js が ARM64 モードで実行されていることを確認します。
- ARM64 用の unixODBC をインストールします。
- ARM64 用の Node.js ODBC モジュールを再構築します。
- モジュールが ARM64 になっていることを確認します。
要点
- unixODBCとNode.js ODBCモジュールはどちらもARM64互換である必要があります。
- 環境変数(
export npm_config_arch=arm64
)を使用する方が、npm configコマンドよりも信頼性が高い - 常に
file
コマンドまたはnode -p "process.arch"
でアーキテクチャを確認してください。 - Apple SiliconでHomebrewを使用する場合、コマンドの前に
arch -arm64
を付けてARM64バイナリの使用を強制することができます。
MCP アプリケーションの使用
クロードデスクトップ構成
この構成ファイルのパスは、 ~{username}/Library/Application Support/Claude/claude_desktop_config.json
です。
クロードのデスクトップ使用状況
- アプリケーションを起動します。
- 設定 | 開発者ユーザー インターフェースから (上記の) 構成を適用します。
- データ ソース名 (DSN) への ODBC 接続が機能していることを確認します。
- クエリの実行を要求するプロンプトを表示します。例:
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 に戻り、次のプロンプトの処理を要求する新しいタスクを開始します。
カーソルの設定
設定ギアを使用して、 mcp servers
登録および構成するための MCP メニュー項目を含む構成メニューを開きます。
カーソルの使用
- チャット インターフェイスを開くには、
Command + I
またはControl + I
キーの組み合わせを使用します。 - UI の左下にあるドロップダウンから
Agent
を選択します。デフォルトはAsk
です。 - パターン
@odbc {rest-of-prompt}
を使用して、mcp-server for odbc
の使用を限定してプロンプトを入力します。 - 「承認」をクリックしてプロンプトを実行します。
関連している
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
ODBC コネクタ (ドライバー) を介してアクセス可能な任意のデータベース管理システム (DBMS) に汎用の Open Database Connectivity (ODBC) を提供します。
Related MCP Servers
- -securityAlicense-qualityEnables execution of SQL queries and management of Microsoft SQL Server database connections through the Model Context Protocol.Last updated -10TypeScriptMIT License
- -securityAlicense-qualityAn MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.Last updated -1PythonMIT License
- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
- -security-license-qualityEnables LLM tools like Claude Desktop to query databases via ODBC connections, allowing access, analysis, and insight generation from database data while maintaining security through read-only safeguards.Last updated -PythonMIT License
Appeared in Searches
- Information about Java programming language or related topics
- Connecting to PostgreSQL database, retrieving table schema, and executing SQL queries
- Information or resources about SQL Server
- Running MySQL Queries Through a MySQL Socket
- A server for connecting AWS infrastructure to a real-time AI-powered dashboard