LabscoMCP early access ↗
cxt9MCP SERVER

Neo4j MCP by cxt9

Run Cypher against Neo4j with read and write kept explicitly apart, and pick up different credentials per project from a local .env.

NoSQL, Graph & Key-Value StoresCommunity

LABSCO SUMMARY

Per-directory credentials, so one install covers every project.

Most database servers make you register a new entry per database. Here the .env in whichever folder you opened decides the target, which means the plugin is installed once and the graph follows the project. The explicit read/write mode is the other good call — it means a destructive statement cannot slip through as a read because it happened to end in RETURN. The README's macOS warning is real: GUI apps do not read your shell rc file, so a neo4j-mcp-server that is only on your shell's PATH is invisible to them — install with pipx or into a system path.

What it is

A Neo4j MCP server that also ships as a Claude Code plugin. The design decision worth knowing: it inherits the client's working directory and loads a .env from there, so the same installed plugin talks to a different database depending on which project folder you opened. One consolidated query tool covers Cypher, with the read/write distinction as an explicit argument rather than something inferred from the statement.

What you get

  • Any Cypher query run with an explicit mode of read or write — write is required for CREATE, MERGE, SET and DELETE even when they also return rows — returning records, a record count, a truncation flag and statistics — cypher_query
  • The graph's labels, relationship types and property keys, which is where you start on a database you did not build — get_database_schema
  • A connectivity check returning the server agent string and Bolt protocol version, for when the failure is the connection rather than the query — test_database_connection
  • Full result serialization that preserves node and relationship element_id, labels, types and Neo4j temporal and spatial values, rather than flattening them to strings
  • A result-size guard with a truncation flag, so a runaway MATCH (n) returns a capped result you can see was capped — raise limit on the call or NEO4J_DEFAULT_RESULT_LIMIT in the environment
  • Two readable resources and a help prompt: neo4j://schema, neo4j://connection and cypher_query_help

Requirements

A reachable Neo4j database — local, Docker or Aura — and Python 3.10+. Install the package from a clone with pip install -e ., which puts a neo4j-mcp-server console script on your PATH; the plugin shells out to it by name, so it has to be there. Credentials come from environment variables or a .env in the working directory: NEO4J_HOST, NEO4J_PORT, NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_DATABASE, with NEO4J_URI_SCHEME and NEO4J_ENCRYPTED for Aura and TLS. Leave username and password blank for an unauthenticated local instance rather than setting them to defaults. Both stdio and SSE transports are supported.

Setup effort

Build from source — git clone https://github.com/cxt9/neo4j-mcp.git