Free Mysql
FreeNot checkedFree MySQL MCP server — give Claude, ChatGPT and Cursor a free cloud MySQL 8 database over MCP
About
Free MySQL MCP server — give Claude, ChatGPT and Cursor a free cloud MySQL 8 database over MCP
README
MySQL 8.0.36 InnoDB Model Context Protocol No credit card
60-second quickstart
0:00 — get a database. Open freebase.cloud, sign up, create a session, choose MySQL. No card, no instance-class dropdown, no wait for a cluster to warm up.
0:20 — mint a token. Settings → MCP → New Token → pick the connection → copy the URL:
https://freebase.cloud/api/mcp/YOUR_TOKEN
0:30 — register it. One line for Claude Code:
claude mcp add --transport http billing https://freebase.cloud/api/mcp/YOUR_TOKEN
or for Cursor, ~/.cursor/mcp.json:
{ "mcpServers": { "billing": { "url": "https://freebase.cloud/api/mcp/YOUR_TOKEN" } } }
0:45 — ask for something.
List the tables in the billing database and show me the schema of the invoices table.
The model calls billing_list_tables, then billing_query. You now have an assistant with
hands on a real MySQL 8.0.36 server.
0:60 — done. The rest of this README is reference material.
What this repository is
Configuration recipes and runnable examples for pointing an MCP client at a free MySQL instance. There is no server binary to build here — the MCP server is hosted; this repo is the client-side half of the story plus a worked schema.
Everything below uses a connection named billing, because MCP tool names are prefixed
with your connection name rather than the engine name. Substitute yours.
Dialect and engine facts
| Property | Value |
|---|---|
| Server version | MySQL 8.0.36 |
| Default storage engine | InnoDB |
| Isolation | InnoDB defaults — REPEATABLE READ, row-level locking, MVCC |
| Character set | utf8mb4, full Unicode including 4-byte codepoints |
| Dialect reference | the MySQL 8.0 manual; port 3306 / mysql CLI syntax |
| Reachable over | freebase.cloud's HTTP query API, and MCP |
Read that last row carefully. This engine is not exposed as a raw TCP socket on 3306 — the SQL text travels over HTTPS instead of a MySQL client/server packet stream. What that means in practice:
- The SQL is unchanged. A statement you would paste into MySQL Workbench, phpMyAdmin,
Adminer or a
.sqlfile runs here byte-for-byte. Window functions, CTEs,JSON_TABLE,ON DUPLICATE KEY UPDATE, generated columns, invisible indexes,GROUP_CONCAT, stored procedures — 8.0 grammar, 8.0 behaviour. - The transport is different. You POST statements to the query API (or let a model call the MCP tools) instead of opening a socket. A GUI client that insists on speaking the native protocol therefore will not attach directly; drive it through the HTTP endpoint instead. See examples/wire_query.sh.
If you specifically need a native TCP wire protocol from a desktop GUI, freebase.cloud's PostgreSQL, MongoDB and Redis engines expose one; MySQL does not.
Tool reference
Four tools, prefixed with the connection name:
billing_query run a read statement, get rows back
billing_store insert / update / upsert
billing_list_tables enumerate tables
billing_annotate_table attach a description to a table for the model to read
A worked call, as the model sees it:
// tools/call
{
"name": "billing_query",
"arguments": {
"query": "SELECT status, COUNT(*) AS n, SUM(total_cents)/100 AS eur
FROM invoices GROUP BY status ORDER BY n DESC"
}
}
Annotate before you ask
billing_annotate_table is the difference between a model that guesses and a model that
knows. Money columns are the classic trap:
billing_annotate_table(
table: "invoices",
description: "total_cents and tax_cents are integer minor units (EUR cents), never
floats. status ∈ draft|sent|paid|void. issued_on is the invoice date;
due_on is issued_on + client payment terms. An invoice is overdue when
status='sent' AND due_on < CURDATE()."
)
Without it, a model will happily report a €48,900 invoice as €4,890,000. Annotations persist on the connection, so this is a one-time cost per table.
Client setup, by client
| Client | Where | Key detail |
|---|---|---|
| Claude Code | claude mcp add --transport http … |
writes .mcp.json; type is mandatory |
| Claude Desktop / web / Cowork | Settings → Connectors → Add custom connector | UI only; claude_desktop_config.json cannot do remote HTTP |
| Cursor | .cursor/mcp.json |
url only, no type |
| VS Code / Copilot Chat | .vscode/mcp.json |
top-level key is servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
key is serverUrl |
| Zed | settings.json |
key is context_servers |
| Cline | its MCP settings | "type": "streamableHttp" — camelCase |
| Roo Code | .roo/mcp.json |
"type": "streamable-http" — kebab-case |
| Gemini CLI | gemini mcp add --transport http … |
in settings.json the key is httpUrl, not url |
| Warp | Settings → AI → Manage MCP servers | paste box takes the bare object, no mcpServers wrapper |
| n8n | MCP Client Tool node, n8n ≥ 1.104.0 | Transport → HTTP Streamable, Auth → None |
Ready-to-paste versions of the four fiddliest ones are in examples/client-configs.json.
Auth is always None. The token is a path segment of the URL, so no client ever needs an
Authorization header. Treat the URL itself as the secret.
For ChatGPT: Settings → Apps → Advanced settings → developer mode → Apps → Create
→ paste the endpoint → Auth None → Scan Tools. Developer mode is documented for Pro,
Plus, Business, Enterprise and Edu, but full write access is still rolling out to Business,
Enterprise and Edu workspaces — so on some plans billing_query will work and billing_store
will not. ChatGPT requires Streamable HTTP, which is what this endpoint speaks.
Example: a freelance invoicing ledger
examples/invoice_ledger.py builds and queries a four-table
schema — clients, invoices, line_items, payments — entirely through MCP tool calls,
using only the Python standard library.
Design decisions worth copying:
- Money is
BIGINTcents. NoDECIMALrounding arguments, no floats anywhere near a balance. line_items.amount_centsis a generated column (quantity * unit_price_cents), so a row cannot disagree with itself.- Invoice balance is a view, not a column:
total_cents - COALESCE(SUM(payments), 0). Stored balances drift; derived ones cannot. ON DUPLICATE KEY UPDATEfor payment idempotency, keyed on the payment processor's reference.
Sample output:
tables: clients, invoices, line_items, payments
— ageing —
bucket invoices outstanding
current 4 3 210.00
1-30 days 2 890.00
31-60 days 1 1 450.00
60+ days 1 275.00
examples/wire_query.sh is the same database from bash and curl,
against the HTTP query API — useful in CI, cron jobs, or a Makefile, where spawning a Python
interpreter is more ceremony than the task deserves.
Honest limits
- The free tier is aimed at development, prototyping and small production workloads. No uptime figure, backup schedule or storage quota is promised anywhere in this repo, because none is verified. The dashboard shows current quotas.
- No native 3306 socket, as described above. This is the main reason to pick PostgreSQL instead, if a desktop GUI or a driver you cannot change is a hard requirement.
- One statement per tool call. Multi-statement transactions spanning several MCP calls are not a thing; keep atomic work inside a single statement, or a single stored procedure call.
- Free-tier Claude allows one custom connector at a time.
mcp-remoteis a fallback. If your client only speaks stdio, bridge withnpx -y mcp-remote <url> --transport http-only. Its maintainers call it experimental; do not build a production path on it.
Frequently asked
Is this really MySQL, or a MySQL-flavoured API?
MySQL 8.0.36 evaluates the statements. SELECT VERSION() returns the version string; MySQL
error codes and SHOW CREATE TABLE output are MySQL's own.
Can I run mysqldump?
Not against a socket, since none is exposed. Export by selecting your data through the query
API or MCP — examples/wire_query.sh export shows one way to dump a table as INSERT
statements.
Do stored procedures, triggers and events work?
Procedures, functions, triggers and views: yes. Scheduled events depend on the event scheduler
being enabled, which is not something this repo can promise for you — check SHOW VARIABLES LIKE 'event_scheduler' before relying on it.
Why is the tool called billing_query and not mysql_query?
Because the prefix is your connection name. Two MySQL connections in one workspace get
distinct tool names, which is what you want when an agent has both a staging and a scratch
database attached.
Is MariaDB the same thing? Close, not identical — sequences, system-versioned tables and a different JSON implementation diverge. freebase.cloud runs MariaDB 11.3.2 as a separate engine if you need it.
Links
- MySQL instance page
- Connecting Claude to MySQL
- MySQL 8.0 Reference Manual
- MCP specification 2026-07-28
freebase.cloud is an independent service and is not affiliated with Oracle Corporation, MariaDB plc, Anthropic, OpenAI, Google, Microsoft or Cursor.
Installing Free Mysql
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/freebase-cloud/free-mysql-mcp-serverFAQ
Is Free Mysql MCP free?
Yes, Free Mysql MCP is free — one-click install via Unyly at no cost.
Does Free Mysql need an API key?
No, Free Mysql runs without API keys or environment variables.
Is Free Mysql hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Free Mysql in Claude Desktop, Claude Code or Cursor?
Open Free Mysql on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Postgres
Query your database in natural language
by Anthropicwenb1n-dev/SmartDB_MCP
Connect to multiple databases at once (MySQL, PostgreSQL, SQL Server, MariaDB, Dameng, Oracle) for operations, health analysis and SQL optimization.
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolRedis
Interact with Redis key-value stores.
by modelcontextprotocolSQLite
Database interaction and business intelligence capabilities.
by modelcontextprotocolmxcp
Open-source framework for building enterprise-grade MCP servers using just YAML, SQL, and Python, with built-in auth, monitoring, ETL and policy enforcement.
by raw-labsjulien040/anyquery
Query apps with SQL from a single local-first binary; also connects to PostgreSQL, MySQL and SQLite-compatible databases.
by julien040drakonkat/wizzy-mcp-tmdb
Search and retrieve movie, TV show and person information from The Movie Database (TMDB) API.
by drakonkatlongevity-genie/opengenes-mcp
Query the OpenGenes database for aging and longevity research.
by longevity-genieCompare Free Mysql with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
