get-schemaLABSCO SUMMARY
Read and write are different tools, so the boundary is enforceable.
Splitting the two means a read-only deployment does not register write-cypher at all — the model cannot call a tool it was never offered, which is stronger than asking it not to. Enforcement leans on Neo4j's own EXPLAIN classification rather than on inspecting the query string, and the README says plainly where that stops: a misclassified custom procedure gets through. Worth checking before you point this at production with read-only assumed.
What it is
Neo4j's MCP server for a Neo4j instance. It exposes the schema so a model can reason about a data model it has never seen, then lets it write and run Cypher against that model — with read and write queries split into different tools rather than one query endpoint.
What you get
- get-schema — node labels, relationship types and property keys, so the model learns the data model instead of guessing at it
- read-cypher — read-only queries, enforced with EXPLAIN and Neo4j's own query-type classification rather than by pattern-matching the query text
- write-cypher — queries that change data, and it disappears entirely when NEO4J_MCP_READ_ONLY is true
- list-gds-procedures — the Graph Data Science procedures available on the instance
- Schema sampling is bounded by NEO4J_MCP_SCHEMA_SAMPLE_SIZE, so introspection on a large graph does not turn into a scan
- The README is explicit about the one gap in read-only enforcement: a custom procedure or function that Neo4j classifies incorrectly can slip past the check, and getting that classification right is the procedure author's job
Requirements
A reachable Neo4j instance and credentials: NEO4J_MCP_URI, NEO4J_MCP_USERNAME, NEO4J_MCP_PASSWORD and NEO4J_MCP_DATABASE. Install from PyPI with pip install neo4j-mcp-server and run it over stdio. NEO4J_MCP_READ_ONLY decides whether write-cypher is registered at all, and NEO4J_MCP_TELEMETRY, NEO4J_MCP_LOG_LEVEL and NEO4J_MCP_LOG_FORMAT cover the rest. Serving it over HTTPS is possible but needs a certificate a client will accept — most MCP clients reject self-signed ones.
Setup effort
One command plus credentials — pip install neo4j-mcp-server, then supply credentials
USE CASES
Making sense of a graph you did not model
Read the labels, relationship types and properties first, and let the assistant write queries against the real shape.
Answering a question that needs a traversal you would have to look up
Describe what you want and let it write the Cypher, run it read-only, and explain the result.
Giving an analyst access without giving them write access
Run it read-only, so the write tool is not in the tool list at all.
Loading or fixing up data from the conversation
Run the write query explicitly, on a deployment where writes are turned on.
Finding out what graph algorithms this instance can run
List the installed Graph Data Science procedures before planning an analysis around one.
4 tools
Listed in project docs. Your client may show a different list.
read-cypherwrite-cypherlist-gds-proceduresBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation. The example config sets NEO4J_MCP_READ_ONLY=true, which removes write-cypher; drop it or set it to false to write. Read-only checks can miss misclassified custom procedures.
Requires
- python on PATH
- NEO4J_MCP_PASSWORD in your environment
- NEO4J_MCP_USERNAME in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install neo4j-mcp-serverMCP Clients
VS Code
{
"servers": {
"neo4j": {
"type": "stdio",
"command": "python",
"args": [
"-m",
"neo4j_mcp_server"
],
"env": {
"NEO4J_MCP_URI": "bolt://localhost:7687",
"NEO4J_MCP_USERNAME": "neo4j",
"NEO4J_MCP_PASSWORD": "password",
"NEO4J_MCP_DATABASE": "neo4j",
"NEO4J_MCP_READ_ONLY": "true",
"NEO4J_MCP_TELEMETRY": "false",
"NEO4J_MCP_LOG_LEVEL": "info",
"NEO4J_MCP_LOG_FORMAT": "text",
"NEO4J_MCP_SCHEMA_SAMPLE_SIZE": "100"
}
}
}
}