Skip to main content
Glama

askDB MCP

Ein MCP-Server, der natürlichsprachliche Datenfragen in den Schema-Kontext verwandelt, den ein LLM zum Schreiben von SQL benötigt. Er verbindet sich nicht mit deiner Datenbank und generiert selbst kein SQL – er ruft die passenden Tabellendefinitionen aus deinem Pinecone-Index ab und übergibt sie an das jeweilige Modell, das gerade fragt (Claude Code, Claude Desktop, ChatGPT, Cursor).

user question
   │
   ▼
Claude Code / ChatGPT ──calls──► askDB MCP ──semantic search──► Pinecone (ask-db)
   │                                  │
   │      relevant DDL + guardrails ◄─┘
   ▼
generated SQL

Werkzeuge

Werkzeug

Wann das Modell es verwendet

Eingabe

search_schema

Erster Aufruf für jede Text-zu-SQL-Anfrage

question, top_k?, tables?, database?

get_table_schema

Benötigt jede Spalte einer bekannten Tabelle

tables[], database?

list_tables

Orientierung oder wenn die Suche leer zurückkommt

database?

Jede Antwort enthält Anweisungen, die das Modell anweisen, nur die zurückgegebenen Tabellen und Spalten zu verwenden, damit es keine Namen erfindet.

Einrichtung

npm install
npm run setup             # creates .env from the template
#                          → then put your PINECONE_API_KEY in .env
npm run doctor            # verify connection, field mapping and retrieval quality

Du gibst das an jemand anderen weiter? Schick der Person SETUP.md – es deckt sowohl den lokalen Betrieb als auch die Verbindung zu einer gehosteten Instanz ab.

npm run doctor ist der wichtige Schritt. Er gibt die Index-Konfiguration, die Metadatenfelder, die deine Datensätze tatsächlich verwenden, und eine Beispielsuche aus – so kannst du bestätigen, dass der Server die richtigen Felder liest, bevor du ihn in einen Client einbindest.

npm run doctor       # connectivity + retrieval sanity check
npm run smoke        # drive the stdio server with a real MCP client
npm run smoke:http   # same over Streamable HTTP, with bearer auth

Client verbinden

Claude Code

Die CLI, die Desktop-App und die IDE-Erweiterungen teilen sich eine Konfiguration, daher registriert dies den Server für alle drei:

# from the repo root — records an absolute path, so it works in any folder
claude mcp add askdb --scope user -- node "$PWD\src\server.js"

Überprüfe es mit claude mcp list (askdb: ... ✓ Connected) und starte dann die Desktop-App oder das IDE-Fenster neu – MCP-Server werden beim Start geladen.

Der User-Scope ist bewusst gewählt: Es geht darum, Datenbankfragen zu stellen, während du in deinen anderen Repos arbeitest. Eine projektbezogene .mcp.json würde nur aufgelöst, wenn Claude Code im Root dieses Repos gestartet wird, und die Definition von askdb in beiden Scopes führt dazu, dass Claude Code vor dem Duplikat warnt.

Claude Desktop / Cursor

Füge zu claude_desktop_config.json (oder den MCP-Einstellungen von Cursor) hinzu:

{
  "mcpServers": {
    "askdb": {
      "command": "node",
      "args": ["D:\\working-directory\\AI\\askDB-mcp\\src\\server.js"]
    }
  }
}

Die Anmeldedaten stammen aus der .env neben dem Server, daher landen keine Schlüssel in der Client-Konfiguration.

ChatGPT

ChatGPT-Connectors können keinen lokalen Prozess starten – sie sprechen nur Remote-MCP über HTTP. Führe den HTTP-Transport aus und mache ihn zugänglich:

# set MCP_AUTH_TOKEN first: this endpoint serves your whole schema
MCP_AUTH_TOKEN=some-long-random-string npm run start:http

Richte den Connector dann auf https://<your-host>/mcp mit einem Authorization: Bearer <token>-Header aus. Für einen schnellen Test tunnelst du ihn (cloudflared tunnel --url http://localhost:3000); für etwas Dauerhaftes hostest du ihn ordentlich – DEPLOY.md behandelt Netlify vollständig. GET /health ist für Load-Balancer-Checks nicht authentifiziert; /mcp erfordert das Bearer-Token, sobald MCP_AUTH_TOKEN gesetzt ist.

