Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Misata: synthetic data library

de rasinmuhammedversión 0.9.8i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.rasinmuhammed/misata

Instalar

Resumen

Descripción del creador (original en inglés)

Declarative synthetic data: multi-table data that holds the facts you declare, checked by DuckDB.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Bases de datos y conjuntos de datos

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Necesitas

  • PyPIuv de Python instalado (para el comando uvx)

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "misata": {
      "command": "uvx",
      "args": [
        "misata"
      ]
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add misata -- uvx misata

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "misata": {
      "command": "uvx",
      "args": [
        "misata"
      ]
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "misata": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "misata"
      ]
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub rasinmuhammed, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Bases de datos y conjuntos de datosi

  • Más estrellas que el 0% de los otros 1137 servidores de esta categoría
  • Publicado en el registro más recientemente que el 75% de los otros 1137 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 1137 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Misata: synthetic data library?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.9.8) llegó al registro hace 12 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Supabase, MongoDB MCP Server, Elasticsearch MCP Server

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Supabase

de supabase

MCP server for interacting with the Supabase platform

Computadora o nube★ 2993Apache-2.0Actualizado ayer
Instalar

MongoDB MCP Server

de mongodb-js

MongoDB Model Context Protocol Server

Se ejecuta en tu computadora★ 1157Apache-2.0Actualizado hace 3 días
Instalar

MCP server for interacting with Elasticsearch

Se ejecuta en tu computadora★ 315Apache-2.0Actualizado hace 14 meses
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

Misata

Declare what must be true. Get data that makes it true. Prove it.

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


Sixty seconds

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:

  • customers.customer_id -> orders.customer_id

outcome_curves:

  • table: orders column: amount time_column: ordered_at start_date: "2025-01-01" curve_points:
  • {month: 1, target_value: 180000}
  • {month: 6, target_value: 240000}
  • {month: 12, target_value: 310000}

group_shares:

  • table: orders measure: amount group_column: channel shares: {web: 0.5, app: 0.3, store: 0.2}
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


Why declare instead of generate

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:

  • A declaration is honoured or refused, never quietly replaced. Declarations that cannot all hold stop generation with an error that names each one, shows the arithmetic and suggests the change.
  • The certificate is checked by code that did not write the data. A bug in Misata's arithmetic shows up as a failed invariant, not a self-consistent wrong answer.
  • The same spec, seed and version give the same bytes on Linux, macOS and Windows, so a fixture can live in git with its fingerprint.

Where this is going

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 factIn a generator scriptIn Misata
January revenue is 180,000.00draw amounts, sum them, rescale, round, chase the last cent{month: 1, target_value: 180000}
web is half of every month's revenuerescale inside each month and channel, then repair the monthly totals you just brokeshares: {web: 0.5, app: 0.3, store: 0.2}
every order has a real customersample ids from the parent table and keep both in stepcustomers.customer_id -> orders.customer_id
some churned customers were active firstbranch on status, write timestamps in order, null the rest, count by handtransitions: [[trialing, active], [active, churned]]
1% of transfers form laundering patterns, in a set mixbuild each ring and fan by hand, then prove the background has no cycle of its ownrate: 0.01 and shares: {cycle: 0.4, fan_in: 0.25, ...}
the trial balance is zeropost both legs of every entry and reconcile at the enda balanced_ledger constraint on the journal lines

What still takes code, and where each one stands:

Still scripted by handWhere it stands
The expected output of logic Misata cannot invert: window functions, custom SQL, business rulesmisata 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 examplemisata.mimic fits them from real rows, and its output is not anonymous
Free text with a voice of its owntext is generated from grammars and agrees with its row; prose that reads as written is not declarable yet
Version histories (SCD2) and inventory trajectoriesgenerated to balance, not yet declared step by step
Documents, images and audionot 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 evidence

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.

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx