The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Generate Data listing page.
An MCP server for Generate-Data.com — generate synthetic datasets, design schemas from natural language, and manage Projects, straight from your agent.
Thin HTTP wrapper over the Generate-Data.com API. No generation logic lives in this repo — it's a curated, agent-friendly interface onto the real thing: 7 tools, one consistent response shape, binary-safe output, and server-side validation on every input.
You need a Generate-Data.com API key first — create one in Settings → API Access on generate-data.com.
Add this to your MCP client config (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json):
uvx fetches and runs the latest published version on demand — no separate install step, nothing to update by hand. Restart your client and the 7 gd_* tools are available.
Do not commit a config file containing your real API key.
For local development against this repo directly:
From your MCP client, invoke gd_get_usage — it should return your tier and call counts. Then invoke gd_list_field_types — it should return the category map.
Ask your agent something like "generate 50 rows of fake e-commerce customers as CSV" and it will call gd_design_schema then gd_generate_dataset on its own.
A typical session looks like this — the agent chains tools on its own, you just describe the outcome:
gd_list_field_types — see every field type, grouped by category.gd_design_schema(prompt="E-commerce customers with name, email, and signup date") — proposes a fields array from plain English.gd_generate_dataset(fields=..., num_rows=10, format="csv") — returns the rows.gd_design_schema again, this time passing messages (the running conversation) + current_schema (the prior result) together — it refines instead of proposing fresh.Every tool returns the same envelope: {"ok": true, "summary": "...", "data": {...}} on success, or {"ok": false, "error": {"code": ..., "message": ...}} on failure — errors always tell you what to do next, never a raw stack trace.
Point at a locally running Django backend instead of the hosted API.
v2.0.0 renames every tool (breaking change). Old name → new name:
generate_data → gd_generate_datasetlist_field_types → gd_list_field_typesget_field_options → gd_get_field_type_optionspropose_schema → gd_design_schema (first call, no messages/current_schema)refine_schema → gd_design_schema (pass messages + current_schema together)get_api_usage → gd_get_usagelist_projects → gd_list_projects (now paginated: limit/offset)generate_project → gd_generate_project (binary formats now returned base64-encoded, not corrupted utf-8)All 7 tools, split by tier.
format: csv, json, xml, parquet, or zip (binary formats return base64-encoded).field_type must match ^[a-z0-9_]+$.Requires a Premium API key — Free-tier keys get a tier_forbidden error.
limit/offset, default 20/0).gd_generate_dataset.| Capability | Free | Premium |
|---|---|---|
| Max rows / request | 100 | 100,000 |
| Max columns | 10 | 50 |
| Formats | CSV | CSV, JSON, XML, Parquet |
| Daily API calls | 10 | 1,000 |
Limits are enforced by the Django API, not this MCP server.
| Variable | Required | Default |
|---|---|---|
GENERATE_DATA_API_KEY | Yes | — |
GENERATE_DATA_API_BASE_URL | No | https://api.generate-data.com |
| Symptom | Fix |
|---|---|
GENERATE_DATA_API_KEY is required | Set env var before starting the server |
HTTP 401 / auth_failed | Invalid or deactivated key |
HTTP 429 / rate_limited | Per-minute or daily cap hit; wait or upgrade tier |
HTTP 403 / tier_forbidden | Free tier lacks access; upgrade plan |
unsupported_format | format must be one of csv, json, xml, parquet, zip |
invalid_input on a field type or project ID | Value failed server-side validation before any request was sent — check spelling/type |
Docs live on generate-data.com. See this repo's tool docstrings (generate_data_mcp/server.py) for the authoritative request/response shapes.