MCP Connector

Query Neo4j with Natural Language

MCP server letting Claude query, create nodes in, and connect relationships in a Neo4j graph database via natural language.

Works with neo4jclaude

Maintainer of this project? Claim this page to edit the listing.


90
Spark score
out of 100
Updated 4 months ago
Version 0.2.0
Models

Add to Favorites

Why it matters

Interact with your Neo4j graph database using natural language. This asset enables you to execute complex Cypher queries and manage graph data through intuitive conversational prompts.

Outcomes

What it gets done

01

Execute any Cypher query via natural language prompts.

02

Create new nodes and relationships within your Neo4j graph.

03

Retrieve and analyze graph data through conversational requests.

04

Connect to Neo4j Enterprise Edition databases with custom configurations.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-neo4j | bash

Capabilities

Tools your agent gets

execute_query

Execute Cypher queries against the Neo4j database supporting READ, CREATE, UPDATE, and DELETE operations.

create_node

Create a new node in the graph database with specified labels and properties.

create_relationship

Create a relationship between two existing nodes with a defined type, direction, and properties.

Overview

Neo4j MCP Server

An MCP server that connects Claude to a Neo4j graph database, exposing tools to run Cypher queries, create nodes, and create relationships using natural language. It supports Neo4j Enterprise's multi-database feature. Use when Claude needs to query, populate, or connect data in a live Neo4j graph database conversationally, from simple lookups to multi-hop relationship queries.

What it does

This MCP server integrates Neo4j graph databases with Claude Desktop, letting Claude execute Cypher queries, create nodes, and create relationships between nodes using natural-language instructions instead of writing Cypher directly. It supports Neo4j Enterprise's multi-database feature, connecting to a specific named database instead of just the default "neo4j" database.

When to use - and when NOT to

Use it when you want Claude to query, populate, or connect data in a live Neo4j graph database conversationally - asking questions like "Show me all employees in the Sales department" or "Find the top 5 oldest customers", creating nodes like "Add a new person named John Doe who is 30 years old", or forming relationships like "Make John Doe friends with Jane Smith" or "Assign John Doe to the Sales department". It also handles multi-hop queries such as "Find all products purchased by customers who live in New York" or "Show me friends of friends of John Doe", and aggregate queries like calculating the average age of employees in each department. Requires a running Neo4j instance with connection URI, username, and password (database name is optional, defaulting to "neo4j"), and Node.js for installation.

Capabilities

Three tools: execute_query (runs any Cypher query - READ, CREATE, UPDATE, or DELETE - returning structured results, with parameterized queries supported to prevent injection attacks), create_node (creates a node with specified labels and properties, supporting all Neo4j data types, and returns the created node with its internal ID), and create_relationship (creates a relationship between two existing nodes given their node IDs, with a specified type, direction, and optional properties). Internally, Claude translates natural-language requests into the corresponding Cypher statements before calling these tools - for example, turning "Show me all employees in the Sales department" into a MATCH/RETURN query against Employee and Department nodes, or "Make John Doe friends with Jane Smith" into a MATCH/CREATE relationship statement with a FRIENDS_WITH type and a since property.

How to install

Run directly with npx:

npx @alanse/mcp-neo4j

Or install via Smithery for Claude Desktop:

npx -y @smithery/cli install @alanse/mcp-neo4j-server --client claude

Then configure it in claude_desktop_config.json with the NEO4J_URI (default bolt://localhost:7687), NEO4J_USERNAME (default neo4j), NEO4J_PASSWORD (required, no default), and optionally NEO4J_DATABASE (default neo4j, used to target a specific database in Neo4j Enterprise Edition) environment variables. For development, clone the repository, run npm install, then npm run build; a test suite is available via npm test. The project is MIT-licensed.

Who it's for

Developers and data teams running a Neo4j graph database who want Claude to query, populate, and connect graph data conversationally - from simple department or customer lookups to multi-hop relationship queries and enterprise multi-database setups - without writing raw Cypher by hand.

Source README

MCP Neo4j Server

smithery badge

An MCP server that provides integration between Neo4j graph database and Claude Desktop, enabling graph database operations through natural language interactions.

Neo4j Server MCP server

Quick Start

You can run this MCP server directly using npx:

npx @alanse/mcp-neo4j

Or add it to your Claude Desktop configuration:

{
  "mcpServers": {
    "neo4j": {
      "command": "npx",
      "args": ["@alanse/mcp-neo4j-server"],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "your-password",
        "NEO4J_DATABASE": "neo4j"
      }
    }
  }
}

