Skip to main content
Glama
yarnovo

Unreal Engine Knowledge Graph MCP Server

by yarnovo

虚幻引擎知识图谱 MCP 服务器

English | 中文

这个项目提供虚幻引擎官方文档的 MCP(Model Context Protocol)服务器,支持基于Neo4j图数据库的概念关系搜索,帮助开发者发现概念间的学习路径和依赖关系。

项目背景

在学习虚幻引擎开发过程中,开发者经常需要理解各种概念之间的关系,比如:

  • 蓝图系统与C++代码的关系

  • 材质编辑器与节点图编程的关系

  • Nanite虚拟几何体与高多边形模型的关系

传统的文档搜索只能找到单个概念的信息,无法揭示概念间的学习路径和依赖关系。本项目通过构建知识图谱,让AI能够理解概念间的关联,提供更智能的学习指导。

解决方案

本项目提供了一个基于Neo4j图数据库的MCP服务器,专门用于虚幻引擎概念关系的智能搜索和发现。通过DeepSeek v3模型提取文档中的概念关系,构建完整的知识图谱。

功能特性

  • 🔗 概念关系搜索: 发现任意概念的相关概念和学习路径

  • 🧠 智能概念发现: 基于图数据库的深度关系挖掘

  • 🔍 概念名称搜索: 模糊搜索概念名称,支持中英文双语查询

  • 📊 关系统计信息: 获取概念的关系数量统计,按重要性排序

在 MCP Host 中使用

Cursor 配置

在项目根目录创建或编辑 .cursor/mcp.json 配置文件:

