mcp-sqlalchemy

Official
Apache 2.0
7
  • Apple
  • Linux

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Built with FastAPI to provide a lightweight MCP server for ODBC database connections.

  • Provides capability to format query results as Markdown tables for better readability and visualization.

  • Connects to MySQL databases through PyMySQL, supporting schema exploration, table information retrieval, and query execution.


SQLAlchemy 経由の MCP サーバー ODBC

FastAPIpyodbcSQLAlchemyを用いて構築された、ODBC 用の軽量 MCP (Model Context Protocol) サーバーです。このサーバーは、Virtuoso DBMS および SQLAlchemy プロバイダーを実装するその他の DBMS バックエンドと互換性があります。


特徴

  • スキーマの取得: 接続されたデータベースからすべてのスキーマ名を取得して一覧表示します。
  • テーブルの取得: 特定のスキーマまたはすべてのスキーマのテーブル情報を取得します。
  • テーブルの説明: 次の内容を含むテーブル構造の詳細な説明を生成します:
    • 列名とデータ型
    • ヌル値可能な属性
    • 主キーと外部キー
  • テーブルの検索: 名前の部分文字列に基づいてテーブルをフィルタリングおよび取得します。
  • ストアド プロシージャの実行: Virtuoso の場合は、ストアド プロシージャを実行して結果を取得します。
  • クエリの実行:
    • JSONL 結果形式: 構造化された応答に最適化されています。
    • Markdown テーブル形式: レポートと視覚化に最適です。

