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 macOS PATH caveat in the troubleshooting section is real: GUI apps do not read your shell rc file, so install with pipx or into a system path.
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.
- 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`
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.
One command plus a key — neo4j-mcp-server, then supply credentials