Features

This server provides tools for interacting with a Neo4j database:

Neo4j Enterprise Support

This server now supports connecting to specific databases in Neo4j Enterprise Edition. By default, it connects to the "neo4j" database, but you can specify a different database using the NEO4J_DATABASE environment variable.

Tools

  • execute_query: Execute Cypher queries on the Neo4j database

    • Supports all types of Cypher queries (READ, CREATE, UPDATE, DELETE)
    • Returns query results in a structured format
    • Parameters can be passed to prevent injection attacks
  • create_node: Create a new node in the graph database

    • Specify node labels and properties
    • Returns the created node with its internal ID
    • Supports all Neo4j data types for properties
  • create_relationship: Create a relationship between two existing nodes

    • Define relationship type and direction
    • Add properties to relationships
    • Requires node IDs for source and target nodes

Installation

Installing via Smithery

To install MCP Neo4j Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @alanse/mcp-neo4j-server --client claude

For Development

  1. Clone the repository:
git clone https://github.com/da-okazaki/mcp-neo4j-server.git
cd mcp-neo4j-server
  1. Install dependencies:
npm install
  1. Build the project:
npm run build

Configuration

The server requires the following environment variables:

  • NEO4J_URI: Neo4j database URI (default: bolt://localhost:7687)
  • NEO4J_USERNAME: Neo4j username (default: neo4j)
  • NEO4J_PASSWORD: Neo4j password (required)
  • NEO4J_DATABASE: Neo4j database name (default: neo4j) - Use this to connect to a specific database in Neo4j Enterprise

Usage Examples

Here are examples of how you can interact with the Neo4j database using natural language:

Connecting to a Specific Database

For Neo4j Enterprise users with multiple databases, you can specify which database to connect to:

{
  "env": {
    "NEO4J_URI": "bolt://localhost:7687",
    "NEO4J_USERNAME": "neo4j",
    "NEO4J_PASSWORD": "your-password",
    "NEO4J_DATABASE": "myCustomDatabase"
  }
}

This will connect to "myCustomDatabase" instead of the default "neo4j" database.

Querying Data

You can ask questions like:

  • "Show me all employees in the Sales department"
  • "Find the top 5 oldest customers"
  • "Who has purchased more than 3 products in the last month?"

Example:

User: "Show me all employees in the Sales department"

Claude: Let me query the database for Sales department employees.

[Executes query internally: MATCH (e:Employee)-[:WORKS_IN]->(d:Department {name: 'Sales'}) RETURN e.name, e.position]

Result:
- John Smith (Sales Manager)
- Sarah Johnson (Sales Representative)
- Mike Brown (Account Executive)

Creating Data

You can give instructions like:

  • "Add a new person named John Doe who is 30 years old"
  • "Create a product called 'Premium Coffee' with price $24.99"
  • "Add a new department called 'Research & Development'"

Example:

User: "Add a new person named John Doe who is 30 years old"

Claude: I'll create a new Person node with the provided information.

[Creates node internally with label 'Person' and properties {name: 'John Doe', age: 30}]

Result: Created new person node with ID: 123

Creating Relationships

You can request relationships like:

  • "Make John Doe friends with Jane Smith"
  • "Set Product A as a component of Product B"
  • "Assign John Doe to the Sales department"

Example:

User: "Make John Doe friends with Jane Smith"

Claude: I'll create a friendship relationship between these two people.

[Creates relationship internally: MATCH (a:Person {name: 'John Doe'}), (b:Person {name: 'Jane Smith'})
CREATE (a)-[:FRIENDS_WITH {since: '2024-01-05'}]->(b)]

Result: Created friendship relationship between John Doe and Jane Smith

Complex Operations

You can perform more complex operations with natural language:

  • "Find all products purchased by customers who live in New York"
  • "Show me friends of friends of John Doe"
  • "Calculate the average age of employees in each department"

Example:

User: "Find all products purchased by customers who live in New York"

Claude: I'll query the database for this information.

[Executes query internally:
MATCH (c:Customer {city: 'New York'})-[:PURCHASED]->(p:Product)
RETURN c.name, collect(p.name) as products]

Result:
- Alice Wilson: [Premium Coffee, Tea Set, Cookies]
- Bob Miller: [Premium Coffee, Water Bottle]

Testing

Run the test suite:

npm test

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.