mcp-neo4j-cypher

io.github.neo4j-contrib/mcp-neo4j-cypher

About mcp-neo4j-cypher

mcp-neo4j-cypher is an MCP server published by the GitHub account neo4j-contrib. A simple Neo4j MCP server that allows you to run Cypher queries against a Neo4j database.

It runs on your own machine: your AI client starts it from the PyPI package mcp-neo4j-cypher at version 0.5.1.

It asks for one secret: NEO4J_PASSWORD. Give it a key with the least access that still works.

It also needs NEO4J_URI and NEO4J_USERNAME set before it starts.

Version 1.0.0 was published on 7 November 2025, and the source code is public, so you can read it before installing.

Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 0 warn, 0 fail, 2 info. How we check.

What it asks for

VariableRequiredSecretDescription
NEO4J_URIYesNoNeo4j connection URI
NEO4J_USERNAMEYesNoNeo4j username
NEO4J_PASSWORDYesYesNeo4j password
NEO4J_DATABASENoNoNeo4j database name
NEO4J_NAMESPACENoNoTool namespace prefix
NEO4J_RESPONSE_TOKEN_LIMITNoNoMaximum tokens for read query responses
NEO4J_READ_TIMEOUTNoNoTimeout in seconds for read queries
NEO4J_READ_ONLYNoNoAllow only read-only queries (true/false)
NEO4J_SCHEMA_SAMPLE_SIZENoNoSchema sample size

Checks

CheckResultDetail
Source repository linkedPasshttps://github.com/neo4j-contrib/mcp-neo4j
Version pinnedPassEvery package has an explicit version
Secrets requestedInfoAsks for 1 secret: NEO4J_PASSWORD
Known package registryPassAll packages come from npm, PyPI, OCI, NuGet or MCPB
Namespace ownershipInfoName verified via GitHub account neo4j-contrib
Registry text aimed at the AIPassDescription and settings contain no hidden characters or instructions to the AI
Install scriptsPassmcp-neo4j-cypher 0.5.1 has no setup.py; nothing runs at install
Code red flagsPassRead 18 files in mcp-neo4j-cypher 0.5.1: no obfuscation, encoded execution, credential reads or data-collection endpoints found
Text aimed at the AIPassNo hidden characters or instructions to the AI in 18 files, including comments and the README

Code review: Pass, with notes

We read all 821 lines in 3 files of mcp-neo4j-cypher 0.5.1 on 2026-10-31, without running it.

Lets an AI read your Neo4j graph schema and run Cypher queries against the database you configure. It only talks to that database (plus a one-time tokenizer download if you set a token limit) and has no telemetry. Write access is on by default, and the write tool can change or delete anything without asking, so start it with --read-only unless you want the AI to edit your graph.

What we found

  • Note Read-only mode is off by default, so write_neo4j_cypher is available and runs any write Cypher (including DETACH DELETE of the whole graph) without confirmation. Set --read-only / NEO4J_READ_ONLY=true to remove the tool. mcp_neo4j_cypher/utils.py:282-297; server.py:225-269
  • Note read_neo4j_cypher blocks writes with a keyword regex (MERGE/CREATE/SET/DELETE/...) and also runs the query with RoutingControl.READ, so Neo4j's read access mode is the real enforcement. Read queries can still use LOAD CSV FROM 'http://...' or read-mode APOC procedures, which make the Neo4j server fetch arbitrary URLs. mcp_neo4j_cypher/server.py:32-37,194-205
  • Note On error, the full query and its params are logged and echoed back in the tool error. Sensitive parameter values would appear in logs. mcp_neo4j_cypher/server.py:218-223,264-269
  • Info sample_size is formatted into the APOC call, but it is a pydantic int, so this is not injectable. mcp_neo4j_cypher/server.py:84
  • Info HTTP/SSE mode binds 127.0.0.1 by default, has TrustedHost (localhost only) and CORS (no origins) middleware, but no authentication. mcp_neo4j_cypher/server.py:274-343
  • Info Falls back to the password 'password' when none is given (logs a warning). mcp_neo4j_cypher/utils.py:89-99
  • Info --token-limit is parsed as a string (no type=int), so using it from the CLI would raise a TypeError at truncation. This is a bug, not a security issue. server.py:347 calls async main() without arguments (dead code). mcp_neo4j_cypher/__init__.py:45; utils.py:250-251,408
  • Info pyproject.toml was not among the reviewed files; dependencies listed come from imports. Line counts use the manifest convention (newline count + 1 per file, i.e. the empty segment after a final newline is counted); every line of every file was read with the Read tool. (package)
Talks tothe configured Neo4j server (NEO4J_URL/NEO4J_URI, default bolt://localhost:7687): Cypher queries and params, username/password (on tool calls (driver connects lazily))
openaipublic.blob.core.windows.net (tiktoken encoding download): a download request for the gpt-4 tokenizer file; no user data (only if NEO4J_RESPONSE_TOKEN_LIMIT/--token-limit is set, on the first read query, unless the tiktoken cache already has the file (dependency behaviour))
Keys and settingsNEO4J_URL / NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD, NEO4J_DATABASE: the configured Neo4j server
NEO4J_NAMESPACE, NEO4J_TRANSPORT, NEO4J_MCP_SERVER_HOST/PORT/PATH, NEO4J_MCP_SERVER_ALLOW_ORIGINS, NEO4J_MCP_SERVER_ALLOWED_HOSTS, NEO4J_RESPONSE_TOKEN_LIMIT, NEO4J_READ_TIMEOUT, NEO4J_READ_ONLY, NEO4J_SCHEMA_SAMPLE_SIZE: not sent; local settings
Files on your machineNone by the package itself (no file reads or writes). tiktoken may cache its tokenizer file locally.
Runs programsNone. No shell, eval or dynamic imports.
TelemetryNone.
Toolsget_neo4j_schema, read_neo4j_cypher, write_neo4j_cypher (hidden when --read-only / NEO4J_READ_ONLY=true)
Tool descriptionsclean (short accurate descriptions; no hidden or invisible text)

This covers the package's own code only, not the 6 packages it depends on (fastmcp, mcp, neo4j, pydantic, starlette, tiktoken). A new version drops this review until we read it again.

Popularity & health: 76 / 100

Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.

Popularity29 / 40

989 GitHub stars, 10,897 downloads last week, 0 Hacker News posts (0 points). Best two of the three, each on a log scale.

Activity15 / 25

Last push 2026-09-09, last release 2026-04-10, 2 commits in 90 days.

Issue health12 / 15

64 closed of 81 issues.

Our checks20 / 20

0 warnings, each costing a fifth.

263 forks, 175 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.

What people say

No Hacker News threads link to its source code.

Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.

Facts

Registry nameio.github.neo4j-contrib/mcp-neo4j-cypher
PublisherGitHub account neo4j-contrib
How the name is verifiedName verified via GitHub account neo4j-contrib. The registry ties the name prefix to that account or domain; it does not check the code.
TypeLocal: runs on your machine from a package
Packagespypi mcp-neo4j-cypher 0.5.1 (stdio)
Version1.0.0
Published
Last updated
Source repositoryhttps://github.com/neo4j-contrib/mcp-neo4j
WebsiteNone linked
CategoryDatabases & data (assigned by keyword rule, not by hand)

Related servers in Databases & data