Neo4j MCP Canary
Neo4j MCP Canary — The canary goes first so the rest of us know what's coming
Connector by neo4j-labs · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/neo4j-labs-neo4j-mcp-canary
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 22 read · 8 write · 7 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 37
Read from the source code; the running server may list different tools.
Read 22 · Look things up without changing anything.
check-embedding-dimensionscount-nodesexpand-neighborsexplain-cypherfind-all-pathsfind-common-connectionsfind-motiffind-nodesfind-relationship-chainfind-relationshipsfind-shortest-pathfind-subgraph
Show 10 more tools
fulltext-searchget-nodeget-schemagive-feedbacklist-constraints-and-indexeslist-gds-proceduresmatch-patternread-cyphertraversevector-search
Write 8 · Create, change, send or run things.
create-constraintcreate-fulltext-indexcreate-indexcreate-nodecreate-relationshipcreate-vector-indexupdate-nodeupdate-relationship
Delete 7 · Delete, drop, revoke or wipe things.
delete-nodedelete-relationshipdrop-constraintdrop-indexprofile-cypherset-vector-propertywrite-cypher
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
NEO4J_PASSWORD
Other settings (environment variables or headers).
NEO4J_DATABASENEO4J_URINEO4J_USERNAME
Network hosts it talks to 11
api.mixpanel.com· found in codeapi.openai.com· found in codecab50b33.databases.neo4j.io· found in codecli-example.com· found in codeenv-example.com· found in codeevil.com· found in codeexample2.com· found in codegithub.com· found in codeneo4j.com· found in codenotallowed.com· found in codetest.com· found in code
Files it touches
- Your home directory (~)
Tools (37)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
check-embedding-dimensionsCheck Embedding Dimensionsread-onlyCheck whether the calling instance's configured embedding provider produces vectors matching a vector index's configured dimensions — via structured fields only, no Cypher in or out. Generates one throwaway embedding from sampleText (or a short built-in default if omitted — the output size doesn't depend on the input text) — via this MCP server's own direct HTTP call for openai (including any OpenAI-compatible local server like LM Studio or Ollama via its baseUrl config), or via Neo4j's ai.text.embed for azure-openai/vertexai/bedrock-titan — then compares its length against the named vect…
count-nodescreate-constraintCreate ConstraintCreate a constraint on the Neo4j database via structured fields — it does not accept or return raw Cypher. A constraint enforces a data-integrity rule on a node label or relationship type: UNIQUENESS forbids duplicate values for the given property (or property combination), KEY additionally requires the property to be present on every matching entity, and PROPERTY_EXISTENCE only requires the property to be present. UNIQUENESS is available on every edition of Neo4j. KEY and PROPERTY_EXISTENCE are Enterprise-only: against a Community Edition database, the server itself will reject the req…
create-fulltext-indexCreate Fulltext IndexCreate a fulltext index on the Neo4j database via structured fields — it does not accept or return raw Cypher. A fulltext index enables Lucene-backed text search (via fulltext-search) over one or more properties, across one or more node labels or relationship types. analyzer and eventuallyConsistent are optional refinements: when neither is set, the server's own default configuration applies untouched. When name is omitted, a generated name is assigned and returned in the response so it can be used later with drop-index or fulltext-search.
create-indexCreate IndexCreate an index on the Neo4j database via structured fields — it does not accept or return raw Cypher. Supports RANGE (general-purpose, supports composite properties), TEXT (single string property), POINT (single spatial property), and LOOKUP (indexes every label or relationship type automatically, no label/property needed) indexes. VECTOR and FULLTEXT indexes are not supported by this tool and are rejected. Every fresh database already ships default LOOKUP indexes for both nodes and relationships, so creating another LOOKUP index of the same entity type may hit a server-side conflict t…
create-nodeCreate NodeCreate a node with one or more labels and properties, and return it (including its elementId). Without mergeOn this always creates a new node. With mergeOn (property names that identify the node, e.g. ["email"]) it instead finds the node with those identifying values and updates its properties, or creates it if none exists — so retrying the call never creates a duplicate. Property values must be strings, numbers, booleans or arrays of those; nested objects are not valid Neo4j property values. Use get-schema first to see which labels and property names the graph already uses.
create-relationshipCreate RelationshipCreate a directed relationship from one existing node to another and return it. Returns {fromMatched, toMatched, relationship, message}. Both ends must each select exactly one node (use id, or match/filters that identify a single node). If either selects zero or several nodes, nothing is created and message says which end to fix — use find-nodes to look up ids. By default an identical relationship (same type, same direction, same two nodes) is reused rather than duplicated, so retrying is safe; its properties are updated to the given ones. Set allowDuplicate=true to always create a new …
create-vector-indexCreate Vector IndexCreate a vector index on the Neo4j database via structured fields — it does not accept or return raw Cypher. A vector index enables approximate nearest-neighbor similarity search (via vector-search) over a single embedding property on a node label or relationship type. dimensions and similarityFunction should match whatever embedding model produced the vectors you plan to store (e.g. 1536 dimensions / cosine similarity for many OpenAI embedding models) — a mismatch will not be caught at index-creation time, only later when stored vectors don't fit. filterableProperties registers extra…
delete-nodedelete-relationshipdrop-constraintDrop Constraintcan change or delete dataDrop a constraint from the Neo4j database by name via a structured field — it does not accept or return raw Cypher. Removing a constraint lifts the data-integrity guarantee it enforced (uniqueness, key, or property existence); existing data is not modified, but future writes will no longer be checked against that rule. Use list-constraints-and-indexes first to find the exact name if it isn't already known. Dropping a name that doesn't exist is not an error — the response's existed field reports whether the constraint was actually present.
drop-indexDrop Indexcan change or delete dataDrop an index from the Neo4j database by name via a structured field — it does not accept or return raw Cypher. Removing an index may slow down queries that relied on it, but does not affect data or any constraint it does not back. Use list-constraints-and-indexes first to find the exact name if it isn't already known. Dropping a name that doesn't exist is not an error — the response's existed field reports whether the index was actually present.
expand-neighborsExpand Neighborsread-onlyDescription is built at runtime.
explain-cypherExplain Cypherread-onlyDescription is built at runtime.
find-all-pathsFind All Pathsread-onlyDescription is built at runtime.
Show 22 more tools
find-common-connectionsFind Common Connectionsread-onlyDescription is built at runtime.
find-motifFind Motifread-onlyDescription is built at runtime.
find-nodesfind-relationship-chainFind Relationship Chainread-onlyDescription is built at runtime.
find-relationshipsfind-shortest-pathFind Shortest Pathread-onlyDescription is built at runtime.
find-subgraphFind Subgraphread-onlyDescription is built at runtime.
fulltext-searchFull-Text Searchread-onlyRun a Lucene-backed full-text search against a Neo4j FULLTEXT index via structured fields — it does not accept or return raw Cypher. Returns the topK best-matching nodes or relationships (entity type is auto-detected from the index) along with a relevance score, ordered by score. queryString supports Lucene query syntax (e.g. "term1 AND term2", or a quoted phrase for an exact match). Use list-constraints-and-indexes first to discover available fulltext index names.
get-nodeget-schemaGet Neo4j Schemaread-onlyRetrieve the schema information from the Neo4j database, including node labels, relationship types, and property keys. If the database contains no data, no schema information is returned. Requires APOC to be installed on the target database (uses apoc.meta.schema).
give-feedbackGive Feedbackread-onlyDescription is built at runtime.
list-constraints-and-indexesList Neo4j Constraints and Indexesread-onlyList the constraints and indexes defined on the Neo4j database via structured fields — it does not accept or return raw Cypher. For each constraint, reports its name, type (e.g. UNIQUENESS, NODE_KEY, EXISTENCE), the entity type it applies to (NODE or RELATIONSHIP), the labels/types and properties it covers, and, when the constraint is backed by one, the name of its owned index. For each index, reports its name, type (e.g. RANGE, TEXT, POINT, FULLTEXT, VECTOR, LOOKUP), state (e.g. ONLINE, POPULATING, FAILED), population percentage, the entity type, labels/types and properties it covers, …
list-gds-proceduresList available Neo4j GDS proceduresread-onlyDescription is built at runtime.
match-patternMatch Patternread-onlyDescription is built at runtime.
profile-cypherProfile Cyphercan change or delete dataDescription is built at runtime.
read-cypherRead Cypherread-onlyread-cypher can run only read-only Cypher statements. For write operations (CREATE, MERGE, DELETE, SET, etc...) or schema/admin commands, use write-cypher instead. Use explain-cypher for a query plan, or profile-cypher for a profiled plan with runtime statistics.
set-vector-propertySet Vector Propertycan change or delete dataSet an embedding vector property on one or more matching nodes or relationships via structured fields — it does not accept or return raw Cypher. Internally this uses Neo4j's db.create.setNodeVectorProperty/db.create.setRelationshipVectorProperty procedures, which is required for the property to be stored in the format a vector index can actually consume — a plain property SET would not work for this purpose. At least one filter is required, to avoid silently overwriting every matching entity's vector; there is no way to bypass this with an empty filter list. If more than one entity ma…
traverseTraverseread-onlyDescription is built at runtime.
update-nodeupdate-relationshipvector-searchVector Searchread-onlyRun an approximate nearest-neighbor similarity search against a Neo4j VECTOR index via structured fields — it does not accept or return raw Cypher. Returns the topK closest matching nodes or relationships (entity type is auto-detected from the index) along with a similarity score, ordered by score. filters lets you narrow results by exact/comparison predicates (=, <, >, <=, >=, IN), but ONLY on properties the index was created with as filterable via create-vector-index's filterableProperties — filtering on any other property is a hard Neo4j limitation, not a tool restriction. By defau…
write-cypherWrite Cyphercan change or delete datawrite-cypher executes any arbitrary Cypher query, with write access, against the user-configured Neo4j database. It does not accept EXPLAIN- or PROFILE-prefixed queries — use explain-cypher or profile-cypher instead.
Signals
- Stars
- 2
- Forks
- 3
- Open issues
- 0
- Weekly downloads
- 670
- Last commit
- Oct 21, 2026 (7 days ago)
- Last release
- Oct 21, 2026 (7 days ago)
- Last package publish
- Oct 21, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.neo4j-labs/neo4j-mcp-canary- Version
- 0.2.3
- Auth
- API key
- Packages
- pypi neo4j-mcp-canary
- License
- GPL-3.0
- Repository
- github.com/neo4j-labs/neo4j-mcp-canary
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Neo4j MCP Canary. Agent Mart. https://agentmart.dev/connectors/neo4j-labs-neo4j-mcp-canary (last updated 2026-10-24)