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.
Related MCP server: MySql MCP Server
Voraussetzungen
UV installieren :
pip install uvOder verwenden Sie Homebrew:
brew install uvÜberprüfungen der unixODBC-Laufzeitumgebung :
Überprüfen Sie die Installationskonfiguration (d. h. den Speicherort der wichtigsten INI-Dateien), indem Sie Folgendes ausführen:
odbcinst -jListen Sie die verfügbaren Datenquellennamen auf, indem Sie Folgendes ausführen:
odbcinst -q -sODBC-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 = YesSQLAlchemy-URL-Bindung : Verwenden Sie das Format:
virtuoso+pyodbc://user:password@VOS
Installation
Klonen Sie dieses Repository:
Umgebungsvariablen
Aktualisieren Sie Ihre .env indem Sie die Standardeinstellungen entsprechend Ihren Präferenzen überschreiben
Konfiguration
Für Claude Desktop- Benutzer: Fügen Sie Folgendes zu claude_desktop_config.json hinzu:
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.
Datenbank | URL-Format |
Virtuoses DBMS |
|
PostgreSQL |
|
MySQL |
|
SQLite |
|
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
Name | Beschreibung |
podbc_get_schemas | Listen Sie Datenbankschemata auf, auf die das verbundene Datenbankverwaltungssystem (DBMS) zugreifen kann. |
podbc_get_tables | Listen Sie Tabellen auf, die mit einem ausgewählten Datenbankschema verknüpft sind. |
podbc_describe_table | Geben 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_names | Listen Sie Tabellen auf, basierend auf einem Teilzeichenfolgenmuster aus dem Eingabefeld
, das mit einem ausgewählten Datenbankschema verknüpft ist. |
podbc_query_database | Führen Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück. |
podbc_execute_query | Führen Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück. |
podbc_execute_query_md | Führen Sie eine SQL-Abfrage aus und geben Sie die Ergebnisse im Markdown-Tabellenformat zurück. |
podbc_spasql_query | Führen Sie eine SPASQL-Abfrage aus und geben Sie Ergebnisse zurück. |
podbc_sparql_query | Führen Sie eine SPARQL-Abfrage aus und geben Sie Ergebnisse zurück. |
podbc_virtuoso_support_ai | Interagieren 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:
Installieren Sie den MCP Inspector:
npm install -g @modelcontextprotocol/inspectorStarten 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.