Java-basierter Model Context Protocol (MCP)-Server für JDBC
Ein leichter MCP-Server (Model Context Protocol) für JDBC, erstellt mit Quakrus . Dieser Server ist kompatibel mit Virtuoso DBMS und anderen DBMS-Backends mit JDBC-Treibern.

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 : Eine Virtuoso-spezifische Funktion! Führen Sie 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: MCP-openproject
Voraussetzungen
Der MCP-Server erfordert Java 21 oder höher.
Installation
Klonen Sie dieses Repository:
git clone https://github.com/OpenLinkSoftware/mcp-jdbc-server.git
cd mcp-jdbc-serverUmgebungsvariablen
Aktualisieren Sie Ihre .env , indem Sie diese Standardeinstellungen überschreiben, damit sie Ihren Präferenzen entsprechen:
jdbc.url=jdbc:virtuoso://localhost:1111
jdbc.user=dba
jdbc.password=dba
jdbc.api_key=xxxKonfiguration
Für Claude Desktop- Benutzer: Fügen Sie Folgendes zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"my_database": {
"command": "java",
"args": ["-jar", "/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar"],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "username",
"jdbc.password": "password",
"jdbc.api_key": "sk-xxx"
}
}
}
}Für Claude Desktop- Benutzer, die andere JDBC-Treiber oder eine Kombination von Treibern verwenden: Fügen Sie Folgendes zu claude_desktop_config.json hinzu:
"jdbc": {
"command": "java",
"args": [
"-cp",
"/path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar:/path/to/jdbc_driver1.jar:/path/to/jdbc_driverN.jar",
"io.quarkus.runner.GeneratedMain"
],
"env": {
"jdbc.url": "jdbc:virtuoso://localhost:1111",
"jdbc.user": "dba",
"jdbc.password": "dba"
}
}Verwenden
Mitgelieferte Werkzeuge
Nach erfolgreicher Installation stehen den MCP-Clientanwendungen die folgenden Tools zur Verfügung.
Überblick
Name | Beschreibung |
| Listen Sie Datenbankschemata auf, auf die das verbundene Datenbankverwaltungssystem (DBMS) zugreifen kann. |
| Listen Sie Tabellen auf, die mit einem ausgewählten Datenbankschema verknüpft sind. |
| Geben Sie die Beschreibung einer Tabelle an, die einem bestimmten Datenbankschema zugeordnet ist. Dies umfasst Informationen zu Spaltennamen, Datentypen, Nullverarbeitung, Autoinkrementierung, Primärschlüssel und Fremdschlüsseln. |
| Listen Sie Tabellen auf, basierend auf einem Teilzeichenfolgenmuster aus dem Eingabefeld |
| Führen Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück. |
| Führen Sie eine SQL-Abfrage aus und geben Sie Ergebnisse im JSONL-Format zurück. |
| Führen Sie eine SQL-Abfrage aus und geben Sie die Ergebnisse im Markdown-Tabellenformat zurück. |
| Eine Virtuoso-spezifische Funktion! Führen Sie eine SPASQL-Abfrage aus und geben Sie Ergebnisse zurück. |
| Eine Virtuoso-spezifische Funktion! Führen Sie eine SPARQL-Abfrage aus und geben Sie Ergebnisse zurück. |
| Eine Virtuoso-spezifische Funktion! Interagieren Sie mit LLMs über den Virtuoso-Supportassistenten/-Agenten. |
Detaillierte Beschreibung
jdbc_get_schemasRufen Sie eine Liste aller Schemanamen aus der verbundenen Datenbank ab und geben Sie sie zurück.
Eingabeparameter:
user(Zeichenfolge, optional): Datenbankbenutzername. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt ein JSON-String-Array mit Schemanamen zurück.
jdbc_get_tablesRuft 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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt eine JSON-Zeichenfolge mit Tabelleninformationen zurück (z. B.
TABLE_CAT,TABLE_SCHEM,TABLE_NAME,TABLE_TYPE).
jdbc_filter_table_namesFiltert 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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt eine JSON-Zeichenfolge zurück, die Informationen zu übereinstimmenden Tabellen enthält.
jdbc_describe_tableRufen 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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt eine JSON-Zeichenfolge zurück, die die Spalten der Tabelle beschreibt (z. B.
COLUMN_NAME,TYPE_NAME,COLUMN_SIZE,IS_NULLABLE).
jdbc_query_databaseFü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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt Abfrageergebnisse als JSON-Zeichenfolge zurück.
jdbc_query_database_mdFü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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt Abfrageergebnisse als Markdown-Tabellenzeichenfolge zurück.
jdbc_query_database_jsonlFü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. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt Abfrageergebnisse als JSONL-Zeichenfolge zurück.
jdbc_spasql_queryEine Virtuoso-spezifische Funktion!
Führen Sie eine SPASQL-Abfrage (SQL/SPARQL-Hybrid) aus, um Ergebnisse zurückzugeben.
Eingabeparameter:
query(Zeichenfolge, erforderlich): Die SPASQL-Abfragezeichenfolge.max_rows(Zahl, optional): Maximale Anzahl der zurückzugebenden Zeilen. Der Standardwert ist20.timeout(Zahl, optional): Abfrage-Timeout in Millisekunden. Der Standardwert ist30000(d. h. 30 Sekunden).user(Zeichenfolge, optional): Datenbankbenutzername. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt das Ergebnis des zugrunde liegenden gespeicherten Prozeduraufrufs zurück (z. B.
Demo.demo.execute_spasql_query).
jdbc_sparql_queryEine Virtuoso-spezifische Funktion!
Führen Sie eine SPARQL-Abfrage aus und geben Sie Ergebnisse zurück.
Eingabeparameter:
query(Zeichenfolge, erforderlich): Die SPARQL-Abfragezeichenfolge.format(Zeichenfolge, optional): Gewünschtes Ergebnisformat. Standardmäßig'json'.timeout(Zahl, optional): Abfrage-Timeout in Millisekunden. Der Standardwert ist30000(d. h. 30 Sekunden).user(Zeichenfolge, optional): Datenbankbenutzername. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt das Ergebnis des zugrunde liegenden Funktionsaufrufs zurück (z. B.
"UB".dba."sparqlQuery").
jdbc_virtuoso_support_aiEine Virtuoso-spezifische Funktion!
Verwendet eine Virtuoso-spezifische KI-Assistentenfunktion und übergibt eine Eingabeaufforderung und einen optionalen API-Schlüssel.
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"none".user(Zeichenfolge, optional): Datenbankbenutzername. Der Standardwert ist"demo".password(Zeichenfolge, optional): Datenbankkennwort. Der Standardwert ist"demo".url(Zeichenfolge, optional): JDBC-URL-Verbindungszeichenfolge.
Gibt das Ergebnis des Funktionsaufrufs des AI Support Assistant zurück (z. B.
DEMO.DBA.OAI_VIRTUOSO_SUPPORT_AI).
Grundlegende Verwendung und Fehlerbehebung
MCP Inspector stellt eine Verbindung zum ODBC-Treiber von Virtuoso her
Für die grundlegende Verwendung des MCP-Clients und zur Fehlerbehebung verwenden Sie den MCP Inspector wie folgt:
Installieren Sie den MCP Inspector:
npm install -g @modelcontextprotocol/inspectorStarten Sie den Inspektor:
npx @modelcontextprotocol/inspector java -jar /path/to/mcp-jdbc-server/MCPServer-1.0.0-runner.jar
Greifen Sie auf die vom Inspektor zurückgegebene URL zu, um Probleme mit MCP-Serverinteraktionen zu beheben.
MCP Inspector: Verbindung zu zusätzlichen Treibern herstellen
Für die grundlegende Verwendung des MCP-Clients und zur Fehlerbehebung verwenden Sie den MCP Inspector wie folgt:
Installieren Sie die JDBC-Treiber und stellen Sie sicher, dass ihre JAR-Dateien über
$CLASSPATHbei der Java Virtual Machine (JVM) des Host-Betriebssystems registriert sind. Beispiel:export CLASSPATH=$CLASSPATH:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jarStarten Sie den Inspector mit den folgenden Befehlszeilenargumenten:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/driver1.jar:/path/to/driver2.jar:/path/to/driverN.jar io.quarkus.runner.GeneratedMain
Anwendungsbeispiel basierend auf Oracle- und Informix-Treibern
Vorausgesetzt werden die folgenden JDBC-Treiberinformationen:
URL-Vorlage für Oracle JDBC-Treiber
jdbc:oracle:thin:@<hostname>:[port]:<SERVICEID>URL-Vorlage für Informix JDBC-Treiber
jdbc:informix-sqli://<hostname>:<port>/<database></database>:<INFORMIXSERVER>=<SERVICEID>
Installieren Sie die JDBC-Treiber von Oracle (
ojdbc17.jar) und/oder Informix (jdbc-15.0.0.1.1.jar) und stellen Sie sicher, dass deren JAR-Dateien über$CLASSPATHbei der Java Virtual Machine (JVM) des Host-Betriebssystems registriert sind. Beispiel:export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar export CLASSPATH=$CLASSPATH:/path/to/Java/Extensions/ojdbc17.jarStarten Sie den Inspector mit den folgenden Befehlszeilenargumenten:
npx @modelcontextprotocol/inspector java -cp MCPServer-1.0.0-runner.jar:/path/to/Java/Extensions/ojdbc17.jar:/path/to/Java/Extensions/jdbc-15.0.0.1.1.jar io.quarkus.runner.GeneratedMainGreifen Sie auf die vom Inspektor zurückgegebene URL zu und verwenden Sie dann die Operation
jdbc_execute_query, um die Zieldatenbank abzufragen, indem Sie tatsächliche Werte für die folgenden Eingabefeldvorlagen angeben:JDBC-URL
Benutzer
Passwort
Abfrage
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.