Skip to content
Agentmart
Submit a tool

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

IndexedGPL-3.0Local (stdio)★ 2
Write a review

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.

We use your email only for this newsletter. Privacy

About

Neo4j MCP Canary — The canary goes first so the rest of us know what's coming

No 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-dimensions
  • count-nodes
  • expand-neighbors
  • explain-cypher
  • find-all-paths
  • find-common-connections
  • find-motif
  • find-nodes
  • find-relationship-chain
  • find-relationships
  • find-shortest-path
  • find-subgraph
Show 10 more tools
  • fulltext-search
  • get-node
  • get-schema
  • give-feedback
  • list-constraints-and-indexes
  • list-gds-procedures
  • match-pattern
  • read-cypher
  • traverse
  • vector-search

Write 8 · Create, change, send or run things.

  • create-constraint
  • create-fulltext-index
  • create-index
  • create-node
  • create-relationship
  • create-vector-index
  • update-node
  • update-relationship

Delete 7 · Delete, drop, revoke or wipe things.

  • delete-node
  • delete-relationship
  • drop-constraint
  • drop-index
  • profile-cypher
  • set-vector-property
  • write-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_DATABASE
  • NEO4J_URI
  • NEO4J_USERNAME

Network hosts it talks to 11

  • api.mixpanel.com · found in code
  • api.openai.com · found in code
  • cab50b33.databases.neo4j.io · found in code
  • cli-example.com · found in code
  • env-example.com · found in code
  • evil.com · found in code
  • example2.com · found in code
  • github.com · found in code
  • neo4j.com · found in code
  • notallowed.com · found in code
  • test.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-only

    Check 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-nodes
  • create-constraintCreate Constraint

    Create 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 Index

    Create 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 Index

    Create 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 Node

    Create 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 Relationship

    Create 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 Index

    Create 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-node
  • delete-relationship
  • drop-constraintDrop Constraintcan change or delete data

    Drop 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 data

    Drop 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-only

    Description is built at runtime.

  • explain-cypherExplain Cypherread-only

    Description is built at runtime.

  • find-all-pathsFind All Pathsread-only

    Description is built at runtime.

Show 22 more tools
  • find-common-connectionsFind Common Connectionsread-only

    Description is built at runtime.

  • find-motifFind Motifread-only

    Description is built at runtime.

  • find-nodes
  • find-relationship-chainFind Relationship Chainread-only

    Description is built at runtime.

  • find-relationships
  • find-shortest-pathFind Shortest Pathread-only

    Description is built at runtime.

  • find-subgraphFind Subgraphread-only

    Description is built at runtime.

  • fulltext-searchFull-Text Searchread-only

    Run 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-node
  • get-schemaGet Neo4j Schemaread-only

    Retrieve 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-only

    Description is built at runtime.

  • list-constraints-and-indexesList Neo4j Constraints and Indexesread-only

    List 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-only

    Description is built at runtime.

  • match-patternMatch Patternread-only

    Description is built at runtime.

  • profile-cypherProfile Cyphercan change or delete data

    Description is built at runtime.

  • read-cypherRead Cypherread-only

    read-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 data

    Set 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-only

    Description is built at runtime.

  • update-node
  • update-relationship
  • vector-searchVector Searchread-only

    Run 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 data

    write-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
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)