mcp-sqlalchemy

MIT License
9
  • Apple
  • Linux

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.


MCP Server ODBC über SQLAlchemy

Ein leichter MCP-Server (Model Context Protocol) für ODBC, erstellt mit FastAPI , pyodbc und SQLAlchemy . Dieser Server ist kompatibel mit Virtuoso DBMS und anderen DBMS-Backends, die einen SQLAlchemy-Provider implementieren.


Merkmale

  • Schemas abrufen : Ruft alle Schemanamen aus der verbundenen Datenbank ab und listet sie auf.
  • Tabellen abrufen : Rufen Sie Tabelleninformationen für bestimmte oder alle Schemata ab.
  • Tabelle beschreiben : Erstellen Sie eine detaillierte Beschreibung der Tabellenstrukturen, einschließlich:
    • Spaltennamen und Datentypen
    • Nullable-Attribute
    • Primär- und Fremdschlüssel
  • Tabellen durchsuchen : Filtern und Abrufen von Tabellen basierend auf Namensteilzeichenfolgen.
  • Gespeicherte Prozeduren ausführen : Führen Sie im Fall von Virtuoso gespeicherte Prozeduren aus und rufen Sie Ergebnisse ab.
  • Abfragen ausführen :
    • JSONL-Ergebnisformat: Optimiert für strukturierte Antworten.
    • Markdown-Tabellenformat: Ideal für Berichte und Visualisierung.

Voraussetzungen

  1. Installieren Sie uv :
    pip install uv
    Oder verwenden Sie Homebrew:
    brew install uv
  2. Überprüfungen der unixODBC-Laufzeitumgebung :
  3. Überprüfen Sie die Installationskonfiguration (d. h. den Speicherort der wichtigsten INI-Dateien), indem Sie Folgendes ausführen: odbcinst -j
  4. Listen Sie die verfügbaren Datenquellennamen auf, indem Sie Folgendes ausführen: odbcinst -q -s
  5. ODBC-DSN-Setup : Konfigurieren Sie Ihren ODBC-Datenquellennamen ( ~/.odbc.ini ) für die Zieldatenbank. Beispiel für Virtuoso DBMS:
    [VOS] Description = OpenLink Virtuoso Driver = /path/to/virtodbcu_r.so Database = Demo Address = localhost:1111 WideAsUTF16 = Yes
  6. SQLAlchemy-URL-Bindung : Verwenden Sie das Format:
    virtuoso+pyodbc://user:password@VOS

Installation

Klonen Sie dieses Repository:

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

Umgebungsvariablen

Aktualisieren Sie Ihre .env indem Sie die Standardeinstellungen entsprechend Ihren Präferenzen überschreiben

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

Konfiguration

Für Claude Desktop- Benutzer: Fügen Sie Folgendes zu claude_desktop_config.json hinzu:

{ "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" } } } }

Verwendung

Verbindungs-URLs für Datenbankverwaltungssysteme (DBMS)

Hier sind die Pyodbc-URL-Beispiele für die Verbindung mit DBMS-Systemen, die mit diesem MCP-Server getestet wurden.

DatenbankURL-Format
Virtuoses DBMSvirtuoso+pyodbc://user:password@ODBC_DSN
PostgreSQLpostgresql://user:password@localhost/dbname
MySQLmysql+pymysql://user:password@localhost/dbname
SQLitesqlite:///path/to/database.db
Sobald die Verbindung hergestellt ist, können Sie über Claude mit Ihren WhatsApp-Kontakten interagieren und die KI-Funktionen von Claude in Ihren WhatsApp-Konversationen nutzen.

Mitgelieferte Werkzeuge

Überblick

