Supabase
MCP server for interacting with the Supabase platform
Beschreibung vom Entwickler (englisches Original)
Elasticsearch 7.x/8.x with connections managed at runtime by the agent, SSH tunnels, readonly.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"esmole": {
"command": "npx",
"args": [
"-y",
"esmole-mcp"
]
}
}
}Führe das in deinem Terminal aus
claude mcp add esmole -- npx -y esmole-mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"esmole": {
"command": "npx",
"args": [
"-y",
"esmole-mcp"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"esmole": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"esmole-mcp"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto ed-smartass bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.2.0) kam vor 13 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Supabase, MongoDB MCP Server, Elasticsearch MCP Server
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP server for interacting with the Supabase platform
MongoDB Model Context Protocol Server
MCP server for interacting with Elasticsearch
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
esmole-mcp
Elasticsearch 7.x and 8.x for AI agents that manage their own connections: add, edit and remove clusters through MCP tools at runtime, per project, hot-reloaded, through SSH.
esmole-mcp is a stdio MCP server for Elasticsearch. Tell your agent "connect to the logs cluster through bastion.example.com, readonly" and it calls add_connection. The connection lands in a per-project .esmole.json or in your global store, and both are re-read on every tool call, so a change made by the agent, by you in an editor, or by another session applies on the next call. No client config edits, no restarts.
known_hosts or a pinned fingerprint.readonly connections limited to an allowlist of read endpoints, absolute request timeouts, a 10 MB response cap, and results capped at 40 KB so a big aggregation cannot flood the context.Need PostgreSQL or MySQL? dbmole-mcp is the same design for SQL databases.
Requires Node.js 22 or newer. The server needs no configuration to start; connections are added later.
Claude Code
claude mcp add esmole -- npx -y esmole-mcp
Add --scope user to enable it in every project. Or install it as a plugin (Claude Code 2.1.275 or later):
/plugin install esmole --marketplace ed-smartass/esmole-mcp
Codex
codex mcp add esmole -- npx -y esmole-mcp
or in ~/.codex/config.toml:
[mcp_servers.esmole]
command = "npx" args = ["-y", "esmole-mcp"]
Cursor
VS Code
Claude Desktop
Download esmole-mcp- .mcpb from the latest release and open it, or add the JSON below to claude_desktop_config.json. Claude Desktop does not start servers inside a project, so keep connections in the global store (the default scope).
Any other MCP client
{
"mcpServers": { "esmole": { "command": "npx", "args": ["-y", "esmole-mcp"] } } }
Docker
The image is built from source:
git clone https://github.com/ed-smartass/esmole-mcp.git && cd esmole-mcp
docker build -t esmole-mcp .
{
"mcpServers": { "esmole": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "esmole-store:/home/node/.config/esmole", "-v", "/abs/path/to/project:/work", "-v", "/home/me/.ssh/known_hosts:/home/node/.ssh/known_hosts:ro", "esmole-mcp" ] } } }
The container runs as node with cwd /work: mount a project there to use its .esmole.json, and the named volume keeps the global store. Mount known_hosts for SSH connections (or pin ssh.hostKey), and any private key you reference by privateKeyPath, at the path the connection names; for ssh.agent: true, forward the agent socket (-v "$SSH_AUTH_SOCK:/ssh-agent" -e SSH_AUTH_SOCK=/ssh-agent). To reach hosts that only your machine can reach, add --add-host=host.docker.internal:host-gateway (Linux) and use host.docker.internal. The image has no git, so the "not ignored by git" check always warns.
A 0.1 setup that still sets ESMOLE_CONNECTIONS, ESMOLE_CONFIG or --config starts fine: the server prints one line on stderr saying they are ignored. See the changelog.
Ask the agent, for example:
Add a readonly elasticsearch connection
logsto this project: https on 10.0.0.20, API key
VnVhQ2ZH…, through ssh as deploy@bastion.example.com with my ssh agent. Then show the five
biggest indices.
It calls add_connection with:
{
"name": "logs", "host": "10.0.0.20", "apiKey": "VnVhQ2ZH…", "readonly": true, "ssh": { "host": "bastion.example.com", "user": "deploy", "agent": true }, "scope": "project" }
then test_connection and es_list_indices. Credentials you type in chat pass through the model's context; for production secrets, write the entry into the file yourself.
| Layer | File | Shape |
|---|---|---|
project | .esmole.json, found from the server's working directory | { "connections": [ ... ] } |
global | ~/.config/esmole/connections.json, or the path in ESMOLE_STORE | [ ... ] |
list_connections reports each connection's source (project or global) and, when it hides an entry of the same name in the other layer, shadows..esmole.json it finds. In a linked git worktree with no file of its own, it falls back to the main checkout's .esmole.json, so every worktree of a repo shares one file.0600, written atomically. Writes keep entries they cannot parse verbatim, and refuse to overwrite a file that is not valid JSON.add_connection takes the connection fields plus scope: "global" (default) or "project". With project and no file yet, the file is created at the main checkout root (or the git root, or the working directory outside git). If git does not ignore it, the response warns you; add .esmole.json to .gitignore so credentials are not committed.add_connection fails when the name already exists in the target layer. The same name in the other layer is allowed; the response says which entry now shadows which.update_connection patches the connection where it lives (the winning layer). A null value removes an optional field. An ssh object is merged into the stored one field by field, so { "ssh": { "hostKey": "SHA256:..." } } keeps the stored SSH secrets.remove_connection deletes it from that layer and tells you if that uncovers a same-name entry in the other layer.list_connections shows scheme, host, port, the auth kind, verifyTls, readonly, source and whether SSH is used.connection 'x' in is invalid: ...) instead of falling through to a same-name entry in the global store, and list_connections lists it as invalid. A name defined twice in one file is an error too. remove_connection can delete an invalid entry.list_connections (brokenLayers). A broken project file blocks every connection; a broken global store blocks only names the project file does not define. A missing file is just empty.Unknown fields are rejected. Authentication is required: an apiKey, or both user and password.
| Field | Type | Notes | |
|---|---|---|---|
name | string | [a-zA-Z0-9_-]+ | |
type | elasticsearch | default elasticsearch | |
host | string | as seen from the SSH bastion when ssh is set | |
port | number | default 9200 | |
scheme | http \ | https | default https |
verifyTls | boolean | default true; false skips certificate verification | |
apiKey | string | API key (the base64 id:key form) | |
user, password | string | basic auth | |
readonly | boolean | default false, see Readonly | |
queryTimeoutMs | integer | milliseconds, default 60000, at most 2147483647; see Limits and timeouts | |
ssh | object | see SSH tunnels |
Example .esmole.json:
{
"connections": [ { "name": "local", "host": "localhost", "scheme": "http", "user": "elastic", "password": "changeme" }, { "name": "logs", "host": "10.0.0.20", "apiKey": "VnVhQ2ZHY0JDZGJrUW0t...", "readonly": true, "ssh": { "host": "bastion.example.com", "user": "deploy", "agent": true } } ] }
ssh field | Notes |
|---|---|
host, port | bastion; port defaults to 22 |
user | SSH user |
password | password auth |
privateKey / privateKeyPath | key contents, or a path (~ is expanded) |
passphrase | for an encrypted key |
agent | true to use the agent at SSH_AUTH_SOCK |
hostKey | pinned host key fingerprint, SHA256:... (OpenSSH format) |
{ "host": "bastion.example.com", "user": "deploy", "privateKeyPath": "~/.ssh/id_ed25519" }
{ "host": "bastion.example.com", "user": "deploy", "password": "…" } { "host": "bastion.example.com", "port": 2222, "user": "deploy", "agent": true } { "host": "bastion.example.com", "user": "deploy", "agent": true, "hostKey": "SHA256:EXAMPLEexampleEXAMPLEexampleEXAMPLEexample1" }
Host keys are verified. With hostKey set, the bastion's key must match it (trailing = padding is accepted) and known_hosts is not consulted. Otherwise the key must match an entry for the host in ~/.ssh/known_hosts (host on port 22, [host]:port otherwise):
!*.example.com) is ignored.@revoked is rejected for every host, whatever the line's host pattern. @cert-authority lines and unknown markers are skipped.There is no trust-on-first-use: an unknown key fails the connection with an error that shows the presented fingerprint. Check it against a trusted source, then either add the host to known_hosts or pin it:
ssh-keyscan -p 22 bastion.example.com 2>/dev/null | ssh-keygen -lf -
and ask the agent to
Nur der Anfang wird gezeigt; den Rest findest du im Repo