MCP Neo4j Knowledge Graph Memory Server

MCP Neo4j Knowledge Graph Memory Server

sylweriusz

研究与数据
访问服务器

README

MCP Neo4j 知识图谱内存服务器

一个模型上下文协议 (MCP) 服务器,使用 Neo4j 作为知识图谱存储和检索的后端。

安装

通过 NPM 安装

npm install @sylweriusz/mcp-neo4j-memory-server

手动安装

在你的 claude_desktop_config.json 中添加 @sylweriusz/mcp-neo4j-memory-server:

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

Docker

构建:

docker build -t mcp-neo4j-graph-memory .

运行:

docker run -dit \
  -e NEO4J_URI=bolt://neo4j:7687 \
  -e NEO4J_USERNAME=neo4j \
  -e NEO4J_PASSWORD=password \
  -e NEO4J_DATABASE=neo4j \  
  mcp-neo4j-graph-memory

配置

使用环境变量配置 Neo4j 连接:

变量 描述 默认值
NEO4J_URI Neo4j 连接 URI bolt://localhost:7687
NEO4J_USERNAME Neo4j 用户名 neo4j
NEO4J_PASSWORD Neo4j 密码 password
NEO4J_DATABASE Neo4j 默认数据库名称 neo4j

你可以在你的环境中、.env 文件中或如上所示的配置中设置这些变量。

用法

将以下示例指令与 Claude 或其他支持 MCP 协议的 AI 助手一起使用:

按照以下步骤进行每次交互:

1. 用户识别:
   - 你应该假设你正在与 default_user 交互
   - 如果你尚未识别 default_user,请主动尝试这样做。

2. 记忆检索:
   - 始终以仅说“正在记忆...”开始你的聊天,并从你的知识图谱中搜索相关信息
   - 从用户词语创建搜索查询,并从“记忆”中搜索内容。 如果没有任何匹配项,请首先尝试分解查询中的词语(例如,“A B”到“A”和“B”)。
   - 始终将你的知识图谱称为你的“记忆”

3. 记忆:
   - 在与用户交谈时,请注意属于以下任何类别的新信息:
     a) 基本身份(年龄、性别、地点、职称、教育程度等)
     b) 行为(兴趣、习惯等)
     c) 偏好(沟通方式、首选语言等)
     d) 目标(目标、指标、愿望等)
     e) 关系(最多 3 度分离的个人和职业关系)

4. 记忆更新:
   - 如果在交互期间收集到任何新信息,请按如下方式更新你的记忆:
     a) 为重复出现的组织、人员和重大事件创建实体
     b) 使用关系将它们连接到当前实体
     c) 将有关它们的事实存储为观察结果

具有数据库切换的项目特定知识图谱

重要提示:要使用项目特定的知识图谱,你应该使用系统提示中内置的数据库管理工具。 不要仅仅依赖环境配置。

将此改进的系统提示模板用于与项目相关的工作:

NEO4J_DATABASE="你的项目名称"  # 在此处定义项目数据库名称变量

1. 知识图谱数据库管理:
   - 在每次对话开始时,检查当前数据库:get_current_database
   - 切换到项目特定的数据库:switch_database ${NEO4J_DATABASE} true
   - 应该在每个会话中使用这些命令完成此数据库切换
   - 不要仅仅依赖配置设置进行数据库选择

2. 使用知识图谱:
   - 将所有重要的项目信息存储为实体和关系
   - 在你的工作中始终使用此信息
   - 为以下内容创建实体:文件、类、函数、错误、项目需求
   - 关系描述实体之间的连接

3. 知识来源优先级:
   - 知识图谱是项目信息的首要和权威来源
   - 在尝试搜索文件或目录之前,始终检查知识图谱
   - 使用会话期间发现的任何新信息更新知识图谱

数据库管理 API

服务器提供多个数据库管理命令,应在你的系统提示中使用:

命令 描述 示例
get_current_database 返回当前活动的数据库 get_current_database
switch_database 切换到不同的数据库,如果数据库不存在,可以选择创建它 switch_database my-project true
list_databases 列出所有可用的数据库 list_databases

始终在你的系统提示中使用这些命令,以确保你正在使用正确的项目数据库。

实现细节

此实现使用 Neo4j 作为后端存储系统,重点关注三个关键方面:

图数据库结构

知识图谱以以下模式存储在 Neo4j 中:

graph TD
    E[实体] -->|HAS_OBSERVATION| O[观察]
    E1[实体] -->|RELATES_TO| E2[实体]
    P[项目] -->|CONTAINS| F[文件]
    F -->|HAS_FUNCTION| Fn[函数]
    F -->|HAS_CLASS| C[类]
    P -->|HAS_ERROR| Er[错误]
    P -->|HAS_REQUIREMENT| R[需求]

    classDef entity fill:#f9f,stroke:#333,stroke-width:2px;
    classDef observation fill:#bbf,stroke:#333,stroke-width:1px;
    classDef project fill:#fdf,stroke:#333,stroke-width:3px;
    classDef file fill:#dfd,stroke:#333,stroke-width:1px;
    classDef code fill:#ddf,stroke:#333,stroke-width:1px;
    classDef error fill:#fdd,stroke:#333,stroke-width:1px;
    classDef requirement fill:#ffd,stroke:#333,stroke-width:1px;

    class E,E1,E2 entity;
    class O observation;
    class P project;
    class F file;
    class Fn,C code;
    class Er error;
    class R requirement;

属性:

  • 实体节点:nameentityType
  • 观察节点:content
  • RELATES_TO 关系:relationType

这种模式设计允许高效地存储和检索知识图谱组件,同时利用 Neo4j 的原生图功能。

模糊搜索实现

该实现结合了 Neo4j Cypher 查询和 Fuse.js,以实现灵活的实体搜索:

  • Neo4j Cypher 查询从数据库检索基本数据
  • Fuse.js 在检索到的数据之上提供模糊匹配功能
  • 这种混合方法允许结构化的图查询和灵活的文本匹配
  • 搜索结果包括精确匹配和部分匹配,按相关性排序

优势

  1. 原生图结构:Neo4j 的图数据库为知识图谱数据提供了天然的契合,具有节点、关系和属性。
  2. 优化遍历:Neo4j 擅长导航实体之间复杂的联系。
  3. 可扩展性:由于 Neo4j 优化的图存储和检索,因此在大知识图谱中具有更好的性能。
  4. 查询表达性:Cypher 查询语言使复杂的图模式更容易表达和查询。
  5. 可视化:Neo4j 浏览器中对图可视化的原生支持。

开发

设置

pnpm install

测试

pnpm test

许可证

此项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python