MCP Server README

The full upstream README, mirrored for reference. Install config, tool schemas, adoption signals and our own overview live on the MCP Server listing page.

RushDB MCP Server

Connect MCP clients to RushDB, the database for AI.

Connect RushDB to any MCP-compatible AI client and your agent gains persistent, structured memory — semantically searchable and graph-traversable, without managing embeddings or schemas.

Works with ChatGPT, Claude.ai, Claude Desktop, Cursor, Windsurf, Gemini CLI, and any MCP-compatible tool.


Two ways to connect

Remote OAuth (no installation)

For ChatGPT, Claude.ai, and other web-based AI clients — connect directly without installing anything locally:

MCP endpoint: https://mcp.rushdb.com/mcp

Your client redirects to RushDB for OAuth sign-in and receives a scoped token. No API key setup required.

ChatGPT:

  1. Go to Settings → Connectors → Add connector
  2. Enter https://mcp.rushdb.com/mcp
  3. Sign in with your RushDB account

Claude.ai:

  1. Go to Settings → Integrations → Add integration
  2. Enter https://mcp.rushdb.com/mcp
  3. Authorize with your RushDB account

Local (RushDB Cloud API key)

For Claude Desktop, Cursor, Windsurf, VS Code, and other stdio MCP clients:

1. Get an API key at app.rushdb.com

2. Add to your MCP client config:

config.json
{
  "mcpServers": {
    "rushdb": {
      "command": "npx",
      "args": ["@rushdb/mcp-server"],
      "env": {
        "RUSHDB_API_KEY": "your-api-key-here"
      }
    }
  }
}

Place this in:

  • Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json
  • Cursor — MCP settings in the Cursor config panel
  • Windsurf — ~/.codeium/windsurf/mcp_config.json

3. That's it. The agent now has 43 tools for storing, querying, searching and traversing structured memory.

RUSHDB_API_URL is optional and defaults to https://api.rushdb.com/api/v1, the RushDB Cloud API.

Local standalone engine (no Cloud account)

Run the Rust engine, then point a local stdio MCP client at it. This mode calls the public engine protocol directly; it does not use a RushDB Cloud API key, dashboard, or OAuth.

bash
RUSHDB_TOKEN=local-development-token rushdb up --data-dir ./rushdb-data
config.json
{
  "mcpServers": {
    "rushdb": {
      "command": "npx",
      "args": ["-y", "@rushdb/mcp-server"],
      "env": {
        "RUSHDB_MODE": "direct",
        "RUSHDB_ENGINE_URL": "http://127.0.0.1:3000",
        "RUSHDB_ENGINE_TOKEN": "local-development-token"
      }
    }
  }
}

Direct mode offers every tool whose work the engine does: schema discovery, record reads and writes (with ordering, projections and aggregations), relationships, labels and properties, bulk import and CSV export, text indexes and keyword search, and external vector indexes with vector search by a queryVector you supply. The RushDB Cloud tools are not listed and are refused if called: smartSearch (natural-language search), the relationship-pattern tools, and anything that needs managed embeddings (a text query for vector search, managed indexes). The MCP HTTP transport is unavailable in direct mode because its OAuth flow belongs to RushDB Cloud; run the server through stdio on the same machine as the client.


Compatibility

PackageRushDB 3.x and RushDB CloudRushDB 2.x (legacy)
@rushdb/javascript-sdk3.x2.11.0: npm i @rushdb/javascript-sdk@2
rushdb (PyPI)3.x2.10.0: pip install "rushdb<3"
@rushdb/mcp-server3.x2.13.0: npx @rushdb/mcp-server@2

What an agent can do

After connecting, ask Claude or your agent naturally:

"Remember that we decided to use Clerk for auth, replacing Auth0, on 2026-04-10."

The agent calls createRecord to store a structured memory. Later:

"What auth decisions have we made?"

The agent calls getSchemaMarkdown to learn what is stored, then findRecords, textSearch or vectorSearch.

"Show me everything related to our auth system."

The agent calls findRelationships and findRecords with relationship filters to traverse the graph of connected records.


Available tools

43 tools, named exactly as below. In direct mode the six RushDB Cloud tools are not listed. The full reference, with inputs and safety levels, is at docs.rushdb.com/3.x/learn/reference/mcp/tools.

Discovery and properties

