Skip to content

MCP setup

nlqdb is the memory MCP server: a real database your agent can GROUP BY / JOIN / aggregate over in natural language, not just a recall store. It speaks MCP (Model Context Protocol) so any host that supports it — Claude Desktop, Cursor, Zed, Windsurf, VS Code Continue, Cline — can call nlqdb_query, nlqdb_list_databases, nlqdb_describe, nlqdb_remember (write a typed memory row your agent can later query) and nlqdb_connect_database (attach an existing ClickHouse/Postgres) directly.

Three paths, all terminating at the same /v1/ask orchestration and the same tools:

  1. Hosted connector URL (default) — point your host’s MCP config at https://mcp.nlqdb.com/mcp (the protocol lives at /mcp, not the bare domain); OAuth opens in your browser on first tool call. Zero local setup.
  2. One-click buttons on nlqdb.com (also on /integrations) — deep-link installs for Cursor and VS Code, a copy-paste claude mcp add command for Claude Code, and paste-ready config blocks for Claude, Windsurf, Zed, and Codex.
  3. npx -y @nlqdb/mcp + an NLQDB_API_KEY env var — the local stdio server, authenticated by a key instead of a browser. The headless path: CI, Docker, air-gapped, and coding agents that can’t click a consent screen.

Claude Code, from a terminal:

Terminal window
claude mcp add --transport http nlqdb https://mcp.nlqdb.com/mcp

Hosts that take a JSON config block (Claude Desktop custom connectors, Windsurf, Zed — exact key names vary by host; the /integrations page renders the verified per-host block to copy):

{ "url": "https://mcp.nlqdb.com/mcp" }

Headless (no browser) — create an sk_mcp_… MCP key at app.nlqdb.com/app/keys (scoped to MCP, bound to one host + device, revocable on its own), then:

{
"mcpServers": {
"nlqdb": {
"command": "npx",
"args": ["-y", "@nlqdb/mcp"],
"env": { "NLQDB_API_KEY": "sk_mcp_…" }
}
}
}

The CLI can list which supported hosts are installed on your machine with nlq mcp detect. A one-command config writer (nlq mcp install) is not shipped yet — it lands together with CLI sign-in (device flow); today the command prints a deferral hint pointing at the dashboard.

The agent never sees “create a database”; the DB materialises on first reference:

User: "Remember I prefer metric and I'm vegetarian."
Claude → nlqdb_query("preferences", "remember: metric units, vegetarian")
→ { ok, db: "preferences-93b" }
[next session]
User: "Plan me a Berlin food trip."
Claude → nlqdb_query("preferences", "what do you remember about me?")
→ "metric units, vegetarian"