io.github.neo4j-labs/neo4j-mcp-canary
OfficialNeo4j MCP Canary — El canario va primero para que el resto sepamos lo que viene
Neo4j MCP Canary es una versión experimental y de evolución rápida del servidor MCP de Neo4j para clientes que quieren explorar capacidades emergentes antes de que se consideren para el servidor oficial.
Construida sobre el código fuente del servidor oficial del Model Context Protocol (MCP) para Neo4j, esta variante está aquí para explorar posibles capacidades nuevas mediante experimentación.
Al ser un proyecto de laboratorio, ten en cuenta que:
No cuenta con soporte.
Puede contener cambios incompatibles entre sus propias versiones y con el servidor oficial de Neo4j MCP.
Debe probarse antes de usarse.
Eres bienvenido a contribuir — siempre estamos abiertos a nuevas ideas, especialmente en este canal canario.
No des por hecho que el canario funcionará en tu situación. Prueba primero.
Requisitos previos
Una instancia de base de datos Neo4j en ejecución; las opciones incluyen Aura, Neo4j Desktop o autogestionada.
El plugin APOC instalado en la instancia de Neo4j (obligatorio:
get-schemausaapoc.meta.schema).Cualquier cliente compatible con MCP (p. ej. VSCode con soporte MCP).
⚠️ Problema conocido: Neo4j 5.26.18 tiene un error en APOC que hace que la herramienta
get-schemafalle. Esto se corrige en 5.26.19 y versiones posteriores. Si estás en 5.26.18, actualiza. Consulta #136 para más detalles.
Related MCP server: FastMCP Production-Ready Server
Comprobaciones de inicio y funcionamiento adaptativo
El servidor realiza varias comprobaciones previas al inicio para asegurarse de que tu entorno está configurado correctamente.
Modo STDIO — requisitos obligatorios
En modo STDIO, el servidor verifica lo siguiente. Si falla alguna comprobación (p. ej. configuración no válida, credenciales incorrectas, APOC ausente), el servidor no se iniciará:
Una conexión válida a tu instancia de Neo4j.
La capacidad de ejecutar consultas.
La presencia del plugin APOC.
Modo HTTP — verificación omitida
En modo HTTP, las comprobaciones de verificación de inicio se omiten porque las credenciales provienen de los encabezados de autenticación de cada solicitud. El servidor se inicia inmediatamente sin conectarse a Neo4j. La única excepción es el modo Query API: su comprobación de versión mínima se ejecuta al inicio en ambos modos de transporte, ya que solo necesita un GET sin autenticación y no depende de credenciales por solicitud.
Requisitos opcionales
Si falta una dependencia opcional, el servidor se inicia en modo adaptativo. Por ejemplo, si no se detecta la librería Graph Data Science (GDS), el servidor se lanza igualmente, pero desactiva automáticamente las herramientas dependientes de GDS, como list-gds-procedures. El resto de herramientas siguen disponibles.
Instalación (binario)
Lanzamientos: https://github.com/neo4j-labs/neo4j-mcp-canary/releases
Descarga el archivo comprimido para tu sistema operativo/arquitectura.
Extrae y coloca
neo4j-mcp-canaryen tuPATH.
Mac / Linux:
En Mac, es posible que se te avise la primera vez que intentes ejecutar el binario. Si es así, apruébalo mediante Ajustes del Sistema → Privacidad y seguridad.
chmod +x neo4j-mcp-canary
sudo mv neo4j-mcp-canary /usr/local/bin/Windows (PowerShell / cmd):
move neo4j-mcp-canary.exe C:\Windows\System32Verifica la instalación:
neo4j-mcp-canary -vDebería imprimir la versión instalada.
Compilación desde el código fuente
Requiere Go 1.25.3+ (consulta go.mod).
Compila para tu plataforma actual con Task:
task buildEsto produce bin/neo4j-mcp-canary. Sin Task, el equivalente es:
go build -C cmd/neo4j-mcp -o ../../bin/Compilación cruzada para macOS / Linux
Compila de forma cruzada estableciendo GOOS/GOARCH y desactivando cgo (el código es Go puro, por lo que CGO_ENABLED=0 produce un binario totalmente estático sin dependencias de ejecución en la máquina de destino):
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_darwin_amd64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_darwin_arm64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_linux_amd64
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_linux_arm64Para incrustar una versión en el binario (-v / --version), pasa una anulación de ldflags — esto es lo que hace la canalización de lanzamiento para las compilaciones etiquetadas:
go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary \
-ldflags "-X 'main.Version=$(git rev-parse --short HEAD)'"Sin ello, Version toma por defecto el valor "development", lo que también desactiva la telemetría independientemente de NEO4J_TELEMETRY (consulta Telemetría).
Los archivos de lanzamiento oficiales multiplataforma (incluido Windows) los genera GoReleaser según .goreleaser.yaml — consulta Instalación (binario) para descargarlos en lugar de compilarlos localmente.
Modos de transporte
El servidor Neo4j MCP Canary admite dos modos de transporte:
STDIO (predeterminado): comunicación MCP estándar a través de stdin/stdout para clientes de escritorio (Claude Desktop, VSCode).
HTTP: servidor HTTP RESTful con token Bearer por solicitud o autenticación básica para clientes basados en web y escenarios multiinquilino. Cuando no se puede usar el encabezado
Authorizationestándar, se puede configurar un nombre de encabezado personalizado.
Diferencias clave
Aspecto | STDIO | HTTP |
Verificación de inicio | Obligatoria — el servidor verifica APOC, conectividad y consultas | Omitida — el servidor se inicia inmediatamente |
Credenciales | Se establecen mediante variables de entorno | Por solicitud mediante token Bearer o encabezados de autenticación básica |
Telemetría | Recopila la versión de Neo4j, la edición y la versión de Cypher al inicio | Informa |
Consulta la Guía de configuración del cliente para obtener instrucciones de configuración para ambos modos.
Solicitudes de cliente MCP sin autenticación
De forma predeterminada, hay cuatro solicitudes que un cliente MCP puede enviar sin autenticación cuando usa el transporte HTTP(S). Algunas integraciones (AWS AgentCore, AWS Gateway, etc.) dependen de esto como mecanismo inicial de comprobación de estado:
pinginitializetools/listnotifications/initialize
Si no las necesitas, aplica la autenticación individualmente mediante las variables siguientes.
Variable de entorno | Indicador de CLI | Predeterminado | Propósito |
|
|
| Permitir comprobaciones de estado ping sin autenticación |
|
|
| Permitir el listado de herramientas sin autenticación |
|
|
| Permitir initialize sin autenticación |
|
|
| Permitir |
Configuración TLS/HTTPS
Cuando uses el transporte HTTP, habilita TLS para una comunicación segura mediante las variables siguientes.
Variable de entorno | Indicador de CLI | Predeterminado | Propósito |
|
|
| Habilitar TLS/HTTPS |
|
| — | Ruta al certificado TLS (obligatorio con TLS) |
|
| — | Ruta a la clave privada TLS (obligatorio con TLS) |
|
|
| Puerto del servidor HTTP |
|
|
| Nombre del encabezado del que leer las credenciales |
Configuración de seguridad
Versión mínima de TLS: TLS 1.2 (se negocia TLS 1.3 cuando está disponible)
Conjuntos de cifrado: los conjuntos de cifrado seguros predeterminados de Go
Puerto predeterminado: usa automáticamente el 443 cuando TLS está habilitado
Ejemplo
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_TRANSPORT_MODE="http"
export NEO4J_MCP_HTTP_TLS_ENABLED="true"
export NEO4J_MCP_HTTP_TLS_CERT_FILE="/path/to/cert.pem"
export NEO4J_MCP_HTTP_TLS_KEY_FILE="/path/to/key.pem"
neo4j-mcp-canary
# Server listens on https://127.0.0.1:443 by defaultUso en producción: usa certificados de una CA de confianza (Let's Encrypt, la CA de tu organización, etc.) para despliegues en producción.
Para obtener instrucciones detalladas sobre generación de certificados, pruebas de TLS y despliegue en producción, consulta CONTRIBUTING.md.
Opciones de configuración
El servidor neo4j-mcp-canary se configura mediante variables de entorno, indicadores de CLI y/o un archivo de configuración opcional. Los indicadores de CLI tienen prioridad sobre las variables de entorno, y estas la tienen sobre un archivo de configuración opcional.
Variables de entorno
Conexión principal y comportamiento:
Variable de entorno | Predeterminado | Propósito |
| — | URI de conexión a Neo4j (obligatoria) |
| — | Nombre de usuario de la base de datos (obligatorio en modo STDIO; debe estar sin definir en modo HTTP) |
| — | Contraseña de la base de datos (obligatoria en modo STDIO; debe estar sin definir en modo HTTP) |
|
| Nombre de la base de datos |
|
| Cuando es |
|
| Habilitar/deshabilitar la telemetría anónima |
|
| Nodos por etiqueta que APOC examina al inferir el esquema |
|
|
|
|
|
|
|
| Formato de respuesta de las herramientas enviado al cliente LLM: |
|
|
|
Conexión a través de la Query API en lugar de Bolt
El esquema de NEO4J_URI determina qué protocolo de red usa el servidor para comunicarse con Neo4j — no se necesita ningún indicador adicional.
bolt://,bolt+s://,neo4j://,neo4j+s://, etc. → el controlador Bolt (predeterminado, comportamiento sin cambios).http://ohttps://→ la Neo4j Query API, la interfaz de consultas basada en HTTP de Neo4j. Útil para despliegues que solo exponen HTTP o que prefieren no usar Bolt.
Query API mode requires Neo4j 2026.07 or newer (calendar-versioned
releases) or 5.27-aura or newer (classic-versioned Aura releases only —
a bare classic version with no -aura suffix is not supported). This floor
is one release past the Query API's own general availability (2026.06):
read-cypher's write-query rejection depends on the queryType field in the
query response, which Neo4j only introduced in 2026.07 — a 2026.06 server
has no reliable signal to classify a query as read-only before running it.
The server checks the connected instance's reported version against this
floor at startup (via an unauthenticated GET to the base URI) and refuses
to start if it's too old, with an error naming the version it found and the
minimum required.
NEO4J_USERNAME/NEO4J_PASSWORD and per-request Basic/Bearer credentials
work the same way in Query API mode as they do for Bolt — see
Transport Modes and
Authentication Methods (HTTP Mode).
Cypher execution safeguards (see Cypher Execution Safeguards):
Environment Variable | Default | Purpose |
|
| Per-call row cap on |
|
| Per-call byte cap (~900 KB) on the response envelope; |
|
| Execution timeout in seconds; |
|
| EXPLAIN-time planner estimate above which |
HTTP transport, TLS, and auth (see tables above).
CLI Flags
You can override any environment variable using CLI flags:
neo4j-mcp-canary \
--neo4j-uri "bolt://localhost:7687" \
--neo4j-username "neo4j" \
--neo4j-password "password" \
--neo4j-database "neo4j" \
--neo4j-read-only false \
--neo4j-telemetry trueAvailable flags:
Connection & behaviour
--neo4j-uri— overridesNEO4J_URI--neo4j-username— overridesNEO4J_USERNAME--neo4j-password— overridesNEO4J_PASSWORD--neo4j-database— overridesNEO4J_DATABASE--neo4j-read-only— overridesNEO4J_READ_ONLY(true/false)--neo4j-telemetry— overridesNEO4J_TELEMETRY(true/false)--neo4j-schema-sample-size— overridesNEO4J_SCHEMA_SAMPLE_SIZE--neo4j-output-format— overridesNEO4J_OUTPUT_FORMAT(json/toon)
Cypher execution safeguards
--neo4j-cypher-max-rows— overridesNEO4J_CYPHER_MAX_ROWS(0disables)--neo4j-cypher-max-bytes— overridesNEO4J_CYPHER_MAX_BYTES(0disables)--neo4j-cypher-timeout— overridesNEO4J_CYPHER_TIMEOUT(seconds;0disables)--neo4j-cypher-max-estimated-rows— overridesNEO4J_CYPHER_MAX_ESTIMATED_ROWS(0disables)
Transport / HTTP
--neo4j-transport-mode—stdioorhttp--neo4j-http-host— overridesNEO4J_MCP_HTTP_HOST--neo4j-http-port— overridesNEO4J_MCP_HTTP_PORT--neo4j-http-allowed-origins— overridesNEO4J_MCP_HTTP_ALLOWED_ORIGINS(comma-separated CORS origins)--neo4j-http-tls-enabled— overridesNEO4J_MCP_HTTP_TLS_ENABLED--neo4j-http-tls-cert-file— overridesNEO4J_MCP_HTTP_TLS_CERT_FILE--neo4j-http-tls-key-file— overridesNEO4J_MCP_HTTP_TLS_KEY_FILE--neo4j-http-auth-header-name— overridesNEO4J_HTTP_AUTH_HEADER_NAME--neo4j-http-allow-unauthenticated-ping— overridesNEO4J_HTTP_ALLOW_UNAUTHENTICATED_PING--neo4j-http-allow-unauthenticated-tools-list— overridesNEO4J_HTTP_ALLOW_UNAUTHENTICATED_TOOLS_LIST--neo4j-http-allow-unauthenticated-initialize— overridesNEO4J_HTTP_ALLOW_UNAUTHENTICATED_INITIALIZE--neo4j-http-allow-unauthenticated-notifications-initialize— overridesNEO4J_HTTP_ALLOW_UNAUTHENTICATED_NOTIFICATIONS_INITIALIZE
Run neo4j-mcp-canary --help to see the complete list with descriptions.
Configuration File
As a lowest-priority alternative to environment variables, neo4j-mcp-canary can read configuration from an optional JSON or YAML file:
neo4j-mcp-canary --config-file /etc/neo4j-mcp/config.yaml
# or
NEO4J_CONFIG_FILE=/etc/neo4j-mcp/config.yaml neo4j-mcp-canaryKeys are the lower-cased form of the environment variable they correspond to:
neo4j_uri: bolt://localhost:7687
neo4j_username: neo4j
neo4j_password: password
neo4j_read_only: false
neo4j_transport_mode: http
neo4j_http_tls_enabled: true
neo4j_cypher_max_rows: 500The equivalent JSON is also accepted (.json extension). Only scalar values (strings, numbers, booleans) are supported — a nested object or list is a startup error. Values from CLI flags or environment variables always take precedence over the config file; a --config-file that fails to read or parse is a startup error.
Adding a new configuration parameter to the server (env var + CLI flag + config-file key, all at once) means adding one entry to the fields slice in internal/config/schema.go — see that file's doc comments for the shape.
Response Format (JSON vs TOON)
Tool responses (read-cypher, write-cypher, get-schema, list-gds-procedures) are rendered as JSON by default. Set NEO4J_OUTPUT_FORMAT (or --neo4j-output-format) to toon to render them as TOON (Token-Oriented Object Notation) instead — a compact, still human-readable format that cuts LLM token usage versus JSON, especially for the tabular row shapes these tools return:
neo4j-mcp-canary --neo4j-output-format toon
# or
NEO4J_OUTPUT_FORMAT=toon neo4j-mcp-canaryA read-cypher result as JSON:
{
"rows": [
{ "name": "Alice", "age": 30 },
{ "name": "Bob", "age": 25 }
],
"rowCount": 2,
"truncated": false
}The same result as TOON:
rowCount: 2
rows[2]{age,name}:
30,Alice
25,Bob
truncated: falseAn invalid value falls back to json with a warning on stderr, the same way NEO4J_LOG_FORMAT does.
Cypher Execution Safeguards
read-cypher and write-cypher are protected by four layered safeguards that together keep an overeager LLM from hanging the MCP transport or exhausting the database. Each layer catches a different failure mode; together they act as defence in depth.
Layer | Setting | Default | When it fires |
Planner estimate |
|
| Before execution — query refused if the planner's root |
Execution timeout |
|
| During execution — query cancelled after the deadline |
Row cap |
|
| During streaming — response truncated at the row limit |
Byte cap |
|
| During streaming — response truncated when the envelope grows past ~900 KB |
Set any value to 0 to disable that specific layer.
Truncation envelope
When either the row cap or the byte cap fires, the tool returns the rows it has already collected plus a truncation envelope:
{
"rows": [ /* ... */ ],
"rowCount": 1000,
"truncated": true,
"truncationReason": "rows",
"maxRows": 1000,
"hint": "Results were truncated at 1000 rows. Add a LIMIT clause or a more selective filter and retry for a complete result."
}Callers (including LLM agents) can read truncated / truncationReason / hint programmatically and retry with a tighter query rather than seeing an opaque transport-level failure.
Timeout and cancellation errors
When NEO4J_CYPHER_TIMEOUT fires, the tool returns a classified error that names the configured limit and offers tool-specific remediation (bound variable-length patterns, add WHERE filters, or LIMIT for read-cypher; reduce batch size, narrow the MATCH, or use apoc.periodic.iterate for write-cypher). Caller cancellation (as distinct from timeout) surfaces as a concise cancelled message without remediation guidance.
Planner estimate refusal
The planner-estimate guard reads the root EstimatedRows of an EXPLAIN plan before the query runs. Because Neo4j folds LIMIT into the root estimate, a legitimate MATCH ... LIMIT 100 query passes cleanly with an estimate of ~100, while a bare MATCH on a multi-million-row label is refused before it starts.
Authentication Methods (HTTP Mode)
When using HTTP transport mode, the Neo4j MCP Canary server supports two authentication methods to accommodate different deployment scenarios.
Bearer Token Authentication
Bearer token authentication enables seamless integration with Neo4j Enterprise Edition and Neo4j Aura environments that use SSO/OAuth/OIDC for identity management. This method is ideal for:
Enterprise deployments with centralised identity providers (Okta, Azure AD, etc.)
Neo4j Aura databases configured with SSO
Organisations requiring OAuth 2.0 compliance
Multi-factor authentication scenarios
Example:
curl -X POST http://localhost:8080/mcp \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'The bearer token is obtained from your identity provider and passed to Neo4j for authentication. The MCP server acts as a pass-through, forwarding the token to Neo4j's authentication system.
Basic Authentication
Traditional username/password authentication suitable for:
Neo4j Community Edition
Development and testing environments
Direct database credentials without SSO
Example:
curl -X POST http://localhost:8080/mcp \
-u neo4j:password \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Client Configuration
To configure MCP clients (VSCode, Claude Desktop, etc.) to use the Neo4j MCP Canary server, see:
📘 Client Setup Guide – Complete configuration for STDIO and HTTP modes.
Tools & Usage
Provided tools:
Tool | ReadOnly | Purpose | Notes |
|
| Introspect labels, relationship types, property keys | Uses |
|
| Execute arbitrary read-only Cypher | Rejects writes, schema/admin DDL, |
|
| Execute arbitrary Cypher (write mode) | Caution: LLM-generated queries can cause harm. Use only in development environments. Not registered when |
|
| List GDS procedures available in the Neo4j instance | Disabled automatically if GDS is not installed. |
|
| Submit free-text feedback about the MCP server itself | For feedback on the server (tools, behaviour, docs), not on Cypher/database issues. Limited to 300 characters. See Feedback. |
Read-only mode flag
Enable read-only mode by setting NEO4J_READ_ONLY=true (accepted: true / false; default: false).
You can also use the CLI flag:
neo4j-mcp-canary \
--neo4j-uri "bolt://localhost:7687" \
--neo4j-username "neo4j" \
--neo4j-password "password" \
--neo4j-read-only trueWhen enabled, write tools (e.g. write-cypher) are not exposed to clients.
Query classification
read-cypher prepends EXPLAIN to the caller's query to classify it as read or write before executing. Consequences:
Operaciones de escritura (
CREATE,MERGE,DELETE,SET,REMOVE, ...) — rechazadas con un mensaje que dirige al llamante awrite-cypher.Operaciones de esquema/DDL (
CREATE INDEX,DROP CONSTRAINT, ...) — rechazadas, mismo mensaje.Comandos de administración (
SHOW USERS,SHOW DATABASES, ...) — rechazados, mismo mensaje.Prefijo
EXPLAIN— rechazado con un mensaje específico que indica que la protección contra consultas descontroladas ya la proporcionan el guardián de estimación del planificador y el tiempo de espera de ejecución, y que apunta awrite-cypherpara un plan perfilado.Prefijo
PROFILE— rechazado con un mensaje que dirige al llamante awrite-cypher.Comandos
SHOWde solo lectura (SHOW INDEXES,SHOW CONSTRAINTS,SHOW PROCEDURES,SHOW FUNCTIONS) — permitidos.
Si la consulta envuelta produce un error de sintaxis, el servidor elimina el prefijo interno EXPLAIN del texto del error, del desplazamiento de columna y de la alineación del cursor antes de devolverlo, de modo que el error se lea como si la consulta original del llamante se hubiera enviado directamente.
Formato de respuesta para read-cypher / write-cypher
Los tipos del driver se envuelven en estructuras JSON en camelCase que siguen las convenciones de Cypher:
Nodos:
{ "elementId": "...", "labels": [...], "properties": {...} }Relaciones:
{ "elementId": "...", "startElementId": "...", "endElementId": "...", "type": "...", "properties": {...} }Caminos:
{ "nodes": [...], "relationships": [...] }Puntos:
{ "x": ..., "y": ..., "srid": ... }(yzpara 3D)Date / Time / DateTime / LocalTime / LocalDateTime / Duration: cadenas ISO 8601
Los identificadores numéricos obsoletos id / startId / endId no se exponen — elementId / startElementId / endElementId son los únicos identificadores devueltos.
Comentarios
give-feedback permite a un agente enviar comentarios de texto libre sobre el propio servidor MCP — positivos o negativos — como un único argumento de cadena feedback, limitado a 300 caracteres (aplicado tanto en el esquema de herramienta anunciado como por el manejador, en caso de que un cliente no valide el esquema antes de enviar). Está pensado para comentarios sobre las herramientas, el comportamiento o la documentación del servidor, no para informar de errores de Cypher o de la base de datos.
Los comentarios se envían como un evento de Mixpanel junto con la otra telemetría del servidor, por lo que solo se registran cuando la telemetría está activada (consulta Telemetría) — la llamada a la herramienta en sí siempre tiene éxito en cualquier caso.
Guía de uso
Lecciones de las pruebas canary que ayudan a un LLM (o a un humano) a sacar el máximo partido a read-cypher:
Agrega en la base de datos.
count,sum,avg,collect,reduce,percentileCont,stDevy reducciones similares se condensan en una sola fila y no se ven afectadas por el límite de filas. Una consulta comoUNWIND range(1, 50000) AS i RETURN sum(i)se ejecuta sin problemas; el mismo rango transmitido fila a fila se trunca en el límite de filas.Usa siempre
LIMITen consultas exploratorias. El límite de filas truncará los resultados de unMATCHsin LIMIT; el campohintdel envoltorio de truncamiento indicará al llamante que añada unLIMIT. Prefiere unLIMITque hayas elegido tú a uno impuesto por el servidor.Acota la proyección de
RETURNpara nodos con muchas propiedades. Cuando un registro contiene muchas propiedades (p. ej., un nodo Company completo con 19 campos), el límite de bytes se activa antes que el de filas. Devuelve solo los campos que necesites (RETURN c.name, c.companyNumber) en lugar del nodo completo.Usa parámetros, incluidos los mapas anidados. Los marcadores de posición de parámetros (
$name) se vinculan desde el objetoparams; el acceso anidado funciona ($config.thresholds.pr). La ausencia de parámetros obligatorios produce un error claroParameterMissing; los parámetros adicionales se ignoran silenciosamente.Sé explícito con los tipos en las comparaciones. Las comparaciones entre tipos distintos, como
t.amount > "foo", se evalúan como null y filtran silenciosamente todo — sin error, solo un conjunto de resultados vacío. Valida los tipos de los parámetros entrantes en el lado del llamante cuando la forma del resultado te sorprenda.SHOW INDEXES/SHOW CONSTRAINTSestán permitidos. Útiles antes de escribir una consulta que dependa de un índice, o para depurar por qué una coincidencia es lenta.EXPLAINyPROFILEno se exponen enread-cypher. La protección contra consultas descontroladas ya la gestionan el guardián de estimación del planificador y el tiempo de espera de ejecución. Si necesitas un plan perfilado con estadísticas de ejecución, usawrite-cypherconPROFILE.Cuidado con las cargas útiles duplicadas al devolver caminos.
RETURN p, nodes(p), relationships(p)triplica la carga útil serializada. Devuelve el camino o sus componentes, no ambos.Las consultas de larga duración devuelven un error clasificado. Cuando
NEO4J_CYPHER_TIMEOUTse activa, el error menciona el valor del tiempo de espera y sugiere medidas correctivas (acotar patrones de longitud variable, añadir filtrosWHERE, usarLIMIT) en lugar de uncontext deadline exceededcrudo del driver.OPTIONAL MATCHpara datos faltantes. Cuando se busca por ID y algunos IDs pueden no existir,OPTIONAL MATCHdevuelve nulls para los que no se encuentran en lugar de eliminar filas — mejor para búsquedas por lotes.Los valores por defecto están calibrados, no son arbitrarios. La estimación del planificador de
1000filas /~900 KB/30s/1Mcubre la gran mayoría de las consultas exploratorias y de producción. Auméntalos para cargas de trabajo de exportación masiva; redúcelos cuando atiendas despliegues de agentes de alto tráfico.
Ejemplos de prompts en lenguaje natural
Prompts para probar en Copilot o en cualquier otro cliente MCP:
"¿Qué contiene mi instancia de Neo4j? Enumera todas las etiquetas de nodo, los tipos de relación y las claves de propiedad."
"Encuentra todos los nodos Person y muestra sus relaciones principales, limitado a 50 resultados."
"¿Qué índices y restricciones existen en mi base de datos?"
"Resume el grafo de transacciones: recuento total, importe medio y los 5 clientes principales por PageRank."
Consejos de seguridad
Usa un usuario de Neo4j con permisos restringidos para la exploración.
Revisa el Cypher generado por LLM antes de ejecutarlo en bases de datos de producción.
Mantén
NEO4J_READ_ONLY=truepara cualquier despliegue que no deba mutar el grafo.Deja las salvaguardas de Cypher en sus valores por defecto a menos que tengas una razón específica para cambiarlas.
Registro
El servidor utiliza registro estructurado con soporte para múltiples niveles de registro y formatos de salida.
Configuración
Nivel de registro (NEO4J_LOG_LEVEL, valor por defecto: info)
Controla la verbosidad. Soporta todos los niveles de registro de MCP: debug, info, notice, warning, error, critical, alert, emergency.
Formato de registro (NEO4J_LOG_FORMAT, valor por defecto: text)
text— legible para humanos (valor por defecto)json— JSON estructurado (útil para la agregación de registros)
Telemetría
Por defecto, neo4j-mcp-canary recopila datos de uso anónimos para ayudar a mejorar el producto. Esto incluye información como las herramientas utilizadas, el sistema operativo y la arquitectura de la CPU. No se recopila información personal ni sensible.
Para desactivar la telemetría, establece NEO4J_TELEMETRY=false (valores aceptados: true / false; valor por defecto: true). También puedes usar la bandera de CLI --neo4j-telemetry.
Documentación
📘 Guía de configuración del cliente – Configura VSCode, Claude Desktop y otros clientes MCP (modos STDIO y HTTP) 📚 Guía de contribución – Flujo de trabajo de contribución, entorno de desarrollo, mocks y pruebas
Problemas / comentarios: abre un issue de GitHub con detalles de reproducción (omite datos sensibles).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for Appcircle mobile CI/CD platform.
MCP server for Product Management
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that enables LLMs to perform semantic and fulltext searches within Neo4j while executing complex, search-augmented Cypher queries for GraphRAG applications. It provides tools for database schema discovery and supports multi-provider embeddings to facilitate advanced graph traversals.52MIT
- FlicenseNot gradedqualityDmaintenanceA production-ready MCP server that enables users to interact with Neo4j databases through health checks and Cypher query tools. It features a structured, containerized architecture with built-in support for Azure deployments and environment-driven configuration.-
- AlicenseNot gradedqualityCmaintenanceMCP server for Neo4j graph database operations, enabling Cypher queries, node/relationship management, and schema discovery.1BSD 3-Clause
- AlicenseNot gradedqualityCmaintenanceProduction-ready MCP server for Neo4j graph databases, enabling natural language to Cypher query translation with enterprise security and async performance.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/neo4j-labs/neo4j-mcp-canary'
If you have feedback or need assistance with the MCP directory API, please join our Discord server