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.
Metadata
Release files for generate-data-mcp 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| generate_data_mcp-2.0.1.tar.gz | 132.0 kB | Without provenance | Details for generate_data_mcp-2.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| generate_data_mcp-2.0.1-py3-none-any.whl | Python 3 | none | any | Details for generate_data_mcp-2.0.1-py3-none-any.whl |
Total release size: 145.1 kB
Release files / generate_data_mcp-2.0.1.tar.gz
| Download URL | generate_data_mcp-2.0.1.tar.gz |
|---|---|
| Size | 132.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8d946c35b7f1e22180cf603bfb11c295a14d3df7d52f67769a9b84a596e6033a
|
|
BLAKE2b-256 checksum How to use checksums |
7014e3579bcb16739a3d5cd72c2af4770f2a1a5f118884a85b1f0f1742fd6311
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / generate_data_mcp-2.0.1-py3-none-any.whl
| Download URL | generate_data_mcp-2.0.1-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e90a7e063bd796ceb32ba8f38907f77a70be4b2007f604361611d57d594794fa
|
|
BLAKE2b-256 checksum How to use checksums |
39885d5f9e873550fbf4879086d5a51c32aaff5a3dd665cd7e2c6bc2e8b96dc7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Security for generate-data-mcp 2.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.