Neo4j Knowledge Graph Memory
Un servidor de memoria de grafo de conocimiento que utiliza la base de datos de grafos Neo4j para almacenar y recuperar información de interacciones de IA.
Documentación
Servidor de Memoria de Grafo de Conocimiento MCP Neo4j
Introducción
MCP Neo4j Knowledge Graph Memory Server es un servidor de memoria de grafo de conocimiento basado en la base de datos de grafos Neo4j, utilizado para almacenar y recuperar información durante las interacciones entre asistentes de IA y usuarios. Este proyecto es una versión mejorada del Servidor de Memoria de Grafo de Conocimiento oficial, que utiliza Neo4j como motor de almacenamiento backend.
Al utilizar Neo4j como backend de almacenamiento, este proyecto ofrece capacidades de consulta de grafos más potentes, mejor rendimiento y escalabilidad, siendo especialmente adecuado para construir aplicaciones complejas de grafos de conocimiento.
Características
- 🚀 Almacenamiento de alto rendimiento basado en la base de datos de grafos Neo4j
- 🔍 Potente búsqueda difusa y capacidades de coincidencia exacta
- 🔄 Operaciones CRUD completas para entidades, relaciones y observaciones
- 🌐 Totalmente compatible con el protocolo MCP
- 📊 Soporte para consultas y recorridos complejos de grafos
- 🐳 Soporte para Docker, fácil de implementar
Instalación
Requisitos previos
- Node.js >= 22.0.0
- Base de datos Neo4j (local o remota)
Instalación mediante npm
# 全局安装
npm install -g @jovanhsu/mcp-neo4j-memory-server
# 或作为项目依赖安装
npm install @jovanhsu/mcp-neo4j-memory-server
Uso con Docker
# 使用docker-compose启动Neo4j和Memory Server
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server
docker-compose up -d
Configuración de variables de entorno
El servidor utiliza las siguientes variables de entorno para su configuración:
| Variable de entorno | Descripción | Valor predeterminado |
|---|---|---|
| NEO4J_URI | URI de la base de datos Neo4j | bolt://localhost:7687 |
| NEO4J_USER | Nombre de usuario de Neo4j | neo4j |
| NEO4J_PASSWORD | Contraseña de Neo4j | password |
| NEO4J_DATABASE | Nombre de la base de datos Neo4j | neo4j |
Integración con Claude
Configuración en Claude Desktop
Agregue la siguiente configuración en claude_desktop_config.json:
{
"mcpServers": {
"graph-memory": {
"command": "npx",
"args": [
"-y",
"@izumisy/mcp-neo4j-memory-server"
],
"env": {
"NEO4J_URI": "neo4j://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "password",
"NEO4J_DATABASE": "memory"
}
}
}
}
Uso de MCP Inspector en Claude Web
- Instale MCP Inspector
- Inicie Neo4j Memory Server:
npx @jovanhsu/mcp-neo4j-memory-server - Inicie MCP Inspector en otra terminal:
npx @modelcontextprotocol/inspector npx @jovanhsu/mcp-neo4j-memory-server - Acceda a la interfaz de MCP Inspector en el navegador
Métodos de uso
Instrucciones personalizadas de Claude
Agregue el siguiente contenido a las instrucciones personalizadas de Claude:
Follow these steps for each interaction:
1. User Identification:
- You should assume that you are interacting with default_user
- If you have not identified default_user, proactively try to do so.
2. Memory Retrieval:
- Always begin your chat by saying only "Remembering..." and search relevant information from your knowledge graph
- Create a search query from user words, and search things from "memory". If nothing matches, try to break down words in the query at first ("A B" to "A" and "B" for example).
- Always refer to your knowledge graph as your "memory"
3. Memory
- While conversing with the user, be attentive to any new information that falls into these categories:
a) Basic Identity (age, gender, location, job title, education level, etc.)
b) Behaviors (interests, habits, etc.)
c) Preferences (communication style, preferred language, etc.)
d) Goals (goals, targets, aspirations, etc.)
e) Relationships (personal and professional relationships up to 3 degrees of separation)
4. Memory Update:
- If any new information was gathered during the interaction, update your memory as follows:
a) Create entities for recurring organizations, people, and significant events
b) Connect them to the current entities using relations
b) Store facts about them as observations
Ejemplo de API
Si desea utilizar este servidor en su propia aplicación, puede comunicarse con él a través del protocolo MCP:
import { McpClient } from '@modelcontextprotocol/sdk/client/mcp.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
// 创建客户端
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@izumisy/mcp-neo4j-memory-server'],
env: {
NEO4J_URI: 'bolt://localhost:7687',
NEO4J_USER: 'neo4j',
NEO4J_PASSWORD: 'password',
NEO4J_DATABASE: 'neo4j'
}
});
const client = new McpClient();
await client.connect(transport);
// 创建实体
const result = await client.callTool('create_entities', {
entities: [
{
name: '用户',
entityType: '人物',
observations: ['喜欢编程', '使用TypeScript']
}
]
});
console.log(result);
¿Por qué elegir Neo4j?
En comparación con el almacenamiento en archivos JSON de la versión original y la versión DuckDB, Neo4j ofrece las siguientes ventajas:
- Base de datos de grafos nativa: Neo4j es una base de datos diseñada específicamente para datos de grafos, muy adecuada para el almacenamiento y consulta de grafos de conocimiento
- Consultas de alto rendimiento: El uso del lenguaje de consulta Cypher permite realizar recorridos complejos de grafos y coincidencias de patrones de manera eficiente
- Prioridad a las relaciones: Neo4j trata las relaciones como ciudadanos de primera clase, lo que hace que las consultas de relaciones entre entidades sean más eficientes
- Capacidades de visualización: Neo4j proporciona herramientas de visualización integradas, convenientes para depurar y comprender grafos de conocimiento
- Escalabilidad: Soporta implementación en clúster, capaz de manejar grafos de conocimiento a gran escala
Detalles de implementación
Modelo de datos
El modelo de almacenamiento del grafo de conocimiento en Neo4j es el siguiente:
(Entity:EntityType {name: "实体名称"})
(Entity)-[:HAS_OBSERVATION]->(Observation {content: "观察内容"})
(Entity1)-[:RELATION_TYPE]->(Entity2)
Implementación de búsqueda difusa
Esta implementación combina la función de búsqueda de texto completo de Neo4j con Fuse.js para una búsqueda flexible de entidades:
- Uso del índice de texto completo de Neo4j para la búsqueda inicial
- Fuse.js proporciona capacidades adicionales de coincidencia difusa
- Los resultados de búsqueda incluyen coincidencias exactas y parciales, ordenadas por relevancia
Desarrollo
Configuración del entorno
# 克隆仓库
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server
# 安装依赖
pnpm install
# 构建项目
pnpm build
# 开发模式(使用MCP Inspector)
pnpm dev
Pruebas
# 运行测试
pnpm test
Publicación
# 准备发布
npm version [patch|minor|major]
# 发布到NPM
npm publish
Guía de contribuciones
¡Las contribuciones de código, informes de problemas o sugerencias de mejora son bienvenidas! Siga los siguientes pasos:
- Haga un fork de este repositorio
- Cree su rama de características (
git checkout -b feature/amazing-feature) - Realice sus cambios (
git commit -m 'Add some amazing feature') - Envíe a la rama (
git push origin feature/amazing-feature) - Cree una solicitud de extracción (Pull Request)
Proyectos relacionados
Licencia
Este proyecto está bajo la licencia MIT - consulte el archivo LICENSE para más detalles.
Contacto
- GitHub: https://github.com/JovanHsu/mcp-neo4j-memory-server
- NPM: https://www.npmjs.com/package/@jovanhsu/mcp-neo4j-memory-server
- Autor: JovanHsu