ToolWhat it does
getSchemaMarkdownThe whole graph schema as compact Markdown; call once at session start
getSchemaStructured schema JSON, with property IDs and vector indexes
findLabelsList or filter record labels and their counts
findPropertiesProperty names, types, IDs and record counts
findPropertyByIdMetadata for one property
propertyValuesNumeric or date ranges, or distinct values; with query, the matching values and their counts (match: similar for near spellings; domainOnMiss lists a small field's values when nothing matches)
searchValuesWhere a value from the question is stored: matches across every property, with label, property and record count
getSchemaSummaryEvery label's properties with distinct counts, ranges and the values of small fields, in one live read
resolveNamesThe real label or property behind a name that is not in the schema (patients → Patient)
getJoinCandidatesHow labels reference each other, from property names and exact value containment, with evidence (RushDB Cloud only)
deletePropertyRemove a property and its values from all records
getSearchQuerySpecThe complete SearchQuery syntax reference
getQueryBuilderPromptThe built-in query builder prompt (for clients without MCP Prompts support)

Records

ToolWhat it does
findRecordsSearch records; ordering, projections, grouping and aggregations
findOneRecordThe first matching record
findUniqRecordExactly one matching record; fails on zero or several
getRecordOne record by ID
getRecordsByIdsSeveral records by ID
createRecordInsert or upsert one record
updateRecordUpdate some fields of a record
setRecordReplace all fields of a record
deleteRecord / deleteRecordByIdDelete one record by ID
bulkCreateRecordsInsert or upsert many records with one label
bulkDeleteRecordsDelete the records matching a query
exportRecordsExport matching records as CSV

Relationships

ToolWhat it does
findRelationshipsFind relationships by type, properties or endpoint records
attachRelationCreate relationships between existing records
updateRelationChange or remove properties on existing relationships; types stores an ISO string as a datetime (RushDB 3.0.4+)
detachRelationRemove relationships: every type unless relationType is given, both ways unless direction is

Vector, keyword and hybrid search

ToolWhat it does
findEmbeddingIndexesList embedding indexes and their status
createEmbeddingIndexCreate an embedding index (on a self-hosted engine, an external one with dimensions)
getEmbeddingIndexStatsHow many records an index covers and has vectors for
upsertEmbeddingVectorsWrite your own vectors to an external index
deleteEmbeddingIndexDelete an embedding index and its vectors
vectorSearchRank records by vector similarity after exact filtering; add text for hybrid search
semanticSearchDeprecated alias for vectorSearch
listTextIndexesList text indexes and their status
createTextIndexDeclare a BM25 text index over one property, or * for every string
deleteTextIndexDrop a text index
textSearchKeyword (BM25) search after exact filtering

RushDB Cloud only

ToolWhat it does
smartSearchTurn a natural-language request into SQL and run it
listRelationshipPatternsList inferred relationship patterns and analysis status
analyzeRelationshipPatternsQueue schema analysis for relationship suggestions
approveRelationshipPatternApprove and apply a suggested pattern
ignoreRelationshipPatternIgnore a suggested pattern
deleteRelationshipPatternDelete a pattern and optionally its materialized relationships

Utilities

ToolWhat it does
helpAddToClientSetup instructions for your MCP client

Writes accept an optional transactionId.


Built-in query builder prompt

RushDB exposes a system prompt via the MCP Prompts API that teaches the agent to query safely — discover labels and properties first, then construct queries.

How it works:

  1. Client calls prompts/list → finds rushdb.queryBuilder
  2. Client calls prompts/get → injects it as the session system message
  3. Agent now does discovery-first queries automatically

Most MCP clients handle this at session start. If your client doesn't support MCP Prompts, call getQueryBuilderPrompt and inject the result as your system message.


Environment variables

These apply to local (API key) mode. Remote OAuth connections do not use environment variables.

VariableRequiredDescription
RUSHDB_API_KEYyesYour RushDB API key
RUSHDB_API_URLnoAPI base URL (default: https://api.rushdb.com/api/v1)

For standalone direct mode, use these instead:

VariableRequiredDescription
RUSHDB_MODEyesSet to direct.
RUSHDB_ENGINE_URLyesStandalone engine base URL, for example http://127.0.0.1:3000.
RUSHDB_ENGINE_TOKENyesToken configured for the standalone engine.
RUSHDB_ENGINE_SCOPEnoTenant on an engine started with --multitenant.

Registry & autodiscovery

  • mcp.yaml at the repo root enables autodiscovery by MCP registries
  • glama.json at the repo root contains Glama metadata
  • Package: @rushdb/mcp-server, command: npx

Development

bash
git clone https://github.com/rush-db/mcp-server
cd mcp-server
npm install
npm run build

Troubleshooting: rushdb-mcp: command not found / MCP error -32000

This only happens when the MCP client launches the server with a working directory inside this repo (e.g. an .mcp.json at the repo root used by Claude Code / Cursor). This repo is @rushdb/mcp-server, so an unversioned npx @rushdb/mcp-server (even with -p) can resolve to the local package, whose rushdb-mcp bin isn't linked in node_modules/.bin. The process exits before the MCP handshake, which the client reports as -32000.

The published package is unaffected — the config above works as-is outside the repo. To run from inside the repo, pin a version so npx fetches from the registry instead of resolving the local package:

config.json
{
  "mcpServers": {
    "rushdb": {
      "command": "npx",
      "args": ["-y", "-p", "@rushdb/mcp-server@latest", "rushdb-mcp"],
      "env": { "RUSHDB_API_KEY": "your-api-key-here" }
    }
  }
}

Alternatively, run the local build directly (uses your in-repo code, must be built first with npm run build):

config.json
{
  "mcpServers": {
    "rushdb": {
      "command": "node",
      "args": ["build/index.js"],
      "env": { "RUSHDB_API_KEY": "your-api-key-here" }
    }
  }
}

License

Apache 2.0