Neo4j Knowledge Graph Memory

Um servidor de memória de grafo de conhecimento que utiliza o banco de dados Neo4j para armazenar e recuperar informações de interações de IA.

Documentação

MCP Neo4j Knowledge Graph Memory Server

npm version License: MIT TypeScript Neo4j

Introdução

O MCP Neo4j Knowledge Graph Memory Server é um servidor de memória de grafo de conhecimento baseado no banco de dados de grafos Neo4j, usado para armazenar e recuperar informações durante as interações entre assistentes de IA e usuários. Este projeto é uma versão aprimorada do Knowledge Graph Memory Server oficial, usando Neo4j como mecanismo de armazenamento de backend.

Ao usar Neo4j como backend de armazenamento, este projeto oferece capacidades de consulta de grafos mais poderosas, melhor desempenho e escalabilidade, sendo especialmente adequado para construir aplicações complexas de grafos de conhecimento.

Recursos

  • 🚀 Armazenamento em banco de dados de grafos de alto desempenho baseado em Neo4j
  • 🔍 Poderosa busca difusa e capacidade de correspondência exata
  • 🔄 Operações CRUD completas para entidades, relacionamentos e observações
  • 🌐 Totalmente compatível com o protocolo MCP
  • 📊 Suporte a consultas e travessias complexas de grafos
  • 🐳 Suporte a Docker para facilitar a implantação

Instalação

Pré-requisitos

  • Node.js >= 22.0.0
  • Banco de dados Neo4j (local ou remoto)

Instalação via npm

# 全局安装
npm install -g @jovanhsu/mcp-neo4j-memory-server

# 或作为项目依赖安装
npm install @jovanhsu/mcp-neo4j-memory-server

Usando 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

Configuração de variáveis de ambiente

O servidor é configurado usando as seguintes variáveis de ambiente:

Variável de ambienteDescriçãoValor padrão
NEO4J_URIURI do banco de dados Neo4jbolt://localhost:7687
NEO4J_USERNome de usuário do Neo4jneo4j
NEO4J_PASSWORDSenha do Neo4jpassword
NEO4J_DATABASENome do banco de dados Neo4jneo4j

Integração com Claude

Configuração no Claude Desktop

Adicione a seguinte configuração em 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"
      }
    }
  }
}

Usando MCP Inspector no Claude Web

  1. Instale o MCP Inspector
  2. Inicie o Neo4j Memory Server:
    npx @jovanhsu/mcp-neo4j-memory-server
    
  3. Inicie o MCP Inspector em outro terminal:
    npx @modelcontextprotocol/inspector npx @jovanhsu/mcp-neo4j-memory-server
    
  4. Acesse a interface do MCP Inspector no navegador

Como usar

Instruções personalizadas do Claude

Adicione o seguinte conteúdo às instruções personalizadas do 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

Exemplo de API

Se você quiser usar este servidor em sua própria aplicação, pode se comunicar com ele através do 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 que escolher Neo4j?

Em comparação com o armazenamento em arquivos JSON da versão original e a versão DuckDB, o Neo4j oferece as seguintes vantagens:

  1. Banco de dados de grafos nativo: Neo4j é um banco de dados projetado especificamente para dados de grafos, muito adequado para armazenamento e consulta de grafos de conhecimento
  2. Consultas de alto desempenho: usando a linguagem de consulta Cypher, é possível realizar travessias complexas de grafos e correspondência de padrões de forma eficiente
  3. Relacionamentos em primeiro lugar: Neo4j trata os relacionamentos como cidadãos de primeira classe, tornando as consultas de relacionamentos entre entidades mais eficientes
  4. Capacidade de visualização: Neo4j oferece ferramentas de visualização integradas, facilitando a depuração e compreensão do grafo de conhecimento
  5. Escalabilidade: suporta implantação em cluster, podendo lidar com grafos de conhecimento em grande escala

Detalhes de implementação

Modelo de dados

O modelo de armazenamento do grafo de conhecimento no Neo4j é o seguinte:

(Entity:EntityType {name: "实体名称"})
(Entity)-[:HAS_OBSERVATION]->(Observation {content: "观察内容"})
(Entity1)-[:RELATION_TYPE]->(Entity2)

Implementação de busca difusa

Esta implementação combina a funcionalidade de busca de texto completo do Neo4j com o Fuse.js para busca flexível de entidades:

  • Usa o índice de texto completo do Neo4j para busca inicial
  • O Fuse.js fornece capacidade adicional de correspondência difusa
  • Os resultados da busca incluem correspondências exatas e parciais, ordenadas por relevância

Desenvolvimento

Configuração do ambiente

# 克隆仓库
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server

# 安装依赖
pnpm install

# 构建项目
pnpm build

# 开发模式(使用MCP Inspector)
pnpm dev

Testes

# 运行测试
pnpm test

Publicação

# 准备发布
npm version [patch|minor|major]

# 发布到NPM
npm publish

Guia de contribuição

Contribuições de código, relatórios de problemas ou sugestões de melhorias são bem-vindos! Siga os seguintes passos:

  1. Faça um fork deste repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Crie um Pull Request

Projetos relacionados

Licença

Este projeto é licenciado sob a licença MIT - consulte o arquivo LICENSE para mais detalhes.

Contato