{ "mcpServers": { "unreal-engine-knowledge-graph-mcp": { "command": "npx", "args": [ "-y", "unreal-engine-knowledge-graph-mcp" ], "env": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USER": "neo4j", "NEO4J_PASSWORD": "password123" } } } }

VSCode 配置

在项目根目录创建或编辑 .vscode/mcp.json 配置文件:

{ "servers": { "unreal-engine-knowledge-graph-mcp": { "type": "stdio", "command": "npx", "args": [ "-y", "unreal-engine-knowledge-graph-mcp" ], "env": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USER": "neo4j", "NEO4J_PASSWORD": "password123" } } } }

环境变量说明

环境变量

含义

默认值

NEO4J_URI

Neo4j数据库连接地址

bolt://localhost:7687

NEO4J_USER

Neo4j用户名

neo4j

NEO4J_PASSWORD

Neo4j密码

password123

DEEPSEEK_API_KEY

DeepSeek API密钥

MCP工具功能

search_concept_relations

搜索指定概念的相关概念和关系,支持中英文双语查询。

使用场景:

  • 🎯 概念学习扩展: "我想学习蓝图系统,相关的概念还有哪些?"

  • 🔍 技术关联探索: "虚幻引擎包含哪些核心功能模块?"

  • 🧭 学习路径规划: "从材质编辑器出发,我还需要了解什么?"

提示词示例:

帮我搜索"蓝图系统"和"Blueprint System"的相关概念,我想了解它与其他功能的关系 查找"虚幻引擎"和"Unreal Engine"包含哪些核心功能 搜索"材质编辑器"和"Material Editor"相关的学习内容

参数:

  • concept (必需): 要查询的概念名称(中英文双语)

    • cn (必需): 中文概念名称

    • en (必需): 英文概念名称

  • limit (可选): 返回的最大关系数量,默认20

返回数据格式:

{ "searchTerms": { "cn": "虚幻引擎", "en": "Unreal Engine" }, "concept": "虚幻引擎 / Unreal Engine", "found": true, "totalRelations": 12, "relatedConcepts": [ { "concept": "蓝图系统", "predicate": "包含", "context": "虚幻引擎的可视化脚本编程系统", "direction": "outgoing" } ], "limit": 20 }

search_concepts

模糊搜索概念名称,支持中英文双语查询。

使用场景:

  • 🔍 快速查找概念: "我记得有个关于'粒子'的功能,叫什么名字来着?"

  • 📝 概念名称确认: "虚幻引擎中2D相关的功能都有哪些?"

  • 🎯 关键词探索: "搜索包含'编辑器'的所有概念"

提示词示例:

搜索包含"粒子"和"Particle"的所有概念 查找与"2D"相关的功能 搜索"编辑器"和"Editor"相关的工具

参数:

  • searchTerm (必需): 搜索关键词(中英文双语)

    • cn (必需): 中文搜索关键词

    • en (必需): 英文搜索关键词

  • limit (可选): 返回的最大概念数量,默认10

返回数据格式:

{ "searchTerms": { "cn": "蓝图", "en": "Blueprint" }, "concepts": ["蓝图系统", "蓝图编辑器", "Blueprint System", "Blueprint Editor"], "count": 4, "limit": 10 }

get_all_concepts

获取所有可用概念列表及其关系统计信息(按关系数量排序,优先显示核心概念)。

使用场景:

  • 📋 核心概念优先浏览: "虚幻引擎知识图谱中最重要的概念有哪些?"

  • 🎯 学习计划制定: "我想按重要性顺序学习,哪些是核心概念?"

  • 📊 概念关系分析: "这些概念分别有多少关联,哪些最核心?"

提示词示例:

显示最重要的虚幻引擎概念,按关系数量排序 列出前50个核心概念,我想了解哪些最重要 获取概念列表及其关系统计,帮我制定学习计划

参数:

  • limit (可选): 返回的最大概念数量,默认100

返回数据格式:

{ "concepts": [ { "concept": "蓝图系统", "relationCount": 25, "incomingCount": 12, "outgoingCount": 13 }, { "concept": "虚幻引擎", "relationCount": 20, "incomingCount": 8, "outgoingCount": 12 } ], "count": 2, "limit": 100, "note": "概念按关系数量从大到小排序,包含入度、出度和总关系数统计" }

系统架构

核心组件

  1. 文档处理: 读取Markdown文档,使用DeepSeek v3提取概念关系

  2. 知识图谱: 基于Neo4j存储概念和关系数据

  3. MCP服务: 提供标准化的概念关系查询接口

数据流程

Markdown文档 → DeepSeek v3分析 → 概念关系提取 → Neo4j图数据库 → MCP工具查询

开发测试

环境要求

  • Node.js >= 18.0.0

  • Docker (用于运行Neo4j)

  • DeepSeek API密钥

安装步骤

  1. 克隆项目

git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git cd unreal-engine-knowledge-graph-mcp
  1. 安装依赖

npm install
  1. 配置环境变量

# 复制环境变量模板 cp .env.example .env # 编辑.env文件,添加DeepSeek API密钥 DEEPSEEK_API_KEY=your_deepseek_api_key_here
  1. 启动Neo4j数据库

# 启动Docker容器 docker-compose up -d # 等待数据库启动完成 npm run test-connection
  1. 构建项目

npm run build
  1. 提取概念关系(测试模式)

# 测试模式:只处理一个文档文件 npm run extract-triplets:test-mode
  1. 导入数据到Neo4j

npm run import-to-neo4j

知识三元组数据结构

系统使用标准的知识图谱三元组结构存储概念关系:

{ "filename": "文档名称", "sourceFile": "源文件路径", "triples": [ { "subject": "主体概念", "predicate": "关系谓词", "object": "客体概念", "context": "上下文说明", "direction": "bidirectional" } ], "timestamp": "创建时间戳" }

字段说明:

  • subject: 主体概念名称(知识三元组的主语)

  • predicate: 关系谓词(如:包含、支持、依赖、关联等)

  • object: 客体概念名称(知识三元组的宾语)

  • context: 关系的上下文说明,帮助理解关系的具体含义

  • direction: 关系方向性

    • "unidirectional": 单向关系(主体→客体,但客体不一定→主体)

    • "bidirectional": 双向关系(主体↔客体,相互关联)

  • confidence: 置信度(0.0-1.0),表示关系提取的准确性和可靠性

    • 0.9-1.0: 明确的技术关系,文档中有直接、清晰的说明

    • 0.7-0.9: 较为明确的关系,基于上下文推断但证据充分

    • 0.5-0.7: 中等置信度,关系存在但需要一定推理

    • 0.3-0.5: 较弱的关系,主要基于语义相似性

    • 0.1-0.3: 非常弱的关系,仅基于概念共现

开发指南

项目结构

├── scripts/ # 脚本文件 │ ├── extract-triplets.ts # 知识三元组提取 │ ├── import-to-neo4j.ts # 数据导入Neo4j │ └── test-connection.ts # 数据库连接测试 ├── bin/ # 源代码 │ ├── index.ts # MCP服务器实现 │ └── neo4j-search.ts # Neo4j搜索引擎 ├── sources/ # 数据文件 │ ├── docs/ # Markdown文档 │ └── triplets/ # 知识三元组JSON文件 ├── tests/ # 测试文件 │ └── mcp-client.test.ts # MCP客户端测试 ├── docker-compose.yml # Neo4j Docker配置 └── package.json # 项目配置

可用脚本

# 构建项目 npm run build # 测试数据库连接 npm run test-connection # 生成演示数据 npm run extract-triplets:test-mode # 提取知识三元组(需要DeepSeek API) npm run extract-triplets # 导入数据到Neo4j npm run import-to-neo4j # 清空数据库并重新导入 npm run import-to-neo4j -- --clear # 运行测试 npm test

添加新文档

  1. 将Markdown文档放入 sources/docs/ 目录

  2. 运行概念关系提取:npm run extract-triplets

  3. 导入到Neo4j:npm run import-to-neo4j

自定义知识三元组

你可以手动创建知识三元组JSON文件:

{ "filename": "custom-triples", "sourceFile": "custom/triples.md", "triples": [ { "subject": "自定义概念A", "predicate": "关联", "object": "自定义概念B", "context": "这是一个自定义的知识三元组", "direction": "bidirectional" } ], "timestamp": "2025-01-12T10:30:15.387Z" }

将文件保存到 sources/triplets/ 目录,然后运行导入命令。

技术栈

核心技术

  • Node.js: 运行环境

  • TypeScript: 类型安全的开发语言

  • MCP SDK: Model Context Protocol 实现

  • Neo4j: 图数据库

  • Docker: 容器化部署

AI集成

  • DeepSeek v3: 概念关系提取

  • OpenAI SDK: API调用接口

开发工具

  • Vitest: 单元测试框架

  • tsx: TypeScript执行器

  • Zod: 参数验证

故障排除

Neo4j连接问题

# 检查Docker容器状态 docker-compose ps # 查看Neo4j日志 docker-compose logs neo4j # 重启Neo4j容器 docker-compose restart neo4j

测试连接

npm run test-connection

查看Neo4j浏览器界面

访问 http://localhost:7474

  • 用户名: neo4j

  • 密码: password123

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yarnovo/unreal-engine-knowledge-graph-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server