MCP server for Generate-Data.com — thin proxy to /api/v2/
Project description
generate-data-mcp
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.
Installation (30-second setup)
You need a Generate-Data.com API key first — create one in Settings → API Access on generate-data.com.
Claude Desktop / Cursor (recommended)
Add this to your MCP client config (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json):
{
"mcpServers": {
"generate-data": {
"command": "uvx",
"args": ["generate-data-mcp"],
"env": {
"GENERATE_DATA_API_KEY": "your-uuid-key-here"
}
}
}
}
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.
uv / uvx (any MCP client)
# run once, ad hoc:
uvx generate-data-mcp
# or install it as a persistent CLI tool:
uv tool install generate-data-mcp
pip (fallback)
pip install generate-data-mcp
For local development against this repo directly:
git clone https://github.com/ns-3e/generate-data-mcp.git
cd generate-data-mcp
pip install -e ".[dev]"
Verify it works
export GENERATE_DATA_API_KEY=your-key
generate-data-mcp
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.
Bam — you're ready to generate data.
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.
Quick start
A typical session looks like this — the agent chains tools on its own, you just describe the outcome:
- Discover what's possible.
gd_list_field_types— see every field type, grouped by category. - Design a schema.
gd_design_schema(prompt="E-commerce customers with name, email, and signup date")— proposes afieldsarray from plain English. - Generate the data.
gd_generate_dataset(fields=..., num_rows=10, format="csv")— returns the rows. - Refine if needed. Call
gd_design_schemaagain, this time passingmessages(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.
Local development
{
"env": { "GENERATE_DATA_API_BASE_URL": "http://localhost:8000" }
}
Point at a locally running Django backend instead of the hosted API.
Migrating from v1
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, nomessages/current_schema)refine_schema→gd_design_schema(passmessages+current_schematogether)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)
Reference
All 7 tools, split by tier.
Free tier
- gd_generate_dataset — Generate synthetic dataset rows from a field list.
format:csv,json,xml,parquet, orzip(binary formats return base64-encoded). - gd_list_field_types — List all available field types grouped by category. Takes no arguments.
- gd_get_field_type_options — Get the configuration option schema for one field type.
field_typemust match^[a-z0-9_]+$. - gd_design_schema — Design a dataset schema from natural language, or refine an existing one — one tool for both the first proposal and follow-up conversation turns.
- gd_get_usage — Get current API key usage stats: calls today, tier, limits. Takes no arguments.
Premium tier
Requires a Premium API key — Free-tier keys get a tier_forbidden error.
- gd_list_projects — List the user's Projects, paginated (
limit/offset, default 20/0). - gd_generate_project — Generate all tables in a Project and download the result. Same format/binary rules as
gd_generate_dataset.
Tier limits (API key)
| 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.
Configuration
| Variable | Required | Default |
|---|---|---|
GENERATE_DATA_API_KEY |
Yes | — |
GENERATE_DATA_API_BASE_URL |
No | https://api.generate-data.com |
Troubleshooting
| 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 |
Development
git clone https://github.com/ns-3e/generate-data-mcp.git
cd generate-data-mcp
pip install -e ".[dev]"
pytest tests/ -v
API docs
Docs live on generate-data.com. See this repo's tool docstrings (generate_data_mcp/server.py) for the authoritative request/response shapes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file generate_data_mcp-2.0.1.tar.gz.
File metadata
- Download URL: generate_data_mcp-2.0.1.tar.gz
- Upload date:
- Size: 132.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d946c35b7f1e22180cf603bfb11c295a14d3df7d52f67769a9b84a596e6033a
|
|
| MD5 |
fef4ee551a31ab19959b3f3647de83c5
|
|
| BLAKE2b-256 |
7014e3579bcb16739a3d5cd72c2af4770f2a1a5f118884a85b1f0f1742fd6311
|
File details
Details for the file generate_data_mcp-2.0.1-py3-none-any.whl.
File metadata
- Download URL: generate_data_mcp-2.0.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e90a7e063bd796ceb32ba8f38907f77a70be4b2007f604361611d57d594794fa
|
|
| MD5 |
e3d9cc0d0c4de7ac46901398eb220b66
|
|
| BLAKE2b-256 |
39885d5f9e873550fbf4879086d5a51c32aaff5a3dd665cd7e2c6bc2e8b96dc7
|