Der HTTP-Transport ist zustandslos – eine Server-Instanz pro Anfrage – er skaliert also hinter einem Load-Balancer ohne Sticky Sessions.

Hosting

Bereitgestellt als zwei Netlify Functions – netlify.toml enthält die Build-Einstellungen, sodass das Importieren des Repos und das Setzen von PINECONE_API_KEY + MCP_AUTH_TOKEN die ganze Arbeit ist. Schritt für Schritt: DEPLOY.md.

Das funktioniert ohne ein Umschreiben des Transports, weil WebStandardStreamableHTTPServerTransport aus dem MCP SDK eine Request entgegennimmt und eine Response zurückgibt – die Signatur der Netlify Functions v2 – sodass netlify/functions/mcp.mjs src/mcp.js unverändert importiert. Dieselbe Datei lässt sich auf Cloudflare Workers, Deno oder Bun ablegen; src/http.js deckt Container und VMs ab.

GET /health benötigt kein Token und meldet, ob die erforderlichen Umgebungsvariablen angekommen sind (nur Vorhandensein, niemals Werte) – der serverlose Ersatz für das Lesen eines Startprotokolls. /mcp fällt sicher zu: Ohne gesetztes MCP_AUTH_TOKEN gibt es 503 zurück, anstatt dein Schema ins Internet zu liefern.

Sobald es läuft, müssen Teamkollegen nichts installieren – nur die URL und ein Token (SETUP.md, Route A).

Konfiguration

Alles optional außer dem API-Schlüssel. Siehe .env.example.

Variable

Standard

Anmerkungen

PINECONE_API_KEY

Erforderlich

PINECONE_INDEX

ask-db

PINECONE_NAMESPACE

(default ns)

TOP_K

8

Schema-Teile pro Suche

EMBED_MODEL

multilingual-e5-large

Muss dem Modell entsprechen, mit dem du die Schema-Daten eingespielt hast

RERANK_MODEL

(off)

z. B. bge-reranker-v2-m3; vor dem Aktivieren messen

DEFAULT_DATABASE

(all)

Alle Nachschläge auf eine Datenbank eingrenzen

SQL_DIALECT

ANSI SQL

Wird dem Modell als Hinweis übergeben

TEXT_FIELDS / TABLE_FIELDS / DB_FIELDS

siehe .env.example

Infrage kommende Metadatenschlüssel, in der Reihenfolge versucht

LIST_SCAN_LIMIT

1000

Obergrenze für das Scannen von list_tables

Der Server erkennt automatisch, welche Metadatenfelder deine Datensätze verwenden und ob der Index integriertes Embedding hat, sodass die Standardwerte in der Regel unverändert funktionieren.

Zwei Dinge, die man wissen sollte

Das Embedding-Modell muss übereinstimmen. Wenn EMBED_MODEL nicht das Modell ist, mit dem das Schema eingespielt wurde, fallen alle Scores auf nahe Null und die Ergebnisse sind Rauschen – die Vektoren sind zueinander praktisch zufällig. npm run doctor zeigt dies als unzusammenhängende Tabellen mit Scores um 0.01 statt 0.8. Dieser Index wurde mit multilingual-e5-large erstellt.

Setze DEFAULT_DATABASE, wenn dein Index mehrere Umgebungen enthält. Wenn dasselbe Schema sowohl als *_live als auch als *_test existiert, liefert eine nicht eingegrenzte Suche beide Kopien jeder Tabelle, was die Hälfte der top_k-Slots für Duplikate verbraucht und das Modell Umgebungen in einer Abfrage mischen lässt.

Aufbau

Datei

Rolle

src/mcp.js

Tool-Definitionen – die MCP-Oberfläche

src/pinecone.js

Abruf: Suche, exakter Abruf, Felderkennung, Reranking

src/format.js

Stellt Treffer im Schema-Block dar, den das Modell liest

src/server.js

stdio-Einstiegspunkt

src/http.js

Streamable-HTTP-Einstiegspunkt

src/config.js

Laden von Umgebungsvariablen und Standardwerte

scripts/doctor.js

Diagnose für Konnektivität und Abruf

netlify/functions/

Serverlose Einstiegspunkte – /mcp und /health

netlify.toml

Netlify-Build- und Routing-Konfiguration

DEPLOY.md

Hosting-Leitfaden

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • GibsonAI MCP server: manage your databases with natural language

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

  • Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RaviSenjaliya/askDB-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server