MCP-Server-ODBC über PyODBC
Ein leichter MCP-Server (Model Context Protocol) für ODBC, erstellt mit FastAPI und pyodbc . Dieser Server ist kompatibel mit Virtuoso DBMS und anderen DBMS-Backends mit ODBC-Treiber.

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
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 = Yes
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
Mitgelieferte Werkzeuge
Nach erfolgreicher Installation stehen den MCP-Clientanwendungen die folgenden Tools zur Verfügung.
Ü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-pyodbc-server run mcp-pyodbc-server
Greifen Sie auf die bereitgestellte URL zu, um Probleme mit Serverinteraktionen zu beheben.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Ein leichtgewichtiger MCP-Server, der Datenbankzugriff und -abfragen über ODBC-Verbindungen ermöglicht, mit spezieller Unterstützung für Virtuoso DBMS-Funktionen wie SPARQL und KI-Unterstützung durch natürliche Sprache.
Related MCP Servers
- Asecurity-licenseAqualityA high-performance MCP server utilizing libSQL for persistent memory and vector search capabilities, enabling efficient entity management and semantic knowledge storage.Last updated -625374MIT License
- -security-license-qualityThe Multi DB MCP Server is a high-performance implementation of the Database Model Context Protocol designed to revolutionize how AI agents interact with databases. Currently supporting MySQL and PostgreSQL databases.Last updated -295MIT License
- -security-license-qualityA FastMCP server that provides natural language interaction with MS SQL databases, enabling users to query data, list tables, describe structures, and execute database operations through a conversational AI interface.Last updated -
- -security-license-qualityMCP-Server from your Database optimized for LLMs and AI-Agents. Supports PostgreSQL, MySQL, ClickHouse, Snowflake, MSSQL, BigQuery, Oracle Database, SQLite, ElasticSearch, DuckDBLast updated -484Apache 2.0