Supabase
MCP server for interacting with the Supabase platform
Beschreibung vom Entwickler (englisches Original)
Declarative synthetic data: multi-table data that holds the facts you declare, checked by DuckDB.
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": {
"misata": {
"command": "uvx",
"args": [
"misata"
]
}
}
}Führe das in deinem Terminal aus
claude mcp add misata -- uvx misataIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"misata": {
"command": "uvx",
"args": [
"misata"
]
}
}
}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": {
"misata": {
"type": "stdio",
"command": "uvx",
"args": [
"misata"
]
}
}
}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 rasinmuhammed 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.9.8) kam vor 12 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) 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.
Misata is a declarative synthetic data generator for Python. You write down the facts a dataset has to satisfy, from a monthly revenue curve to a balanced ledger to a foreign key that must never dangle, and the engine builds multi-table data that satisfies all of them at once. Then DuckDB checks the files on disk and writes a certificate anyone can re-run.
Docs · Use cases · The language · Limitations · Studio · Changelog
pip install "misata[duckdb]"
# misata.yaml
seed: 7 tables: customers: rows: 2000 columns: customer_id: {type: int, unique: true, min: 1, max: 2000} name: {type: text, text_type: name} signed_up: {type: date, start: "2024-01-01", end: "2024-12-31"} orders: rows: 40000 columns: order_id: {type: int, unique: true, min: 1, max: 1000000} customer_id: {type: foreign_key} channel: {type: categorical, choices: [web, app, store]} amount: {type: float, min: 5, max: 900} ordered_at: {type: date, start: "2025-01-01", end: "2025-12-31"} relationships:
outcome_curves:
group_shares:
misata generate -c misata.yaml -o data --attest
python data/verify.py
Attestation: data
result: PASSED files pinned: 2 invariants held: 69 of 69
ok 2 file(s) match their attested sha256 ok 69 of 69 invariant(s) hold
The 69 are derived from the YAML before a row exists: twelve monthly revenue totals (180,000.00 in January, 240,000.00 in June, 310,000.00 in December, straight lines between), the channel split inside every one of those months, the planned row count per month, zero orphaned customer_ids and unique keys. verify.py needs only the standard library and duckdb, and it shares no code with the generator.
The YAML above, generated and summed by month and channel. Each bar is a month of generated revenue split by channel; the cap is the total the YAML declares. Drawn by readme_charts.py from a fresh run of this README's own YAML.
Change one cent in one row and it says so:
FAIL orders.csv: sha256 301165f9dc4e does not match the attested 670f89195826
FAIL orders.amount.month:1.outcome_curve_period: expected 180000.00, observed 180000.01 FAIL orders.amount.outcome_curve_total: expected 2945000.00, observed 2945000.01 FAIL orders.amount.web.2025-01.group_share_period: expected 90000.00, observed 90000.01 FAIL orders.amount.web.group_share_total: expected 1472500.00, observed 1472500.01 FAIL 65 of 69 invariant(s) hold
Every test fixture has an oracle problem. To check a dbt model, a Spark job, a dashboard tile or a data agent you need input data and an answer you know independently of the code under test. Copying production gives you data without an answer. Hand-written fixtures give you an answer that rots. Random generators give you data whose answer you have to compute with the code you are testing.
Misata turns it around. The specification is the ground truth and the rows are derived from it. "January revenue is 180,000" is true before a single row exists, so your pipeline either returns 180,000.00 or it has a bug.
flowchart LR
A["Declare curves, shares, ledgers, keys, lifecycles"] --> B{"Can they all hold?"} B -- "no" --> R["Refused, with the arithmetic and a fix"] B -- "yes" --> C["Build rows closed form where it can, by construction elsewhere"] C --> D["Write CSV, Parquet, JSONL, DuckDB, Postgres"] D --> E["Attest DuckDB re-runs every derived invariant"] E --> F["Certificate in-toto Statement plus verify.py"]
Three properties make this different from a generator with options:
Misata's aim is that nobody writes a Python script to make a dataset, of any kind. You say what has to be true; the engine works out the rows, refuses what cannot hold, and proves what it built.
It is not there yet, and it is getting there brick by brick. Each release adds things you can declare instead of programming, and a brick is laid only when it passes three tests: it can be declared in a few lines of YAML, it is refused before generation when it contradicts another declaration, and it is re-checked on the rows afterwards by code that did not write them.
Every brick is something you declare instead of code. Drawn from misata/registry.py , the list a contract test holds the code to, so the wall cannot claim a brick the engine does not have.
One fact, two ways. What a script has to do to make a fact true, and what you write instead:
| The fact | In a generator script | In Misata |
|---|---|---|
| January revenue is 180,000.00 | draw amounts, sum them, rescale, round, chase the last cent | {month: 1, target_value: 180000} |
| web is half of every month's revenue | rescale inside each month and channel, then repair the monthly totals you just broke | shares: {web: 0.5, app: 0.3, store: 0.2} |
| every order has a real customer | sample ids from the parent table and keep both in step | customers.customer_id -> orders.customer_id |
| some churned customers were active first | branch on status, write timestamps in order, null the rest, count by hand | transitions: [[trialing, active], [active, churned]] |
| 1% of transfers form laundering patterns, in a set mix | build each ring and fan by hand, then prove the background has no cycle of its own | rate: 0.01 and shares: {cycle: 0.4, fan_in: 0.25, ...} |
| the trial balance is zero | post both legs of every entry and reconcile at the end | a balanced_ledger constraint on the journal lines |
What still takes code, and where each one stands:
| Still scripted by hand | Where it stands |
|---|---|
| The expected output of logic Misata cannot invert: window functions, custom SQL, business rules | misata solve drives your real dbt, SQL or Python pipeline to a declared number within a stated tolerance; past that, you write the expected value |
| Correlations you can only describe by example | misata.mimic fits them from real rows, and its output is not anonymous |
| Free text with a voice of its own | text is generated from grammars and agrees with its row; prose that reads as written is not declarable yet |
| Version histories (SCD2) and inventory trajectories | generated to balance, not yet declared step by step |
| Documents, images and audio | not started |
LIMITATIONS.md keeps the full list. When a line leaves this table, it is because the brick that replaces it has passed all three tests.
The Gauntlet: 13 tables and 136 SQL assertions run by DuckDB. The Faker script ties wherever a fact is about one column at a time and loses wherever columns, rows or tables have to agree. Source , rerun with python -m benchmarks.gauntlet .
<img src="https://raw.githubusercontent.com/rasinmuhammed/misata/main/docs/assets/readme/detection-light.svg" width="680" alt="Detection AUC, lower is better, 0.5 means a classifier cannot tell generated rows from real ones. Olist orders: Misata from a declared schema 0.63, Misata from a sentence 0.73, Faker script 0.78, SDV fitted to the real data 0.71, Misata mimic 0.54. NYC taxi trips: 0.
Nur der Anfang wird gezeigt; den Rest findest du im Repo