MCP Neo4j Server

Integra la base de datos gráfica Neo4j con clientes mediante interacciones en lenguaje natural.

Documentación

MCP Neo4j Server

smithery badge

Un servidor MCP que proporciona integración entre la base de datos de grafos Neo4j y Claude Desktop, permitiendo operaciones de base de datos de grafos mediante interacciones en lenguaje natural.

Neo4j Server MCP server

Inicio Rápido

Puedes ejecutar este servidor MCP directamente usando npx:

npx @alanse/mcp-neo4j

O añadirlo a tu configuración de Claude Desktop:

{
  "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"
      }
    }
  }
}

Características

Este servidor proporciona herramientas para interactuar con una base de datos Neo4j:

Soporte para Neo4j Enterprise

Este servidor ahora admite la conexión a bases de datos específicas en Neo4j Enterprise Edition. Por defecto, se conecta a la base de datos "neo4j", pero puedes especificar una base de datos diferente usando la variable de entorno NEO4J_DATABASE.

Herramientas

  • execute_query: Ejecutar consultas Cypher en la base de datos Neo4j

    • Admite todo tipo de consultas Cypher (READ, CREATE, UPDATE, DELETE)
    • Devuelve los resultados de las consultas en un formato estructurado
    • Se pueden pasar parámetros para prevenir ataques de inyección
  • create_node: Crear un nuevo nodo en la base de datos de grafos

    • Especifica etiquetas y propiedades del nodo
    • Devuelve el nodo creado con su ID interno
    • Admite todos los tipos de datos de Neo4j para propiedades
  • create_relationship: Crear una relación entre dos nodos existentes

    • Define el tipo y la dirección de la relación
    • Añade propiedades a las relaciones
    • Requiere IDs de nodo para los nodos de origen y destino

Instalación

Instalación mediante Smithery

Para instalar MCP Neo4j Server para Claude Desktop automáticamente a través de Smithery:

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

Para Desarrollo

  1. Clona el repositorio:
git clone https://github.com/da-okazaki/mcp-neo4j-server.git
cd mcp-neo4j-server
  1. Instala las dependencias:
npm install
  1. Compila el proyecto:
npm run build

Configuración

El servidor requiere las siguientes variables de entorno:

  • NEO4J_URI: URI de la base de datos Neo4j (por defecto: bolt://localhost:7687)
  • NEO4J_USERNAME: Nombre de usuario de Neo4j (por defecto: neo4j)
  • NEO4J_PASSWORD: Contraseña de Neo4j (requerida)
  • NEO4J_DATABASE: Nombre de la base de datos Neo4j (por defecto: neo4j) - Usa esto para conectarte a una base de datos específica en Neo4j Enterprise

Ejemplos de Uso

Aquí tienes ejemplos de cómo puedes interactuar con la base de datos Neo4j usando lenguaje natural:

Conexión a una Base de Datos Específica

Para usuarios de Neo4j Enterprise con múltiples bases de datos, puedes especificar a cuál conectarte:

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

Esto se conectará a "myCustomDatabase" en lugar de la base de datos "neo4j" por defecto.

Consulta de Datos

Puedes hacer preguntas como:

  • "Muéstrame todos los empleados del departamento de Ventas"
  • "Encuentra los 5 clientes más antiguos"
  • "¿Quién ha comprado más de 3 productos en el último mes?"

Ejemplo:

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)

Creación de Datos

Puedes dar instrucciones como:

  • "Añade una nueva persona llamada Juan Pérez que tiene 30 años"
  • "Crea un producto llamado 'Café Premium' con precio $24.99"
  • "Añade un nuevo departamento llamado 'Investigación y Desarrollo'"

Ejemplo:

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

Creación de Relaciones

Puedes solicitar relaciones como:

  • "Haz que Juan Pérez sea amigo de María García"
  • "Establece el Producto A como componente del Producto B"
  • "Asigna a Juan Pérez al departamento de Ventas"

Ejemplo:

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

Operaciones Complejas

Puedes realizar operaciones más complejas con lenguaje natural:

  • "Encuentra todos los productos comprados por clientes que viven en Nueva York"
  • "Muéstrame los amigos de los amigos de Juan Pérez"
  • "Calcula la edad promedio de los empleados en cada departamento"

Ejemplo:

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]

Pruebas

Ejecuta el conjunto de pruebas:

npm test

Licencia

MIT