Neo4j MCP Canary β The canary goes first so the rest of us know what's coming
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Neo4j MCP Canary is a fast-moving, experimental release of the Neo4j MCP server for customers who want to explore emerging capabilities before they are considered for the official server.
Built on the source of the official Model Context Protocol (MCP) server for Neo4j, this variant is here for exploring potential new capabilities with experimentation.
As it is a labs project, be aware that:
You are welcome to contribute β we are always open to new ideas, especially in this canary channel.
Do not assume the canary will work for your situation. Test first.
get-schema uses apoc.meta.schema).β οΈ Known Issue: Neo4j 5.26.18 has a bug in APOC that causes the
get-schematool to fail. This is fixed in 5.26.19 and above. If you're on 5.26.18, please upgrade. See #136 for details.
The server performs several pre-flight checks at startup to ensure your environment is correctly configured.
STDIO Mode β Mandatory Requirements In STDIO mode, the server verifies the following. If any check fails (e.g. invalid configuration, incorrect credentials, missing APOC), the server will not start:
HTTP Mode β Verification Skipped In HTTP mode, startup verification checks are skipped because credentials come from per-request auth headers. The server starts immediately without connecting to Neo4j. The one exception is Query API mode: its minimum-version check runs at startup in both transport modes, since it only needs an unauthenticated GET and doesn't depend on per-request credentials.
Optional Requirements
If an optional dependency is missing, the server starts in adaptive mode. For instance, if the Graph Data Science (GDS) library is not detected, the server still launches but automatically disables GDS-dependent tools such as list-gds-procedures. All other tools remain available.
Releases: https://github.com/neo4j-labs/neo4j-mcp-canary/releases
neo4j-mcp-canary on your PATH.Mac / Linux:
On Mac, you may be warned the first time you try to run the binary. If so, approve it via System Settings β Privacy & Security.
Windows (PowerShell / cmd):
Verify the installation:
Should print the installed version.
Requires Go 1.25.3+ (see go.mod).
Build for your current platform with Task:
This produces bin/neo4j-mcp-canary. Without Task, the equivalent is:
Cross-compile by setting GOOS/GOARCH and disabling cgo (the codebase is
pure Go, so CGO_ENABLED=0 produces a fully static binary with no runtime
dependencies on the target machine):
To stamp a version into the binary (-v / --version), pass an ldflags
override β this is what the release pipeline does for tagged builds:
Without it, Version defaults to "development", which also disables
telemetry regardless of NEO4J_TELEMETRY (see Telemetry).
Official multi-platform release archives (including Windows) are built by
GoReleaser per .goreleaser.yaml β see
Installation (Binary) to download those instead of
building locally.
The Neo4j MCP Canary server supports two transport modes:
Authorization header cannot be used, a custom header name can be configured.| Aspect | STDIO | HTTP |
|---|---|---|
| Startup verification | Required β server verifies APOC, connectivity, queries | Skipped β server starts immediately |
| Credentials | Set via environment variables | Per-request via Bearer token or Basic Auth headers |
| Telemetry | Collects Neo4j version, edition, Cypher version at startup | Reports unknown-http-mode β per-request credentials prevent introspection |
See the Client Setup Guide for configuration instructions for both modes.
By default, there are four requests a MCP client can send without authentication when using HTTP(S) transport. Some integrations (AWS AgentCore, AWS Gateway, etc.) rely on this as an initial health-check mechanism:
pinginitializetools/listnotifications/initializeIf you do not need these, enforce authentication individually via the variables below.
| Environment Variable | CLI Flag | Default | Purpose |
|---|---|---|---|
NEO4J_HTTP_ALLOW_UNAUTHENTICATED_PING | --neo4j-http-allow-unauthenticated-ping | true | Allow unauthenticated ping health checks |
NEO4J_HTTP_ALLOW_UNAUTHENTICATED_TOOLS_LIST | --neo4j-http-allow-unauthenticated-tools-list | true | Allow unauthenticated tool listing |
NEO4J_HTTP_ALLOW_UNAUTHENTICATED_INITIALIZE | --neo4j-http-allow-unauthenticated-initialize | true | Allow unauthenticated initialize |
NEO4J_HTTP_ALLOW_UNAUTHENTICATED_NOTIFICATIONS_INITIALIZE | --neo4j-http-allow-unauthenticated-notifications-initialize | true | Allow unauthenticated notifications/initialize |
When using HTTP transport, enable TLS for secure communication via the variables below.
| Environment Variable | CLI Flag | Default | Purpose |
|---|---|---|---|
NEO4J_MCP_HTTP_TLS_ENABLED | --neo4j-http-tls-enabled | false | Enable TLS/HTTPS |
NEO4J_MCP_HTTP_TLS_CERT_FILE | --neo4j-http-tls-cert-file | β | Path to TLS certificate (required w/ TLS) |
NEO4J_MCP_HTTP_TLS_KEY_FILE | --neo4j-http-tls-key-file | β | Path to TLS private key (required w/ TLS) |
NEO4J_MCP_HTTP_PORT | --neo4j-http-port | 443 with TLS, 80 without | HTTP server port |
NEO4J_HTTP_AUTH_HEADER_NAME | --neo4j-http-auth-header-name | Authorization | Header name to read credentials from |
Security Configuration
Example
Production Usage: use certificates from a trusted CA (Let's Encrypt, your organisation's CA, etc.) for production deployments.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/neo4j-mcp-canary)<a href="https://allmcps.com/mcp/neo4j-mcp-canary"><img src="https://allmcps.com/api/badge/neo4j-mcp-canary?style=directory" alt="Neo4j MCP Canary on AllMCPs" /></a>