知识图谱管理服务

一个基于Neo4j的知识图谱管理服务,提供创建、查询和分析知识图谱结构的能力,适用于软件工程文档、架构可视化和技术债务管理等多种场景。

  • by VincentK1991
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 VincentK1991/knowledge-graph-mcp

使用说明

知识图谱MCP服务器

一个用于管理以Neo4j为后端的知识图谱的模型上下文协议(MCP)服务器。它为AI代理提供了创建、查询和分析知识图谱结构的能力。 我们的知识图谱MCP在编码和建模领域特定知识方面非常有用,它以一种既便于人类理解又适合人工智能处理的方式呈现。

用例

软件工程文档

我们的知识图谱模式是专为软件工程领域设计的,具有以下特点: 8个类别 这些代表了通用的软件开发知识,与 48个实体类型 并且 149段关系这个全面的架构使得:

  • 自动代码文档生成将此MCP服务器连接到您喜爱的AI编码工具,以自动为代码库生成文档,捕捉复杂的关系和依赖性
  • 跨仓库分析跟踪跨越多个存储库、服务和数据库的长距离依赖关系
  • 建筑可视化绘制系统架构图并理解不同组件之间的交互方式
  • 技术债务管理在整个代码库生态系统中识别并跟踪技术债务

这对我们的与人工智能代理的互动意味着什么

传统的AI代理在理解复杂、长距离依赖关系以及跨越系统不同部分的多跳推理方面存在困难。基于向量的RAG(检索增强生成)在寻找语义相似内容方面表现出色,但在捕捉跨越整个语料库且超出上下文窗口限制的全局上下文和依赖关系方面则力不从心。

知识图谱的优势:

我们的知识图谱MCP服务器通过提供以下功能,增强了人工智能代理对复杂系统的理解和推理能力:

🌐 表示“网络”或“互联网”的符号。 全局上下文理解

  • 超越分块检索现在,人工智能代理不再逐块处理信息,而是能够探索整个图并有方向性地遍历到所需位置
  • 关系驱动的洞察代理可以遵循明确的关系(如“ServiceA DEPENDS_ON DatabaseB”),而不仅仅是依赖语义相似性
  • 多跳发现像“X与Y有何关系”这样的复杂查询,即使在语料库中X和Y之间可能没有任何明确的联系,也能通过图遍历在一次大型语言模型(LLM)调用中得到答案。这使得我们能够发现看似无关组件之间意想不到的关系。

🎯(瞄准目标) 人工智能互动的实用益处

  • 隐性知识捕捉将隐性的组织知识转化为明确、可查询的关系,以保留机构记忆和专业知识
  • 加速入职流程新团队成员可以通过人工智能引导的知识图谱探索,快速理解复杂系统,从而将适应期从数周缩短至数天
  • 自动文档生成AI代理在代码演变过程中自动捕获并编码关系,生成实时更新的活文档(例如:请参阅我们由AI代理使用此知识图谱MCP创建的知识图谱MCP中的知识图谱)

🧠 表示“大脑”或“思考”。 隐性知识与组织记忆

知识图谱MCP最强大的方面之一在于其捕捉(信息/数据)的潜力 隐性知识 - 开发者头脑中(或他们与AI代理的私人对话中)存在的、但很少被记录下来的非书面、经验性知识:

  • 机构记忆保存通过为AI代理提供正确的模式和提示,团队对“为何这样构建”以及“什么依赖于什么”的理解可以保留在图结构中。
  • 决策情境捕捉该图表不仅能编码现存的内容,还能说明为何做出某些架构决策以及考虑过哪些备选方案
  • 部落知识民主化以往仅特定团队成员可访问的知识,现在整个组织的AI代理都可以查询

这种结构化的知识表示方法使人工智能代理能够更像领域专家一样进行推理——不仅理解存在哪些组件,还理解它们之间的关系、相互依赖性以及对整个系统架构的影响。

领域特定知识建模

我们专注于软件开发作为我们的主要领域,因为这是我们专业所长。然而,知识图谱架构是领域无关的,我们的MCP服务器设计具有可扩展性。用户可以通过以下方式轻松调整服务器,以捕捉任何领域的知识:

  • YAML模式定义使用包含实体和关系的简单YAML文件创建领域特定的架构
  • 知识领域编码对任何实体间关系至关重要的结构化知识领域进行建模
  • 专家知识捕获将领域专业知识编码为人类和AI系统均可访问的格式

关键的见解是 模式;架构 (实体及其相关关系的列表)对于有效建模特定知识领域至关重要。我们提供基础设施,并将领域专业知识的编码工作留给用户。

