Skip to main content
Glama
VAIBHAV7500

sqlpad-mcp

by VAIBHAV7500

SQLPad MCP Server

npm version License: MIT node

Ein MCP-Server für SQLPad. Richten Sie einen KI-Agenten mit der Basis-URL und einem Service-Token auf eine SQLPad-Instanz aus, und der Agent kann Verbindungen entdecken, Schemata untersuchen, SQL ausführen und gespeicherte Abfragen verwalten.

Anforderungen

  • Node.js 20 oder höher.

  • Eine erreichbare SQLPad-Instanz.

  • Der SQLPad-Server muss SQLPAD_SERVICE_TOKEN_SECRET konfiguriert haben. Ohne diese Konfiguration gibt jede Bearer-authentifizierte Anfrage 401 Unauthorized zurück.

  • Ein Service-Token, der in der SQLPad-Admin-GUI generiert wurde.

Related MCP server: SQLite Database MCP Server

Schnellstart

Kein Installationsschritt erforderlich – führen Sie es direkt über npm aus:

SQLPAD_SERVICE_TOKEN=... npx sqlpad-mcp --base-url https://sqlpad.example.com

Oder installieren Sie es global:

npm install -g sqlpad-mcp

Der Server spricht MCP über stdio und wird daher normalerweise von einem MCP-Client gestartet und nicht von Hand. Die direkte Ausführung ist dennoch nützlich, um Anmeldeinformationen zu überprüfen: Bei Erfolg protokolliert er die erkannte SQLPad-Version auf stderr.

Konfiguration

Env-Variable

CLI-Flag

Standard

Bedeutung

SQLPAD_BASE_URL

--base-url

(erforderlich)

Basis-URL der SQLPad-Instanz; ein Subpfad-Mount wird unterstützt.

SQLPAD_SERVICE_TOKEN

--token

(erforderlich)

Service-Token, gesendet als Authorization: Bearer.

SQLPAD_ALLOW_WRITES

--allow-writes

false

Registriert die Schreibwerkzeuge für gespeicherte Abfragen.

SQLPAD_ALLOW_ADMIN

--allow-admin

false

Registriert die Nur-Admin-Werkzeuge.

SQLPAD_MAX_ROWS

--max-rows

500

Obergrenze für Zeilen, die pro Anweisung zurückgegeben werden.

SQLPAD_TIMEOUT_MS

--timeout-ms

60000

Wie lange ein Batch abgefragt wird, bevor eine fortsetzbare batchId zurückgegeben wird.

Ein CLI-Flag hat Vorrang vor der entsprechenden Umgebungsvariable. Das Batch-Abfrageintervall (250 ms) ist intern und nicht konfigurierbar.

Claude Code Konfiguration

Fügen Sie den Server zu Ihrer Claude Code mcp.json hinzu:

{
  "mcpServers": {
    "sqlpad": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "sqlpad-mcp",
        "--base-url",
        "https://sqlpad.example.com"
      ],
      "env": {
        "SQLPAD_SERVICE_TOKEN": "..."
      }
    }
  }
}

Die Bereitstellung des Tokens über env hält es aus der Prozessargumentliste heraus, die über ps für alle lesbar ist.

Um die gesperrten Werkzeuggruppen zu aktivieren, fügen Sie "SQLPAD_ALLOW_WRITES": "true" oder "SQLPAD_ALLOW_ADMIN": "true" zum selben env-Block hinzu.

Werkzeuge

Zwölf Werkzeuge sind immer registriert. Sechs weitere sind hinter den beiden SQLPAD_ALLOW_*-Flags gesperrt und standardmäßig deaktiviert.

Ausführung

Werkzeug

Beschreibung

run_sql

Führt beliebiges SQL aus, einschließlich DDL und DML, indem ein asynchroner SQLPad-Batch erstellt, bis zum Abschluss abgefragt und Zeilen inline zurückgegeben werden. Nicht sandboxed. Zeilen sind durch maxRows begrenzt, und eine Kürzung wird explizit gemeldet. Bei Zeitüberschreitung wird eine batchId zurückgegeben, sodass die Ausführung fortgesetzt statt neu gestartet werden kann. Eine fehlgeschlagene Anweisung enthält einen error.hint, wenn die Ursache erkennbar ist, z. B. ein Tabellenname, der eine schema.-Qualifizierung benötigt.

get_batch

Ruft einen Batch und seine aktuellen Anweisungsstatus ab. Rufen Sie dies auf, nachdem run_sql ein Timeout hatte, oder während ein Batch noch in der Warteschlange ist oder läuft.

get_statement_results

Blättert durch ein großes abgeschlossenes Anweisungsergebnis, anstatt die Abfrage erneut auszuführen. Gibt eine begrenzte Seite zurück, die mithilfe der Spaltennamen der Anweisung in Objekte umgewandelt wird.

cancel_batch

Fordert den Abbruch eines asynchronen Batches an. SQLPad lehnt den Abbruch ab, wenn die Verbindung keine asynchrone Ausführung unterstützt.

Entdeckung

Werkzeug

Beschreibung

list_connections

