C# based Model Context Procotol (MCP) Server for ADO.NET について
ADO.NET 経由でデータベースにアクセスする C# 製 MCP サーバーです。Virtuoso 固有のクエリ機能も備え、スキーマ確認や SQL 実行を行う MCP クライアント向けです。
主な機能
- 01データベースのスキーマとテーブル一覧
- 02テーブルの列とキーの確認
- 03名前によるテーブル検索
- 04SQL とストアドプロシージャの実行
- 05JSONL または Markdown 形式で結果を返却
- 06Virtuoso の SPARQL と SPASQL の実行
活用シーン
- 01接続先データベースのスキーマ確認
- 02クエリ前のテーブル定義の確認
- 03SQL 実行と結果のレポート形式への整形
- 04SPARQL または SPASQL による Virtuoso の検索
MCP 対応
データベースのスキーマ、クエリ、Virtuoso 固有の操作をツールとして MCP クライアントに公開します。Claude Desktop の設定例も記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ADO.NET 向け OpenLink MCP Server
ADO.NET 用の軽量な C# ベースの MCP(Model Context Protocol)サーバーです。このサーバーは Virtuoso と互換性があります。現在、このサーバーで正常にテストできているのは、Windows および Linux 上の .NET ランタイムのみです。
機能
- スキーマの取得:接続先のデータベースからすべてのスキーマ名を取得して一覧表示します。
- テーブルの取得:指定したスキーマ、またはすべてのスキーマのテーブル情報を取得します。
- テーブルの説明:以下を含む、テーブル構造の詳細な説明を生成します。
- 列名とデータ型
- NULL 許容属性
- 主キーと外部キー
- テーブルの検索:名前の部分一致に基づいてテーブルを絞り込み、取得します。
- ストアドプロシージャの実行:Virtuoso に接続している場合、ストアドプロシージャを実行して結果を取得します。
- クエリの実行:
- JSONL 形式の結果:構造化された応答に最適化されています。
- Markdown テーブル形式の結果:レポートや視覚化に最適です。
前提条件
- NET.8
- 次のコマンドを実行して、プロジェクトファイル(
MCP_AdoNet_Server.csproj)がご利用の環境に対応していることを確認します。dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- 次のコマンドを実行して、プロジェクトファイル(
- NET.9
- 次のコマンドを実行して、プロジェクトファイル(
MCP_AdoNet_Server.csproj)がご利用の環境に対応していることを確認します。dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj - 必要に応じて、次のコマンドを実行して
MCP_AdoNet_Server.csprojの再ビルドを試すこともできます。dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj dotnet build /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj
- 次のコマンドを実行して、プロジェクトファイル(
インストール
このリポジトリをクローンします。
git clone https://github.com/OpenLinkSoftware/mcp-adonet-server.git
cd mcp-adonet-server
環境変数
.env のデフォルト値を上書きして、お好みの設定に変更します。
ADO_URL="HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo"
API_KEY=xxx
設定
Claude Desktop ユーザーの場合:
claude_desktop_config.json に次の内容を追加します。
-
NET.8
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net8.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } } -
NET.9
{ "mcpServers": { "my_database": { "command": "dotnet", "args": ["run", "--framework", "net9.0", "--project", "/path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj"], "env": { "ADO_URL": "HOST=localhost:1111;Database=Demo;UID=demo;PWD=demo", "API_KEY": "sk-xxx" } } } }
使用方法
提供されるツール
インストールが正常に完了すると、MCP クライアントアプリケーションで次のツールを利用できます。
概要
| name | description |
|---|---|
ado_get_schemas | 接続先のデータベース管理システム(DBMS)からアクセス可能なデータベーススキーマを一覧表示します。 |
ado_get_tables | 選択したデータベーススキーマに関連付けられたテーブルを一覧表示します。 |
ado_describe_table | 指定したデータベーススキーマに関連付けられたテーブルの説明を返します。列名、データ型、NULL の処理、自動採番、主キー、外部キーに関する情報が含まれます。 |
ado_filter_table_names | 選択したデータベーススキーマに関連付けられたテーブルを、入力フィールド q の部分一致パターンに基づいて一覧表示します。 |
ado_query_database | SQL クエリを実行し、結果を JSONL 形式で返します。 |
ado_execute_query | SQL クエリを実行し、結果を JSONL 形式で返します。 |
ado_execute_query_md | SQL クエリを実行し、結果を Markdown テーブル形式で返します。 |
ado_spasql_query | SPASQL クエリを実行し、結果を返します。 |
ado_sparql_query | SPARQL クエリを実行し、結果を返します。 |
ado_virtuoso_support_ai | Virtuoso 固有の機能である Virtuoso Support Assistant/Agent を介して、LLM とやり取りします。 |
詳細
-
ado_get_schemas- 接続先のデータベースからすべてのスキーマ名を取得して返します。
- 入力パラメーター:
url(文字列、任意):ADO.NET の URL 接続文字列。
- スキーマ名を格納した JSON 文字列配列を返します。
-
ado_get_tables- 指定したスキーマ内のテーブル情報を含む一覧を取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマを使用します。
- 入力パラメーター:
schema(string、任意):テーブルを絞り込むデータベーススキーマです。デフォルトでは接続のデフォルトスキーマが使用されます。url(string、任意):ADO.NET の URL 接続文字列です。
- テーブル情報(例:
TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE)を含む JSON 文字列を返します。
-
ado_filter_table_names- 名前に特定の部分文字列を含むテーブルの情報を絞り込んで返します。
- 入力パラメーター:
q(string、必須):テーブル名から検索する部分文字列です。schema(string、任意):テーブルを絞り込むデータベーススキーマです。デフォルトでは接続のデフォルトスキーマが使用されます。url(string、任意):ADO.NET の URL 接続文字列です。
- 該当するテーブルの情報を含む JSON 文字列を返します。
-
ado_describe_table- 特定のテーブルの列に関する詳細情報を取得して返します。
- 入力パラメーター:
schema(string、必須):テーブルを含むデータベーススキーマ名です。table(string、必須):説明を取得するテーブル名です。url(string、任意):ADO.NET の URL 接続文字列です。
- テーブルの列を説明する JSON 文字列(例:
COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)を返します。
-
ado_query_database- 標準的な SQL クエリを実行し、結果を JSON 形式で返します。
- 入力パラメーター:
query(string、必須):実行する SQL クエリ文字列です。url(string、任意):ADO.NET の URL 接続文字列です。
- クエリ結果を JSON 文字列として返します。
-
ado_query_database_md- 標準的な SQL クエリを実行し、結果を Markdown テーブル形式で返します。
- 入力パラメーター:
query(string、必須):実行する SQL クエリ文字列です。url(string、任意):ADO.NET の URL 接続文字列です。
- クエリ結果を Markdown テーブル文字列として返します。
-
ado_query_database_jsonl- 標準的な SQL クエリを実行し、結果を JSON Lines(JSONL)形式(1 行につき 1 つの JSON オブジェクト)で返します。
- 入力パラメーター:
query(string、必須):実行する SQL クエリ文字列です。url(string、任意):ADO.NET の URL 接続文字列です。
- クエリ結果を JSONL 文字列として返します。
-
ado_spasql_query- SPASQL(SQL/SPARQL ハイブリッド)クエリを実行し、結果を返します。これは Virtuoso 固有の機能です。
- 入力パラメーター:
query(string、必須):SPASQL クエリ文字列です。max_rows(number、任意):返す行の最大数です。デフォルトは20です。timeout(number、任意):クエリのタイムアウト時間(ミリ秒)です。デフォルトは30000です。url(string、任意):ADO.NET の URL 接続文字列です。
- 基盤となるストアドプロシージャの呼び出し(例:
Demo.demo.execute_spasql_query)の結果を返します。
-
ado_sparql_query- SPARQL クエリを実行し、結果を返します。これは Virtuoso 固有の機能です。
- 入力パラメーター:
query(string、必須):SPARQL クエリ文字列です。format(string、任意):希望する結果形式です。デフォルトは'json'です。timeout(number、任意):クエリのタイムアウト時間(ミリ秒)です。デフォルトは30000です。url(string、任意):ADO.NET の URL 接続文字列です。
- 基盤となる関数の呼び出し(例:
"UB".dba."sparqlQuery")の結果を返します。
-
ado_virtuoso_support_ai- Virtuoso 固有の AI アシスタント機能を利用し、プロンプトと任意の API キーを渡します。これは Virtuoso 固有の機能です。
- 入力パラメーター:
prompt(string、必須):AI 機能に渡すプロンプトのテキストです。api_key(string、任意):AI サービスの API キーです。デフォルトは"none"です。url(string、任意):ADO.NET の URL 接続文字列です。
- AI Support Assistant 関数の呼び出し(例:
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI)の結果を返します。
トラブルシューティング
トラブルシューティングを簡単に行うには、次の手順に従います。
-
MCP Inspector をインストールします。
npm install -g @modelcontextprotocol/inspector -
使用している .Net のバージョンに応じて、Inspector を起動します。
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net8.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"-- または --
dotnet clean /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj npx @modelcontextprotocol/inspector dotnet run --framework net9.0 --project /path/to/mcp-adonet-server/MCP_AdoNet_Server.csproj -e ADO_URL="HOST=localhost:1111;Database=Demo;UID=username;PWD=password" -e API_KEY="sk-xxx-myapikey-xxx"
表示された URL にアクセスして、サーバーとのやり取りをトラブルシューティングします。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