特点/特性

  • 🔧(扳手,也表示修理、维护的意思) CRUD 操作节点和关系的完整创建、读取、更新、删除功能
  • 🔍 看起来像一个放大镜的符号,常用于表示搜索或查看细节。在中文中,这个符号本身没有直接的翻译,但可以根据上下文理解为“🔍 搜索”、“🔍 查看细节”或“🔍 寻找”。如果单独使用,可以简单地描述为“放大镜符号”或“搜索符号”。 语义搜索基于向量的跨所有实体类型的语义搜索
  • 🧠 这个表情符号通常代表“大脑”或“思考”,在中文中可以翻译为“脑子”或“思考中”。所以,这个表情符号的翻译可以是“脑子”或“思考中”。 实体规范化自动重复检测与合并
  • 📊 表格/数据图表 图分析结构分析与统计
  • ✅ 模式验证对实体和关系三元组进行预定义模式的自动验证,确保数据完整性
  • 🔋(电池) 包含电池预配置与Neo4j的集成,Neo4j是业界领先的图数据库
  • 🧪 试管/实验器材 综合测试单元测试、集成测试和性能测试

知识图谱

以下是我们的当前部分架构,它代表了典型软件开发领域的特定知识 关于一个软件项目

这是一个知识图谱,它表示了名为MCP的知识图谱,使用MCP知识图谱的光标AI能够构建(或:能够基于此构建)

快速入门

1. 安装依赖项

cd mcp_servers/knowledge-graph-mcp
uv venv
source .venv/bin/activate
uv sync

2. 启动Neo4j数据库

cd docker
docker-compose up -d

3. 设置环境变量

export NEO4J_URI="bolt://localhost:7688"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="password"

4. 测试服务器

python -m pytest tests/ -v

MCP 工具

服务器提供了几类用于与知识图谱交互的MCP工具:

节点操作

  • create_graph_node创建带有模式验证的独立节点
  • query_graph_nodes使用过滤器和限制条件查询节点
  • update_graph_node更新节点属性
  • delete_graph_node删除节点(可选择强制删除)

关系操作

  • create_graph_relationship建立具有完整三元组验证的关系
  • validate_graph_relationship验证关系而不创建它们
  • query_graph_relationships使用实体类型过滤器查询关系
  • delete_graph_relationship删除特定关系

联合行动

  • create_node_with_relationship创建一个新节点并将其连接到现有节点
  • create_nodes_with_relationship创建两个节点并用关系连接它们
  • create_graph_subgraph在单个事务中创建多个节点和关系

向量搜索与语义操作

  • query_nodes_by_similarity使用向量嵌入查找与查询文本语义相似的节点
  • semantic_search对所有实体类型执行通用语义搜索,并应用可配置的过滤器
  • find_related_entities使用语义相似性查找与给定实体相关的实体

分析与实用工具

  • find_similar_nodes查找具有相似属性(例如,相似名称)的节点
  • find_isolated_nodes识别无连接或连接有限的节点
  • merge_duplicate_entities将两个重复的实体合并为一个
  • analyze_graph_structure获取关于图结构的全面统计数据

所有工具均包含对YAML模式系统的全面验证,以确保数据的完整性和一致性。 为所有实体自动生成向量嵌入 并将其存储为向量索引,以支持语义搜索功能。

使用Cursor或CLI工具进行注册

添加到您的Cursor MCP配置文件中(~/.cursor/mcp_servers.json 或类似:

{
  "mcpServers": {
    "knowledge-graph-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path-to-your-mcp-server/knowledge-graph-mcp",
        "-m",
        "knowledge_graph_mcp.server"
      ],
      "env": {
        "NEO4J_URI": "bolt://localhost:7688",
        "NEO4J_USER": "neo4j",
        "NEO4J_PASSWORD": "password"
      }
    }
  }
}

环境变量

所需变量

变量 描述 默认值 示例
NEO4J_URI Neo4j 数据库 URI bolt://localhost:7688 bolt://localhost:7688
NEO4J_USER Neo4j 用户名 neo4j neo4j
NEO4J_PASSWORD Neo4j 密码 password your-secure-password

用于Docker部署

environment:
  - NEO4J_URI=bolt://neo4j:7687
  - NEO4J_USER=neo4j
  - NEO4J_PASSWORD=password

最近新增

  • 🔍 向量索引实体节点向量嵌入的自动生成。除了已有的卓越图遍历技术外,还实现了语义搜索功能。

未来的改进/增强

接下来要介绍的是:

🎯 近期目标

  • 🔗 图聚类与社群检测自动发现相关实体簇和知识社区

🚀 未来愿景

  • 📊 交互式图表可视化内置MCP工具,用于图形数据的交互式可视化
  • 🧠 高级实体规范化基于人工智能的重复检测和实体解析
  • PageRank(网页排名)与中心性识别您所在领域中最重要的实体和知识中心
  • 最短路径分析寻找最优的知识路径和依赖链
  • 时间图分析跟踪您的架构随时间的演变情况
  • 跨域链接将软件工程知识与业务流程、合规性及运营相结合