Listet die Verbindungen auf, die für das Service-Token verfügbar sind. Funktioniert mit einem Nicht-Admin-Token, anders als get_connection.

get_connection_schema

Ruft ein begrenztes Datenbankschema für eine Verbindung ab. Ungefilterte Vollschema-Ausgabe kann enorm sein – bevorzugen Sie schemaFilter oder tableFilter und verwenden Sie den Zusammenfassungsmodus, es sei denn, Spaltendetails werden benötigt.

list_drivers

Listet SQLPad-Datenbanktreiber auf, begrenzt durch das angeforderte Limit.

Gespeicherte Abfragen

Werkzeug

Beschreibung

list_queries

Listet gespeicherte Abfragen mit optionalen Filtern für Verbindung, Text, Tag, Eigentümer, Ersteller und Sortierung auf.

get_query

Ruft eine gespeicherte Abfrage anhand ihrer ID ab.

list_tags

Listet verschiedene Tags gespeicherter Abfragen mit begrenzter lokaler Paginierung auf.

list_query_history

Listet den Abfrageverlauf des aufrufenden Benutzers auf, neueste zuerst, mit begrenzter lokaler Paginierung.

format_sql

Formatiert SQL-Text mit SQLPad. Ältere SQLPad-Server bieten diesen Endpunkt möglicherweise nicht an.

Schreibvorgänge für gespeicherte Abfragen – erfordert SQLPAD_ALLOW_WRITES=true

Werkzeug

Beschreibung

create_query

Erstellt eine gespeicherte Abfrage.

update_query

Ersetzt die bearbeitbaren Felder einer vorhandenen gespeicherten Abfrage.

delete_query

Löscht eine gespeicherte Abfrage dauerhaft.

Admin – erfordert SQLPAD_ALLOW_ADMIN=true

Diese rufen SQLPad-Endpunkte auf, die selbst ein Admin-Service-Token erfordern.

Werkzeug

Beschreibung

get_connection

Ruft eine Verbindung anhand ihrer ID ab.

test_connection

Testet eine Verbindungskonfiguration, ohne sie zu speichern.

list_users

Listet SQLPad-Benutzer mit expliziten Ausgabegrenzen auf.

So funktioniert die SQL-Ausführung

SQLPad führt SQL über asynchrone Batches aus. Das Erstellen eines Batches gibt sofort zurück; jede Anweisung wechselt von queued zu started und dann zu finished oder error. Ergebnisse werden für jede Anweisung separat abgerufen und sind erst verfügbar, wenn die Anweisung abgeschlossen ist.

Das run_sql-Werkzeug übernimmt das gesamte Protokoll – erstellen, abfragen, abrufen und Zeilen zurückgeben – sodass ein Agent nur einen Aufruf tätigt. Wenn die Abfrage das konfigurierte Timeout erreicht, gibt das Werkzeug eine batchId zurück, mit der der Agent fortfahren kann, anstatt zu hängen.

Verbindungen haben möglicherweise keine Standarddatenbank. Qualifizieren Sie Tabellennamen als schema.table und verwenden Sie get_connection_schema, um verfügbare Schemata zu entdecken.

Sicherheit

  • run_sql führt beliebiges SQL aus, einschließlich DDL und DML, und ist nicht sandboxed. SQLPAD_ALLOW_WRITES beschränkt nur die Mutation der eigenen gespeicherten Abfrageobjekte von SQLPad; es schränkt den SQL-Inhalt nicht ein. Verwenden Sie schreibgeschützte Datenbankanmeldeinformationen für die SQLPad-Verbindung selbst. Das ist die einzige echte Durchsetzung.

  • Die /api/service-tokens-Endpunkte von SQLPad sind bewusst nicht exponiert. Ein Werkzeug, das Anmeldeinformationen erstellt, ist ein Privilegieneskalations-Primitiv.

  • Admin-Werkzeuge sind standardmäßig deaktiviert.

  • Das Service-Token wird aus allen Fehlern und Protokollen entfernt. Die gesamte Protokollierung erfolgt über stderr, da stdout der JSON-RPC-Kanal ist.

  • Batches sind auf den eigenen Benutzer des Tokens beschränkt, sodass der Server nur seinen eigenen Abfrageverlauf sieht.

Mitwirken

Klonen Sie das Repository und installieren Sie die Abhängigkeiten:

git clone https://github.com/VAIBHAV7500/sqlpad-mcp.git
cd sqlpad-mcp
npm install
npm run build

Erstellen Sie einen Branch für Ihre Änderung. Bevor Sie einen Pull-Request öffnen, führen Sie Folgendes aus:

npm run typecheck && npm run lint && npm test

CI führt dieselben drei Befehle auf Node 20 und 22 aus.

Lizenz

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query databases via natural language using the Model Context Protocol, with automatic schema discovery, SQL query execution, and read-only safety checks.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to connect to and query an SQLite database through the Model Context Protocol, allowing natural language interaction with database tables and data.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to search and read Metabase dashboards and cards, explore database schema, and run read-only query previews through the Model Context Protocol.
    17
    15 npm
    2
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query, analyze, and manage SQL Server databases through natural language via the Model Context Protocol.
    6
    1
    -