NameBeschreibung
podbc_get_schemasListen Sie Datenbankschemata auf, auf die das verbundene Datenbankverwaltungssystem (DBMS) zugreifen kann.
podbc_get_tablesListen Sie Tabellen auf, die mit einem ausgewählten Datenbankschema verknüpft sind.
podbc_describe_tableGeben Sie die Beschreibung einer Tabelle an, die mit einem bestimmten Datenbankschema verknüpft ist. Dies umfasst Informationen zu Spaltennamen, Datentypen, Nullverarbeitung, Autoinkrementierung, Primärschlüssel und Fremdschlüsseln.
podbc_filter_table_namesListen Sie Tabellen auf, basierend auf einem Teilzeichenfolgenmuster aus dem Eingabefeld q , das mit einem ausgewählten Datenbankschema verknüpft ist.
podbc_query_databaseFühren Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück.
podbc_execute_queryFühren Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück.
podbc_execute_query_mdFühren Sie eine SQL-Abfrage aus und geben Sie die Ergebnisse im Markdown-Tabellenformat zurück.
podbc_spasql_queryFühren Sie eine SPASQL-Abfrage aus und geben Sie Ergebnisse zurück.
podbc_sparql_queryFühren Sie eine SPARQL-Abfrage aus und geben Sie Ergebnisse zurück.
podbc_virtuoso_support_aiInteragieren Sie mit dem Virtuoso Support Assistant/Agent – einer Virtuoso-spezifischen Funktion für die Interaktion mit LLMs

Detaillierte Beschreibung

  • podbc_get_schemas
    • Rufen Sie eine Liste aller Schemanamen aus der verbundenen Datenbank ab und geben Sie sie zurück.
    • Eingabeparameter:
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt ein JSON-String-Array mit Schemanamen zurück.
  • podbc_get_tables
    • Ruft eine Liste mit Informationen zu Tabellen in einem angegebenen Schema ab und gibt sie zurück. Wenn kein Schema angegeben ist, wird das Standardschema der Verbindung verwendet.
    • Eingabeparameter:
      • schema (Zeichenfolge, optional): Datenbankschema zum Filtern von Tabellen. Standardmäßig wird der Verbindungsstandard verwendet.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt eine JSON-Zeichenfolge mit Tabelleninformationen zurück (z. B. TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE).
  • podbc_filter_table_names
    • Filtert und gibt Informationen zu Tabellen zurück, deren Namen eine bestimmte Teilzeichenfolge enthalten.
    • Eingabeparameter:
      • q (Zeichenfolge, erforderlich): Die Teilzeichenfolge, nach der in Tabellennamen gesucht werden soll.
      • schema (Zeichenfolge, optional): Datenbankschema zum Filtern von Tabellen. Standardmäßig wird der Verbindungsstandard verwendet.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt eine JSON-Zeichenfolge zurück, die Informationen zu übereinstimmenden Tabellen enthält.
  • podbc_describe_table
    • Rufen Sie detaillierte Informationen zu den Spalten einer bestimmten Tabelle ab und geben Sie sie zurück.
    • Eingabeparameter:
      • schema (Zeichenfolge, erforderlich): Der Datenbankschemaname, der die Tabelle enthält.
      • table (Zeichenfolge, erforderlich): Der Name der zu beschreibenden Tabelle.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt eine JSON-Zeichenfolge zurück, die die Spalten der Tabelle beschreibt (z. B. COLUMN_NAME, TYPE_NAME, COLUMN_SIZE, IS_NULLABLE).
  • podbc_query_database
    • Führen Sie eine Standard-SQL-Abfrage aus und geben Sie die Ergebnisse im JSON-Format zurück.
    • Eingabeparameter:
      • query (Zeichenfolge, erforderlich): Die auszuführende SQL-Abfragezeichenfolge.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt Abfrageergebnisse als JSON-Zeichenfolge zurück.
  • podbc_query_database_md
    • Führen Sie eine Standard-SQL-Abfrage aus und geben Sie die Ergebnisse als Markdown-Tabelle formatiert zurück.
    • Eingabeparameter:
      • query (Zeichenfolge, erforderlich): Die auszuführende SQL-Abfragezeichenfolge.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt Abfrageergebnisse als Markdown-Tabellenzeichenfolge zurück.
  • podbc_query_database_jsonl
    • Führen Sie eine Standard-SQL-Abfrage aus und geben Sie die Ergebnisse im JSON-Zeilenformat (JSONL) zurück (ein JSON-Objekt pro Zeile).
    • Eingabeparameter:
      • query (Zeichenfolge, erforderlich): Die auszuführende SQL-Abfragezeichenfolge.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt Abfrageergebnisse als JSONL-Zeichenfolge zurück.
  • podbc_spasql_query
    • Führen Sie eine SPASQL-Abfrage (SQL/SPARQL-Hybrid) aus, um Ergebnisse zurückzugeben. Dies ist eine Virtuoso-spezifische Funktion.
    • Eingabeparameter:
      • query (Zeichenfolge, erforderlich): Die SPASQL-Abfragezeichenfolge.
      • max_rows (Zahl, optional): Maximale Anzahl der zurückzugebenden Zeilen. Der Standardwert ist 20.
      • timeout (Zahl, optional): Abfrage-Timeout in Millisekunden. Standardmäßig 30000.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt das Ergebnis des zugrunde liegenden gespeicherten Prozeduraufrufs zurück (z. B. Demo.demo.execute_spasql_query ).
  • podbc_sparql_query
    • Führen Sie eine SPARQL-Abfrage aus und geben Sie Ergebnisse zurück. Dies ist eine Virtuoso-spezifische Funktion.
    • Eingabeparameter:
      • query (Zeichenfolge, erforderlich): Die SPARQL-Abfragezeichenfolge.
      • format (Zeichenfolge, optional): Gewünschtes Ergebnisformat. Standardmäßig „json“.
      • timeout (Zahl, optional): Abfrage-Timeout in Millisekunden. Standardmäßig 30000.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt das Ergebnis des zugrunde liegenden Funktionsaufrufs zurück (z. B. "UB".dba."sparqlQuery" ).
  • podbc_virtuoso_support_ai
    • Nutzt eine Virtuoso-spezifische KI-Assistentenfunktion und übergibt eine Eingabeaufforderung und einen optionalen API-Schlüssel. Dies ist eine Virtuoso-spezifische Funktion.
    • Eingabeparameter:
      • prompt (Zeichenfolge, erforderlich): Der Eingabeaufforderungstext für die KI-Funktion.
      • api_key (Zeichenfolge, optional): API-Schlüssel für den KI-Dienst. Standardmäßig „keine“.
      • user (Zeichenfolge, optional): Datenbankbenutzername. Standardmäßig „demo“.
      • password (Zeichenfolge, optional): Datenbankkennwort. Standardmäßig „demo“.
      • dsn (Zeichenfolge, optional): Name der ODBC-Datenquelle. Standardmäßig „Local Virtuoso“.
    • Gibt das Ergebnis des Funktionsaufrufs des AI Support Assistant zurück (z. B. DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI ).