前提条件

  1. uvをインストールします:
    pip install uv
    または Homebrew を使用します:
    brew install uv
  2. unixODBC ランタイム環境チェック:
  3. odbcinst -jを実行してインストール構成(つまり、主要な INI ファイルの場所)を確認します。
  4. odbcinst -q -sを実行して、利用可能なデータソース名を一覧表示します。
  5. ODBC DSN設定:対象データベースのODBCデータソース名( ~/.odbc.ini )を設定します。Virtuoso DBMSの例:
    [VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
  6. SQLAlchemy URL バインディング: 次の形式を使用します:
    virtuoso+pyodbc://user:password@VOS

インストール

このリポジトリをクローンします:

git clone https://github.com/OpenLinkSoftware/mcp-sqlalchemy-server.git cd mcp-sqlalchemy-server

環境変数

.envを更新して、デフォルトを上書きし、好みに合わせてください。

ODBC_DSN=VOS ODBC_USER=dba ODBC_PASSWORD=dba API_KEY=xxx

構成

Claude Desktopユーザーの場合: claude_desktop_config.jsonに以下を追加します。

{ "mcpServers": { "my_database": { "command": "uv", "args": ["--directory", "/path/to/mcp-sqlalchemy-server", "run", "mcp-sqlalchemy-server"], "env": { "ODBC_DSN": "dsn_name", "ODBC_USER": "username", "ODBC_PASSWORD": "password", "API_KEY": "sk-xxx" } } } }

使用法

データベース管理システム (DBMS) 接続 URL

以下は、この mcp-server を使用してテストされた DBMS システムに接続するための pyodbc URL の例です。

データベースURL形式
Virtuoso DBMSvirtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQLpostgresql://user:password@localhost/dbname
MySQLmysql+pymysql://user:password@localhost/dbname
SQLitesqlite:///path/to/database.db
接続すると、Claude を介して WhatsApp の連絡先とやり取りできるようになり、WhatsApp の会話で Claude の AI 機能を活用できるようになります。

提供されるツール

概要

名前説明
podbc_get_schemas接続されたデータベース管理システム (DBMS) にアクセス可能なデータベース スキーマを一覧表示します。
podbc_get_tables選択したデータベース スキーマに関連付けられているテーブルを一覧表示します。
podbc_describe_table指定されたデータベーススキーマに関連付けられたテーブルの説明を提供します。これには、列名、データ型、NULL値の扱い、自動インクリメント、主キー、外部キーに関する情報が含まれます。
podbc_filter_table_names選択したデータベース スキーマに関連付けられた、 q入力フィールドのサブ文字列パターンに基づいてテーブルを一覧表示します。
podbc_query_databaseSQL クエリを実行し、結果を JSONL 形式で返します。
podbc_execute_querySQL クエリを実行し、結果を JSONL 形式で返します。
podbc_execute_query_mdSQL クエリを実行し、結果を Markdown テーブル形式で返します。
podbc_spasql_クエリSPASQL クエリを実行し、結果を返します。
podbc_sparql_クエリSPARQL クエリを実行し、結果を返します。
podbc_virtuoso_support_aiVirtuoso サポート アシスタント/エージェントと対話する - LLM と対話するための Virtuoso 固有の機能

詳細な説明

  • podbc_get_schemas
    • 接続されたデータベースからすべてのスキーマ名のリストを取得して返します。
    • 入力パラメータ:
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • スキーマ名の JSON 文字列配列を返します。
  • podbc_get_tables
    • 指定されたスキーマ内のテーブルに関する情報を含むリストを取得して返します。スキーマが指定されていない場合は、接続のデフォルトスキーマが使用されます。
    • 入力パラメータ:
      • schema (文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • テーブル情報 (例: TABLE_CAT、TABLE_SCHEM、TABLE_NAME、TABLE_TYPE) を含む JSON 文字列を返します。
  • podbc_filter_table_names
    • 名前に特定の部分文字列が含まれるテーブルに関する情報をフィルタリングして返します。
    • 入力パラメータ:
      • q (文字列、必須): テーブル名内で検索する部分文字列。
      • schema (文字列, オプション): テーブルをフィルタリングするためのデータベーススキーマ。デフォルトは接続のデフォルトです。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • 一致するテーブルの情報を含む JSON 文字列を返します。
  • podbc_describe_table
    • 特定のテーブルの列に関する詳細情報を取得して返します。
    • 入力パラメータ:
      • schema (文字列、必須): テーブルを含むデータベース スキーマ名。
      • table (文字列、必須): 説明するテーブルの名前。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • テーブルの列を記述する JSON 文字列を返します (例: COLUMN_NAME、TYPE_NAME、COLUMN_SIZE、IS_NULLABLE)。
  • podbc_query_database
    • 標準 SQL クエリを実行し、結果を JSON 形式で返します。
    • 入力パラメータ:
      • query (文字列、必須): 実行する SQL クエリ文字列。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • クエリ結果を JSON 文字列として返します。
  • podbc_query_database_md
    • 標準 SQL クエリを実行し、Markdown テーブルとしてフォーマットされた結果を返します。
    • 入力パラメータ:
      • query (文字列、必須): 実行する SQL クエリ文字列。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • クエリ結果を Markdown テーブル文字列として返します。
  • podbc_query_database_jsonl
    • 標準 SQL クエリを実行し、結果を JSON Lines (JSONL) 形式 (1 行につき 1 つの JSON オブジェクト) で返します。
    • 入力パラメータ:
      • query (文字列、必須): 実行する SQL クエリ文字列。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • クエリ結果を JSONL 文字列として返します。
  • podbc_spasql_クエリ
    • SPASQL(SQL/SPARQLハイブリッド)クエリを実行し、結果を返します。これはVirtuoso固有の機能です。
    • 入力パラメータ:
      • query (文字列、必須): SPASQL クエリ文字列。
      • max_rows (数値、オプション): 返される行の最大数。デフォルトは 20 です。
      • timeout (数値、オプション):クエリのタイムアウト(ミリ秒)。デフォルトは30000です。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • 基になるストアド プロシージャ呼び出し (例: Demo.demo.execute_spasql_query ) からの結果を返します。
  • podbc_sparql_クエリ
    • SPARQLクエリを実行し、結果を返します。これはVirtuoso固有の機能です。
    • 入力パラメータ:
      • query (文字列、必須): SPARQL クエリ文字列。
      • format (文字列、オプション): 希望する結果形式。デフォルトは 'json' です。
      • timeout (数値、オプション):クエリのタイムアウト(ミリ秒)。デフォルトは30000です。
      • user (文字列、オプション): データベースのユーザー名。デフォルトは「demo」です。
      • password (文字列、オプション): データベースのパスワード。デフォルトは「demo」です。
      • dsn (文字列、オプション): ODBC データソース名。デフォルトは「Local Virtuoso」です。
    • 基礎となる関数呼び出しの結果を返します (例: "UB".dba."sparqlQuery" )。
  • podbc_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 Inspector をインストールします。
    npm install -g @modelcontextprotocol/inspector
  2. インスペクターを起動します。
    npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server

提供された URL にアクセスして、サーバー相互作用のトラブルシューティングを行います。

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

SQLAlchemy 経由でアクセス可能な任意のデータベース管理システム (DBMS) への SQLAlchemy (pyodbc 経由) 接続を提供します。

  1. Features
    1. Prerequisites
      1. Installation
        1. Environment Variables
          1. Configuration
            1. Usage
              1. Database Management System (DBMS) Connection URLs
              2. Tools Provided
              3. Troubleshooting
            ID: d29eq2qygt