{"id":30180410,"url":"https://github.com/yt3trees/sqlschemabridgemcp","last_synced_at":"2026-05-04T13:32:42.418Z","repository":{"id":309375479,"uuid":"1035940799","full_name":"yt3trees/SqlSchemaBridgeMCP","owner":"yt3trees","description":"MCP server that helps AI agents build accurate SQL queries from natural language questions. It manages database schema information (tables, columns, and relations) in local CSV files and provides it to AI agents.","archived":false,"fork":false,"pushed_at":"2025-08-11T13:57:38.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T15:23:50.784Z","etag":null,"topics":["ai","database","development","dotnet","llm","mcp","mcp-server","sql","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yt3trees.png","metadata":{"files":{"readme":"README.ja.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-11T10:20:56.000Z","updated_at":"2025-08-11T13:57:41.000Z","dependencies_parsed_at":"2025-08-11T15:34:24.789Z","dependency_job_id":null,"html_url":"https://github.com/yt3trees/SqlSchemaBridgeMCP","commit_stats":null,"previous_names":["yt3trees/sqlschemabridgemcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yt3trees/SqlSchemaBridgeMCP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt3trees%2FSqlSchemaBridgeMCP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt3trees%2FSqlSchemaBridgeMCP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt3trees%2FSqlSchemaBridgeMCP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt3trees%2FSqlSchemaBridgeMCP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yt3trees","download_url":"https://codeload.github.com/yt3trees/SqlSchemaBridgeMCP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yt3trees%2FSqlSchemaBridgeMCP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270024478,"owners_count":24514028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","database","development","dotnet","llm","mcp","mcp-server","sql","vibe-coding"],"created_at":"2025-08-12T07:39:09.254Z","updated_at":"2026-05-04T13:32:42.412Z","avatar_url":"https://github.com/yt3trees.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SQL Schema Bridge MCPサーバー\n\n![dotnet](https://img.shields.io/badge/-.NET%208.0-blueviolet?logo=dotnet)\n[![nuget](https://img.shields.io/nuget/v/SqlSchemaBridgeMCP)](https://www.nuget.org/packages/SqlSchemaBridgeMCP)\n\n## 概要\n\n```mermaid\ngraph TB\n    User[\"👤 ユーザー\"]\n    Agent[\"🤖 AIエージェント / MCPクライアント\"]\n    Server[\"🚀 SqlSchemaBridgeMCPサーバー\"]\n    Database[(\"💾 実際のデータベース\u003cbr/\u003e(SQL Server, MySQL, PostgreSQL, SQLite)\")]\n    CSVFiles[\"📄 CSVファイル\u003cbr/\u003e(tables.csv, columns.csv, relations.csv)\"]\n\n    subgraph \"利用可能なMCPツール\"\n        QueryTools[\"🔍 スキーマクエリ\"]\n        EditTools[\"✏️ スキーマ編集\"]\n        ConnectionTools[\"🔗 データベース接続\"]\n    end\n\n    %% メインフロー\n    User --\u003e|\"自然言語での質問\"| Agent\n    Agent \u003c--\u003e|\"MCPプロトコル\"| Server\n    Server --\u003e QueryTools\n    Server --\u003e EditTools\n    Server --\u003e ConnectionTools\n    QueryTools \u003c--\u003e|\"読み込み\"| CSVFiles\n    EditTools \u003c--\u003e|\"書き込み\"| CSVFiles\n    ConnectionTools \u003c--\u003e|\"スキーマ自動取得\"| Database\n    ConnectionTools --\u003e|\"CSVファイル生成\"| CSVFiles\n    Agent --\u003e|\"スキーマに基づいてSQL生成\"| User\n```\n\n`SqlSchemaBridgeMCP`は、自然言語とSQLの間のギャップを埋めるために設計されたModel-Context-Protocol (MCP) サーバーです。AIエージェントにデータベーススキーマに関する必要なメタデータ(テーブル定義、列の詳細、リレーションシップなど)を提供し、エージェントがユーザーの質問に基づいてSQLクエリを正確に構築できるようにします。\n\nこのサーバーは2つの方法でスキーマ情報を管理できます：\n- **手動管理：** ローカルのCSVファイルからデータベーススキーマ情報を読み込み\n- **自動インポート：** 実際のデータベース（SQL Server、MySQL、PostgreSQL、SQLite）に直接接続してスキーマを自動取得\n\n## 動作の仕組み\n\nユーザーがデータに関する質問(例：「各顧客の最新の注文日を表示して」)をすると、AIエージェントはこのMCPサーバーと対話してデータベースの構造を理解します。\n\n```mermaid\nsequenceDiagram\n    participant User as 👤 ユーザー\n    participant Agent as 🤖 AIエージェント\n    participant MCPServer as 🚀 MCPサーバー\n\n    User-\u003e\u003eAgent: \"顧客ごとの最新注文日を教えて\"\n\n    Agent-\u003e\u003eMCPServer: スキーマ情報を問い合わせる (テーブル、列、リレーションなど)\n    note right of Agent: sql_schema_find_table, sql_schema_find_column等のツールを使用\n\n    MCPServer--\u003e\u003eAgent: スキーマのメタデータを返す\n\n    Agent-\u003e\u003eUser: SQLクエリを生成して返す\n```\n\n1.  エージェントは`sql_schema_find_table`や`sql_schema_find_column`のようなツールを呼び出して、論理名(「顧客」、「注文日」)をデータベース内の物理的な対応物(`Customers`、`OrderDate`)にマッピングします。\n2.  エージェントは`sql_schema_find_relations`を使用して、テーブルがどのように接続されているか(例：`Customers.CustomerID` -\u003e `Orders.CustomerID`)を発見します。\n3.  取得したメタデータを使用して、エージェントはユーザーの質問に答えるための正確なSQLクエリを組み立てます。\n\n## 特徴\n\n-   **自然言語からSQLへ：** AIエージェントが自然言語の質問を正確なSQLクエリに翻訳するのを助けます。\n-   **データベース直接接続：** SQL Server、MySQL、PostgreSQL、SQLiteから直接スキーマ情報を自動取得できます。\n-   **ローカルでのメタデータ管理：** データベーススキーマ情報は、ローカルマシンに保存された簡単なCSVファイルを通じて管理されます。\n-   **プロファイルサポート：** プロファイルを使用して、異なるデータベーススキーマ定義を簡単に切り替えることができます。これは、複数のプロジェクトや環境(開発、テスト、本番など)を管理するのに理想的です。\n\n## 利用者向け: はじめに\n\nMCPサーバーを設定し、実行する手順は以下の通りです。\n\n### 1. インストール\n\nMCPサーバーのインストールには2つの方法があります。\n\n#### オプション1：GitHubリリースからダウンロード\n\n1.  このプロジェクトの[GitHub Releases page](https://github.com/yt3trees/SqlSchemaBridgeMCP/releases)へアクセスします。\n2.  お使いのオペレーティングシステムに対応したリリースパッケージ(例: `SqlSchemaBridgeMCP-win-x64.zip`)をダウンロードします。\n3.  ダウンロードしたzipファイルを任意の場所に展開します。\n\n\u003e [!NOTE]  \n\u003e この方法は、.NETランタイムが含まれており、追加のインストールが不要なため最も簡単です。新しいバージョンがリリースされた場合、最新の機能を利用するには手動で再度ダウンロードする必要がある点にご注意ください。\n\n#### オプション2：dnxを使用してNuGetからインストール\n\nこのオプションは、.NET SDKがインストール済みで、`dnx`コマンドラインツールの利用を希望する方向けです。\n\n1.  **前提条件**: [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet)以降をインストールしてください。\n\n\u003e [!TIP]\n\u003e `dnx`コマンドを初めて実行すると、`SqlSchemaBridgeMCP`パッケージがNuGetから自動的に取得され、常に最新のバージョンが使用されます。\n\n### 2. MCPクライアントの設定\n\nMCPクライアント(Gemini CLI等)からこのMCPサーバーを利用するには、クライアントがサーバーを起動できるように設定が必要です。クライアントの設定ファイル(例: `~/.gemini/settings.json`)に、以下の`mcpServers`設定を追加または更新します。\n\n#### オプション1の場合(GitHubリリース)\n\n```json\n{\n  \"mcpServers\": {\n    \"SqlSchemaBridgeMCP\": {\n      \"type\": \"stdio\",\n      \"command\": \"C:\\\\path\\\\to\\\\your\\\\extracted\\\\folder\\\\SqlSchemaBridgeMCP.exe\",\n      \"args\": []\n    }\n  }\n}\n```\n-   **`command`**: 展開した`SqlSchemaBridgeMCP.exe`への絶対パスに置き換えてください。\n-   macOSやLinuxの場合は、`command`を `./SqlSchemaBridgeMCP` のような実行可能ファイルへのパスに設定します。\n\n#### オプション2の場合(dnx)\n\n```json\n{\n  \"mcpServers\": {\n    \"SqlSchemaBridgeMCP\": {\n      \"type\": \"stdio\",\n      \"command\": \"dnx\",\n      \"args\": [\n        \"SqlSchemaBridgeMCP\",\n        \"--yes\"\n      ]\n    }\n  }\n}\n```\n- `dnx`コマンドがサーバーのダウンロードと実行を管理します。\n\n\n\n### 3. メタデータの設定\n\nサーバーは、プロファイルディレクトリにあるCSVファイルからスキーマ情報を読み込みます。プロファイルの検索場所は以下の2箇所です。\n1.  環境変数 `SQLSCHEMABRIDGEMCP_PROFILES_PATH` で指定されたパス（設定されている場合）\n2.  ユーザーのホームディレクトリにあるデフォルトの `.SqlSchemaBridgeMCP` フォルダ (例: Windowsでは `C:\\Users\\\u003cUserName\u003e`、macOS/Linuxでは `~/`)\n\n**ディレクトリ構造:**\n\nプロファイルフォルダ（例：`ProjectA`、`Test`）は、上記のいずれの場所にも配置できます。サーバーはすべての検索パスからプロファイルを収集します。\n\n同じ名前のプロファイルが複数の場所に存在する場合、環境変数で指定されたパス内のプロファイルが優先されます。\n\n現在アクティブなプロファイルを保存する `.current_profile` ファイルは、常にデフォルトの `~/.SqlSchemaBridgeMCP` ディレクトリ内で管理されます。\n\n各プロファイルルートディレクトリの中に、使用したい各プロファイル用のサブディレクトリを作成します。\n\n```\n\\.SqlSchemaBridgeMCP\n|-- \\ProjectA\n|   |-- tables.csv\n|   |-- columns.csv\n|   |-- relations.csv\n|-- \\Test\n|   |-- tables.csv\n|   |-- columns.csv\n|   |-- relations.csv\n```\n\n#### サンプルプロファイルの作成: `ProjectA`\n\n以下のファイルを `C:\\Users\\\u003cUserName\u003e\\.SqlSchemaBridgeMCP\\ProjectA` ディレクトリに作成します。\n\n**`tables.csv`**\n```csv\ndatabase_name,schema_name,logical_name,physical_name,primary_key,description\nSalesDB,dbo,Customers,M_CUSTOMERS,CUSTOMER_ID,\"Table to store basic customer information.\"\nSalesDB,dbo,Order Headers,T_ORDER_HEADERS,ORDER_ID,\"Stores order information from customers.\"\nSalesDB,dbo,Products,M_PRODUCTS,PRODUCT_ID,\"Master data for product information.\"\nSalesDB,dbo,Order Details,T_ORDER_DETAILS,ORDER_DETAIL_ID,\"Stores order detail information.\"\n```\n\n**`columns.csv`**\n```csv\ntable_physical_name,logical_name,physical_name,data_type,description\nM_CUSTOMERS,CustomerID,CUSTOMER_ID,int,\"Primary key for the Customers table.\"\nM_CUSTOMERS,CustomerName,CUSTOMER_NAME,\"nvarchar(100)\",\"Name of the customer.\"\nM_CUSTOMERS,Address,ADDRESS,\"nvarchar(255)\",\nT_ORDER_HEADERS,OrderID,ORDER_ID,int,\"Primary key for the Order Headers table.\"\nT_ORDER_HEADERS,CustomerID,CUSTOMER_ID,int,\"Foreign key to the Customers table.\"\nT_ORDER_HEADERS,OrderDate,ORDER_DATE,datetime,\nT_ORDER_HEADERS,TotalAmount,TOTAL_AMOUNT,decimal,\nM_PRODUCTS,ProductID,PRODUCT_ID,int,\nM_PRODUCTS,ProductName,PRODUCT_NAME,\"nvarchar(100)\",\nM_PRODUCTS,UnitPrice,UNIT_PRICE,decimal,\nT_ORDER_DETAILS,OrderDetailID,ORDER_DETAIL_ID,int,\nT_ORDER_DETAILS,OrderID,ORDER_ID,int,\nT_ORDER_DETAILS,ProductID,PRODUCT_ID,int,\nT_ORDER_DETAILS,Quantity,QUANTITY,int,\n```\n\n**`relations.csv`**\n```csv\nsource_table,source_column,target_table,target_column\nM_CUSTOMERS,CUSTOMER_ID,T_ORDER_HEADERS,CUSTOMER_ID\nT_ORDER_HEADERS,ORDER_ID,T_ORDER_DETAILS,ORDER_ID\nM_PRODUCTS,PRODUCT_ID,T_ORDER_DETAILS,PRODUCT_ID\n```\n\n**設定のポイント:**\n\n-   **プロファイル設定不要**: サーバーは初回起動時に`default`プロファイルを使用し、`sql_schema_switch_profile`ツールで動的に切り替えできます。\n\n### 4. プロファイルの管理\n\n#### 初回起動\n- サーバーは自動的に`default`プロファイルを使用します\n- プロファイルが存在しない場合でも、利用可能なプロファイルを`sql_schema_list_available_profiles`ツールで確認できます\n\n#### プロファイルの切り替え\nAIまたはユーザーは以下のツールを使用してプロファイルを管理できます：\n\n- **`sql_schema_switch_profile(profile_name)`**: 指定されたプロファイルに切り替え\n- **`sql_schema_get_current_profile()`**: 現在使用中のプロファイル情報を取得\n- **`sql_schema_list_available_profiles()`**: 利用可能なプロファイル一覧を表示\n\n#### 永続化\n- プロファイル切り替えは設定ファイル(`.current_profile`)に保存されます\n- 次回起動時も同じプロファイルが自動的に使用されます\n\n---\n\n\n## 開発者向け: ローカル開発\n\n### ローカルでの開発セットアップ\n\nソースコードからこのMCPサーバーをテストするには、IDEを設定して`dotnet run`で直接プロジェクトを実行することができます。これは開発目的で推奨されます。\n\n```json\n{\n  \"mcpServers\": {\n    \"SqlSchemaBridgeMCP\": {\n      \"type\": \"stdio\",\n      \"command\": \"dotnet\",\n      \"args\": [\n        \"run\",\n        \"--project\",\n        \"C:\\\\work\\\\SqlSchemaBridgeMCP\"\n      ]\n    }\n  }\n}\n```\n\n**開発時のプロファイル管理:**\n- 開発時もプロファイル切り替えは`sql_schema_switch_profile`ツールを使用\n- 設定ファイルによる永続化により、開発セッション間でプロファイルが保持されます\n\n### リリースビルドの作成(自己完結型)\n\n配布用に、サーバーを自己完結型アプリケーションとして公開することができます。これにより、.NETランタイムがインストールされていないマシンでもアプリケーションを実行できるように、.NETランタイムがアプリケーションにバンドルされます。\n\n`dotnet publish`コマンドを実行し、ターゲットランタイム識別子(RID)を指定します。\n\n```sh\n# Windows x64向け\ndotnet publish -c Release -r win-x64 --self-contained true\n\n# Linux x64向け\ndotnet publish -c Release -r linux-x64 --self-contained true\n\n# macOS x64向け\ndotnet publish -c Release -r osx-x64 --self-contained true\n```\n\n出力は`bin/Release/net8.0/\u003cRID\u003e/publish/`ディレクトリに配置されます。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyt3trees%2Fsqlschemabridgemcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyt3trees%2Fsqlschemabridgemcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyt3trees%2Fsqlschemabridgemcp/lists"}