{
  "markdown": "# free-database-mcp-server\n\n[![15 engines](https://img.shields.io/badge/engines-15-2EA043?style=flat-square)](https://freebase.cloud)\n[![MCP 2026-07-28](https://img.shields.io/badge/MCP-2026--07--28-6E56CF?style=flat-square)](https://modelcontextprotocol.io/specification)\n[![Transport](https://img.shields.io/badge/transport-streamable_HTTP-1D9BF0?style=flat-square)](https://modelcontextprotocol.io/specification/basic/transports)\n[![Clients](https://img.shields.io/badge/clients-14_documented-8A2BE2?style=flat-square)](#client-setup)\n[![MIT](https://img.shields.io/badge/license-MIT-lightgrey?style=flat-square)](LICENSE)\n\nA reference for connecting any MCP client to\n[a free cloud database](https://freebase.cloud). Fifteen engines, one endpoint shape, four tools per\nconnection — with every engine's version and dialect, every client's config file and its exact key\nnames, and a troubleshooting section built from the mistakes those key names cause. For a\ntask-oriented walkthrough, the companion repo `mcp-database-server-free` is organised by job.\n\nJump to: [engines](#engines) · [access model](#how-access-works) · [tools](#the-four-tools) ·\n[client setup](#client-setup) · [troubleshooting](#troubleshooting-configuration) ·\n[picking an engine](#picking-an-engine) · [examples](#examples)\n\n## Engines\n\n| Engine | Version | Dialect | CLI it speaks | Port | Access |\n|---|---|---|---|---|---|\n| [PostgreSQL](https://freebase.cloud/free-postgresql-cloud-instance) | 16.2 | SQL | `psql` | 5432 | Native TCP + HTTP + MCP |\n| MySQL | 8.0.36 | SQL | `mysql` | 3306 | HTTP + MCP |\n| [MongoDB](https://freebase.cloud/free-mongodb-cloud-instance) | 7.0.4 | Document / NoSQL | `mongosh` | 27017 | Native TCP + HTTP + MCP |\n| [Redis](https://freebase.cloud/free-redis-cloud-instance) | 7.2.3 | Key-Value / In-Memory | `redis-cli` | 6379 | Native TCP + HTTP + MCP |\n| SQLite | 3.45.1 | SQL | `sqlite3` | — | HTTP + MCP |\n| Apache Cassandra | 4.1.4 | Wide-Column / CQL | `cqlsh` | 9042 | HTTP + MCP |\n| DynamoDB | 2024.1 | Key-Value / Document | `aws` CLI | — | HTTP + MCP |\n| [ClickHouse](https://freebase.cloud/free-clickhouse-cloud-instance) | 24.1.5 | Columnar / OLAP SQL | `clickhouse-client` | 9000 | HTTP + MCP |\n| Elasticsearch | 8.12.0 | Search / Query DSL | `curl` / ES client | 9200 | HTTP + MCP |\n| [Neo4j](https://freebase.cloud/free-neo4j-cloud-instance) | 5.17.0 | Graph / Cypher | `cypher-shell` | 7687 | HTTP + MCP |\n| MariaDB | 11.3.2 | SQL | `mysql` | 3306 | HTTP + MCP |\n| InfluxDB | 2.7.4 | Flux / InfluxQL | `influx` | 8086 | HTTP + MCP |\n| Prometheus | 2.50.1 | PromQL | `promtool` / `curl` | 9090 | HTTP + MCP |\n| TimescaleDB | 2.14.2 | SQL (PostgreSQL + Timescale) | `psql` | 5432 | HTTP + MCP |\n| CockroachDB | 23.2.4 | SQL (PostgreSQL-compatible) | `cockroach sql` / `psql` | 26257 | HTTP + MCP |\n\n**Port** is the port that engine's protocol conventionally uses — it tells you which dialect and\nclient tooling apply, not that a socket is listening. Each engine has a page at\n`https://freebase.cloud/free-<slug>-cloud-instance` (slugs: `postgresql`, `mysql`, `mongodb`,\n`redis`, `sqlite`, `cassandra`, `dynamodb`, `clickhouse`, `elasticsearch`, `neo4j`, `mariadb`,\n`influxdb`, `prometheus`, `timescaledb`, `cockroachdb`), plus a Claude guide at\n`https://freebase.cloud/how-to-connect-claude-to-<slug>` — for example\n[the Elasticsearch instance page](https://freebase.cloud/free-elasticsearch-cloud-instance).\n\n## How access works\n\nTwo distinct paths. Confusing them is the source of most setup trouble.\n\n**Native wire protocol — three engines.** PostgreSQL, Redis and MongoDB accept real drivers over\ntheir real protocols: `psql`/libpq/Prisma/SQLAlchemy/pgx, `redis-cli`/ioredis/redis-py/Lettuce over\nRESP2, `mongosh`/Mongoose/the native driver over OP_MSG. Nothing is proxied or reshaped.\n\n```\npostgresql://freebase@HOST:5432/DBNAME    redis://HOST:6379    mongodb://HOST:27017/DBNAME\n```\n\n**HTTP and MCP — all fifteen.** The other twelve are reached through\n[the hosted HTTP query API](https://freebase.cloud) and through MCP. They speak their own dialects — CQL to Cassandra, Cypher to Neo4j, Flux to\nInfluxDB — but the transport is HTTP, not a raw socket. If you are wiring up an AI assistant this\nis the path you want regardless of engine, because it is identical for all of them:\n\n```\nhttps://freebase.cloud/api/mcp/YOUR_TOKEN\n```\n\nThe token sits **in the URL path**, so no `Authorization` header appears anywhere in this document.\nThe consequence: the URL is the credential. Don't commit it, don't paste it into a shared config,\nand rotate it from **Settings → MCP** if you do either. Transport is **Streamable HTTP**, which\nuses server-sent events internally for streamed responses — not the same thing as the deprecated\nHTTP+SSE transport with its separate `/sse` endpoint and `POST /messages`. Clients offering both:\nchoose streamable.\n\n## The four tools\n\nFour tools per connection, **prefixed with the connection name you chose**, not the engine name.\nA connection called `db` gives you:\n\n| Tool | Purpose | What it means per engine |\n|---|---|---|\n| `db_query` | Read, in the engine's native language | SQL · CQL · Cypher · Flux · PromQL · ES query DSL · Mongo find/aggregate · Redis commands |\n| `db_store` | Insert, upsert, write | `INSERT` · `MERGE` · `_bulk` · line protocol · `SET` · `PutItem` |\n| `db_list_tables` | Enumerate containers | tables · collections · keyspaces · indices · measurements · metric names · keys |\n| `db_annotate_table` | Attach a human description to a container | so the model knows what the columns mean |\n\nTwo engines add helpers: **PostgreSQL** gets `pg_dump`, `pg_restore` and `pg_tables`; **[SQLite](https://freebase.cloud/free-sqlite-cloud-instance)** gets `sqlite_master` and `sqlite_version`.\n\n**Use `annotate_table`.** Highest-return five minutes in this document. A model that can list your\ntables still has to guess whether `status` holds `'active'` or `1`, whether `amount_cents` is cents\nor dollars, and whether `deleted_at IS NULL` is how you filter. One paragraph per table, written\nonce, persists on the connection and applies to every conversation in every client using that token.\n\n## Quickstart\n\nSign up on [the freebase.cloud dashboard](https://freebase.cloud) (no card), create a session, pick an engine,\nthen **Settings → MCP → New Token** → select the connection → copy the URL. Confirm it works before\nconfiguring any client — four tool names printed means anything still broken is configuration:\n\n```bash\nexport FREEBASE_MCP_URL=\"https://freebase.cloud/api/mcp/YOUR_TOKEN\"\npython3 examples/list_tools.py\n```\n\n## Client setup\n\n| Client | Config location | Top-level key | URL key | `type` value |\n|---|---|---|---|---|\n| Claude Desktop / web / Cowork | UI only | — | — | — |\n| Claude Code | `.mcp.json` / user config | `mcpServers` | `url` | `\"http\"` (**required**) |\n| ChatGPT | UI (developer mode) | — | — | — |\n| OpenAI Responses API | request body | `tools[]` | `server_url` | `\"mcp\"` |\n| Cursor | `~/.cursor/mcp.json` or `.cursor/mcp.json` | `mcpServers` | `url` | **omit entirely** |\n| Windsurf | `~/.codeium/windsurf/mcp_config.json` | `mcpServers` | **`serverUrl`** | — |\n| VS Code / Copilot Chat | `.vscode/mcp.json` | **`servers`** | `url` | `\"http\"` |\n| Zed | `settings.json` | **`context_servers`** | `url` | — |\n| Cline | MCP settings JSON | `mcpServers` | `url` | **`\"streamableHttp\"`** |\n| Roo Code | `.roo/mcp.json` | `mcpServers` | `url` | **`\"streamable-http\"`** |\n| Gemini CLI | `settings.json` | `mcpServers` | **`httpUrl`** | — |\n| Warp | Settings → AI → Manage MCP servers | *(none)* | `url` | — |\n| n8n | MCP Client Tool node | — | Endpoint field | HTTP Streamable |\n| LangChain / LlamaIndex | Python | — | `url` | `\"http\"` |\n\n### Claude Desktop, Claude web, Cowork\n\nUI only. Settings (`⌘,` / `Ctrl+,`) → **Connectors** (**Customize → Connectors** in newer builds) →\n**Add custom connector** → paste the URL → **Add**. Enable per conversation with the **+** button in\nthe composer. Available on Free, Pro, Max, Team and Enterprise; **Free accounts get one custom\nconnector.** `claude_desktop_config.json` has no representation for a remote HTTP MCP server — a\npost telling you to add one there predates streamable HTTP. The engine-specific version of these\nsteps lives at\n[how to connect Claude to PostgreSQL](https://freebase.cloud/how-to-connect-claude-to-postgresql)\nand its siblings for the other slugs.\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http db https://freebase.cloud/api/mcp/YOUR_TOKEN\n#   --scope project  writes .mcp.json (commit it, minus the token) | --scope user = all projects\n```\n```json\n{ \"mcpServers\": { \"db\": { \"type\": \"http\", \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } } }\n```\n\n`streamable-http` is accepted as an alias for `http`.\n\n### ChatGPT\n\nSettings → **Apps** → **Advanced settings** → enable developer mode → **Apps → Create** → paste the\nendpoint → Auth **None** → **Scan Tools** → **Create**. Also check Settings → Connectors; OpenAI's\ntwo docs pages disagree about where this lives. Developer mode is documented for Pro, Plus,\nBusiness, Enterprise and Edu; **full write access is currently rolling out to Business, Enterprise\nand Edu workspaces**, so on some plans you get read-only tool access today.\n\n### OpenAI Responses API\n\n```json\n{\n  \"model\": \"gpt-5.6\",\n  \"tools\": [{\n    \"type\": \"mcp\",\n    \"server_label\": \"db\",\n    \"server_description\": \"Free cloud database — query and store structured data.\",\n    \"server_url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\",\n    \"require_approval\": \"never\"\n  }],\n  \"input\": \"List the tables in my database.\"\n}\n```\n\n### Cursor, Windsurf, VS Code, Zed\n\n```json\n// ~/.cursor/mcp.json  or  .cursor/mcp.json     — NO \"type\" key\n{ \"mcpServers\": { \"db\": { \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } } }\n```\n\n```json\n// ~/.codeium/windsurf/mcp_config.json          — the key is serverUrl\n{ \"mcpServers\": { \"db\": { \"serverUrl\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } } }\n```\n```json\n// .vscode/mcp.json                             — top-level key is \"servers\"\n{\n  \"inputs\": [{ \"type\": \"promptString\", \"id\": \"fb-token\", \"description\": \"freebase.cloud MCP token\", \"password\": true }],\n  \"servers\": { \"db\": { \"type\": \"http\", \"url\": \"https://freebase.cloud/api/mcp/${input:fb-token}\" } }\n}\n```\n```json\n// Zed settings.json                            — \"context_servers\", not \"mcpServers\"\n{ \"context_servers\": { \"db\": { \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } } }\n```\n\nWindsurf is now documented as \"Devin Desktop\" on docs.devin.ai; Enterprise users must enable MCP in\nsettings first. In VS Code, Command Palette → `MCP: Add Server` builds the file, and the `inputs`\nblock keeps the token out of it so the config stays committable.\n\n### Cline and Roo Code\n\nSame transport, different spelling, no fallback between them.\n\n```json\n// Cline — camelCase\n{ \"mcpServers\": { \"db\": { \"type\": \"streamableHttp\", \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\", \"disabled\": false, \"autoApprove\": [] } } }\n```\n```json\n// Roo Code, .roo/mcp.json — kebab-case\n{ \"mcpServers\": { \"db\": { \"type\": \"streamable-http\", \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } } }\n```\n\n### Gemini CLI\n\n```bash\ngemini mcp add --transport http db https://freebase.cloud/api/mcp/YOUR_TOKEN\n```\n```json\n{ \"mcpServers\": { \"db\": { \"httpUrl\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\", \"timeout\": 5000 } } }\n```\n\nIn `settings.json` the key is **`httpUrl`**. Plain `url` means SSE — a misconfiguration that\nproduces a server which appears to connect and then never returns a tool. The consumer Gemini app\ndoes not support custom MCP servers; that is Gemini Enterprise only.\n\n### Warp and n8n\n\nWarp: Settings → AI → **Manage MCP servers** → \"Streamable HTTP or SSE Server (URL)\". Its paste box\ntakes the server object alone, with no `mcpServers` wrapper:\n\n```json\n{ \"db\": { \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\" } }\n```\n\nn8n: **MCP Client Tool** node (1.104.0+). Server Transport → **HTTP Streamable**, Endpoint → your\nURL, Authentication → **None**. The published docs page still shows only the old \"SSE Endpoint\"\nfield; a current build of the node has the transport dropdown.\n\n### LangChain and LlamaIndex\n\n```python\nfrom langchain_mcp_adapters.client import MultiServerMCPClient\nclient = MultiServerMCPClient({\"db\": {\"transport\": \"http\", \"url\": \"https://freebase.cloud/api/mcp/YOUR_TOKEN\"}})\ntools = await client.get_tools()\n```\n```python\nfrom llama_index.tools.mcp import BasicMCPClient, McpToolSpec\ntools = await McpToolSpec(client=BasicMCPClient(\"https://freebase.cloud/api/mcp/YOUR_TOKEN\")).to_tool_list_async()\n```\n\n### mcp-remote (fallback only)\n\nFor a stdio-only client. Requires Node; its own README calls it experimental, so prefer native HTTP\nsupport wherever a client has it.\n\n```json\n{ \"mcpServers\": { \"db\": { \"command\": \"npx\", \"args\": [\"-y\", \"mcp-remote\", \"https://freebase.cloud/api/mcp/YOUR_TOKEN\", \"--transport\", \"http-only\"] } } }\n```\n\n## Troubleshooting configuration\n\n| Symptom | Cause | Fix |\n|---|---|---|\n| Claude Code errors immediately on startup | `url` present, `type` missing | Add `\"type\": \"http\"`. This is a hard error, not a warning |\n| Cursor rejects the entry or ignores the server | A `\"type\"` key was added | Delete it. In Cursor the presence of `url` is what marks a server remote |\n| VS Code never sees the server | Config uses `mcpServers` | The top-level key in `.vscode/mcp.json` is `servers` |\n| Windsurf shows the server as unconfigured | Used `url` | The key is `serverUrl` |\n| Zed ignores the file | Used `mcpServers` | Zed's key is `context_servers` |\n| Gemini CLI connects but lists no tools | Used `url` | Use `httpUrl`. Plain `url` selects the SSE transport |\n| Cline reports an unknown transport | Used `streamable-http` | Cline wants `streamableHttp` (camelCase) |\n| Roo Code reports an unknown transport | Used `streamableHttp` | Roo wants `streamable-http` (kebab-case) |\n| Warp rejects the pasted JSON | Included the `mcpServers` wrapper | Paste only the inner server object |\n| Claude Desktop can't find the server in JSON | Remote HTTP servers aren't supported there | Add it through Settings → Connectors instead; note Free is capped at one connector |\n| ChatGPT scans tools but cannot write | Write access still rolling out on your plan | Read works; check your workspace type |\n| Tools appear with unexpected names | Names carry your **connection** name, not the engine | Rename the connection, or use the names as they are |\n| 404 from the endpoint | Token revoked, or a character lost in a copy-paste | [Reissue from Settings → MCP](https://freebase.cloud) |\n| Works in curl, fails in the client | The client is reading a different config file than you edited | Check user-scope versus project-scope paths |\n\n## Picking an engine\n\nGeneral-purpose relational → **PostgreSQL** (also the only engine with dump/restore helpers over\nMCP). An existing MySQL schema, PHP or WordPress → **[MySQL](https://freebase.cloud/free-mysql-cloud-instance)**, or **MariaDB** for sequences,\nsystem-versioned tables and dynamic columns. Flexible documents and Mongoose → **MongoDB**. Cache,\nsessions, counters, rate limits, anything with a TTL → **Redis**. Small and schema-light →\n**SQLite**. Analytics over many rows → **ClickHouse**. Full-text search and ranking →\n**Elasticsearch**. Connected data, recommendations, agent memory → **Neo4j**. Metrics from devices →\n**InfluxDB**; from exporters and client libraries → **Prometheus**; next to relational tables →\n**[TimescaleDB](https://freebase.cloud/free-timescaledb-cloud-instance)**. Wide-column at scale or learning CQL → **[Cassandra](https://freebase.cloud/free-cassandra-cloud-instance)**. Single-table design against\nAWS SDK code → **DynamoDB**. Distributed SQL, serializable by default → **[CockroachDB](https://freebase.cloud/free-cockroachdb-cloud-instance)**.\n\n## Examples\n\n`examples/list_tools.py` prints every tool with its input schema — run it first. `dialects.json`\nholds write and read statements for all 15 engines, and `examples/clients/` has ready-to-copy\nconfig files for ten clients.\n\n```bash\nnode examples/roundtrip.mjs postgresql         # end-to-end write + read\nnode examples/roundtrip.mjs redis --keep       # leave the data behind\n```\n\n`roundtrip.mjs` writes bookmark records, reads them back and reports whether what came out matches\nwhat went in. Run it against two engines to see how much — and how little — changes between them.\n\n## Limits\n\nThe free tier is intended for development, prototyping and small production workloads. Engines run\nat the versions in the table above with their real feature sets: transactions on PostgreSQL, the\naggregation pipeline on MongoDB, MergeTree on ClickHouse, Cypher and APOC on Neo4j, the\naggregations framework on Elasticsearch. No SLA, uptime figure, backup guarantee or storage number\nis claimed here, because none is verified — [the dashboard](https://freebase.cloud) shows current\nquotas. Treat anything you\ncannot afford to lose as needing its own backup. For production scale, dedicated resources and a\nsupport relationship, the vendors' own managed offerings remain the right answer.\n\n## Links\n\n[freebase.cloud](https://freebase.cloud) ·\n[MCP specification](https://modelcontextprotocol.io/specification) (revision 2026-07-28) ·\n[transport reference](https://modelcontextprotocol.io/specification/basic/transports)\n\n---\n\n**Affiliation.** freebase.cloud is an independent service and is not affiliated with Anthropic, OpenAI, Google,\nMicrosoft, Anysphere, Codeium, Zed Industries, Warp, n8n, Oracle, MongoDB, Inc., Redis Ltd.,\nElasticsearch B.V., Neo4j, Inc., InfluxData, ClickHouse, Inc., the Apache Software Foundation, AWS,\nTimescale, Inc., Cockroach Labs or the PostgreSQL Global Development Group.\n",
  "bytes": 17783,
  "sha": "08a73ccd39ea6c5c9cb55320921fab0553e7d43866476c9f13acc7339ff31e8d",
  "repo_slug": "freebase-cloud/free-database-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_cloud_freebase_freebase_8be80149/readme"
}