Fehlerbehebung

Zur einfacheren Fehlerbehebung:

  1. Installieren Sie den MCP Inspector:
    npm install -g @modelcontextprotocol/inspector
  2. Starten Sie den Inspektor:
    npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-sqlalchemy-server run mcp-sqlalchemy-server

Greifen Sie auf die bereitgestellte URL zu, um Probleme mit Serverinteraktionen zu beheben.

You must be authenticated.

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

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Bietet SQLAlchemy-Konnektivität (über pyodbc) zu jedem Datenbankverwaltungssystem (DBMS), das über SQLAlchemy zugänglich ist.

  1. Merkmale
    1. Voraussetzungen
      1. Installation
        1. Umgebungsvariablen
          1. Konfiguration
            1. Verwendung
              1. Verbindungs-URLs für Datenbankverwaltungssysteme (DBMS)
              2. Mitgelieferte Werkzeuge
              3. Fehlerbehebung

            Related MCP Servers

            • -
              security
              A
              license
              -
              quality
              An MCP server that enables MySQL database integration with Claude. You can execute SQL queries and manage database connections.
              Last updated -
              1
              Python
              MIT License
              • Apple
            • -
              security
              A
              license
              -
              quality
              A server that helps people access and query data in databases using the Query Runner with integration of the Model Context Protocol (MCP) Python SDK. Support databases including PostgreSQL Redshift MySQL Microsoft SQL Server Google APIs Amazon Web Services (via boto3) CockroachDB SQLite
              Last updated -
              26
              Python
              GPL 3.0
              • Linux
              • Apple
            • -
              security
              A
              license
              -
              quality
              Provides generic Open Database Connectivity (ODBC) to any Database Management System (DBMS) that's accessible via an ODBC Connector (Driver).
              Last updated -
              1
              TypeScript
              MIT License
              • Apple
            • -
              security
              -
              license
              -
              quality
              A connector that gives Claude direct access to MySQL databases through the Model Context Protocol, enabling natural language querying, schema exploration, and database management.
              Last updated -
              Python
              MIT License

            View all related MCP servers

            ID: d29eq2qygt