The Neo4j GraphRAG MCP Server enables LLMs to interact with Neo4j databases through semantic search, fulltext search, graph traversal, and write operations for GraphRAG applications.
Schema Discovery (
get_neo4j_schema_and_indexes): Retrieve the graph schema, vector indexes, fulltext indexes, and property size warnings to guide efficient querying.Semantic Vector Search (
vector_search): Search Neo4j vector indexes using natural language queries embedded via LiteLLM (OpenAI, Azure, Bedrock, Cohere, Ollama, etc.), with support for pre-filtering by property values.Fulltext Keyword Search (
fulltext_search): Search fulltext indexes using Lucene query syntax, including boolean operators (AND/OR), wildcards, fuzzy matching, and exact phrases.Read-Only Cypher Queries (
read_neo4j_cypher): Execute arbitrary read-only Cypher queries with optional parameters.Search-Augmented Cypher Queries (
search_cypher_query): Combine vector and/or fulltext search with Cypher graph traversal using$vector_embeddingand$fulltext_textplaceholders for pattern matching, filtering, and aggregation.Write Cypher Queries (
write_neo4j_cypher): Execute write operations (CREATE, MERGE, SET, DELETE, etc.) with a summary of changes made.Multimodal Image Retrieval (
read_node_image): Retrieve base64-encoded images stored on Neo4j nodes as inline images, enabling visual analysis alongside node properties.
All responses include automatic sanitization and token-limit protection to ensure production-ready performance.
Supports Amazon Bedrock embedding models for performing search-augmented Cypher queries and vector searches.
Extends Neo4j databases with vector search, fulltext search, and the ability to execute read-only Cypher queries for GraphRAG applications.
Enables local semantic search capabilities by utilizing Ollama for embedding generation.
Integrates OpenAI embedding models to enable semantic similarity searches within Neo4j vector indexes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Neo4j GraphRAG MCP ServerFind movies about space travel and list their directors and genres"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Neo4j GraphRAG MCP Server
An MCP server that extends Neo4j with vector search, fulltext search, search-augmented Cypher queries, write operations, and multimodal image retrieval for GraphRAG applications.
Inspired by the Neo4j Labs server. This server adds vector search, fulltext search, and the innovative
search_cypher_querytool for combining search with graph traversal.
Overview
This server enables LLMs to:
๐ Search Neo4j vector indexes using semantic similarity
๐ Search fulltext indexes with Lucene syntax
โก Combine search with Cypher queries via
search_cypher_query๐ธ๏ธ Execute read-only Cypher queries
โ๏ธ Execute write Cypher queries (CREATE, MERGE, SET, DELETE)
๐ผ๏ธ Retrieve images stored in Neo4j nodes (multimodal โ returns the image directly to the LLM)
Built on LiteLLM for multi-provider embedding support (OpenAI, Azure, Bedrock, Cohere, etc.).
Related: For the official Neo4j MCP Server, see neo4j/mcp. For Neo4j Labs MCP Servers (Cypher, Memory, Data Modeling), see neo4j-contrib/mcp-neo4j.
Installation
# Using pip
pip install mcp-neo4j-graphrag
# Using uv (recommended)
uv pip install mcp-neo4j-graphragConfiguration
Claude Desktop
Edit the configuration file:
macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"neo4j-graphrag": {
"command": "uvx",
"args": ["mcp-neo4j-graphrag"],
"env": {
"NEO4J_URI": "neo4j+s://demo.neo4jlabs.com",
"NEO4J_USERNAME": "recommendations",
"NEO4J_PASSWORD": "recommendations",
"NEO4J_DATABASE": "recommendations",
"OPENAI_API_KEY": "sk-...",
"EMBEDDING_MODEL": "text-embedding-ada-002"
}
}
}
}Note:
uvxautomatically downloads and runs the package from PyPI. No local installation needed!
Cursor
Edit ~/.cursor/mcp.json or .cursor/mcp.json in your project. Use the same configuration as above.
Reload Configuration
Claude Desktop: Quit and restart the application
Cursor: Reload the window (Cmd/Ctrl + Shift + P โ "Reload Window")
Tools
The examples below use the Neo4j demo (movies, actors, directors), which is the same database referenced in the Configuration section above.
get_neo4j_schema_and_indexes
Discover the graph schema, vector indexes, and fulltext indexes.
๐ก The agent should automatically call this tool first before using other tools to understand the schema and indexes of the database.
Example prompt:
"What is inside the database?"
vector_search
Semantic similarity search using embeddings.
Parameters: text_query, vector_index, top_k, return_properties, pre_filter
Use pre_filter to restrict results to nodes matching exact property values (e.g. {"genre": "Drama"}).
Example prompt:
"What movies are about artificial intelligence?"
fulltext_search
Keyword search with Lucene syntax (AND, OR, wildcards, fuzzy).
Parameters: text_query, fulltext_index, top_k, return_properties
Example prompt:
"Find movies with 'space' or 'galaxy' in the title or plot"
read_neo4j_cypher
Execute read-only Cypher queries.
Parameters: query, params
Example prompt:
"Show me all genres and how many movies are in each"
search_cypher_query
Combine vector/fulltext search with Cypher queries. Use $vector_embedding and $fulltext_text placeholders.
Parameters: cypher_query, vector_query, fulltext_query, params
Example prompt:
"In one query, what are the directors and genres of the movies about 'time travel adventure'?"
write_neo4j_cypher
Execute write Cypher queries (CREATE, MERGE, SET, DELETE, etc.). Returns a summary of counters (nodes created, properties set, etc.).
Parameters: query, params
Example prompt:
"Add a user rating of 4.5 for the movie 'Inception'"
read_node_image
Retrieve a base64-encoded image stored on a Neo4j node and return it as an inline image. Useful for graph databases that store page scans, diagrams, or photos directly on nodes. The LLM receives both the image and selected node properties, enabling visual analysis of graph-stored content.
Parameters: node_element_id, image_property, mime_type, return_properties
Note: This tool requires a database that stores images directly on nodes (as base64). The demo
recommendationsdatabase does not โ it stores external poster URLs instead. See docs/ADVANCED.md for a full example using a document graph where page images are embedded on nodes.
Example prompt:
"Show me page 3 of the AbbVie pipeline document and describe what you see"
Environment Variables
Variable | Required | Default | Description |
| Yes |
| Neo4j connection URI |
| Yes |
| Neo4j username |
| Yes |
| Neo4j password |
| No |
| Database name |
| No |
| Embedding model (see below) |
Embedding Providers
Set EMBEDDING_MODEL and the corresponding API key:
Provider | Model Format | API Key Variable |
OpenAI |
|
|
Azure |
|
|
Bedrock |
|
|
Cohere |
|
|
Ollama |
| (none - local) |
Advanced Topics
See docs/ADVANCED.md for:
Comparison with Neo4j Labs
mcp-neo4j-cypherserverProduction features (output sanitization, token limits)
Detailed tool documentation including
write_neo4j_cypher,read_node_image, andvector_searchfiltering
License
MIT License