unreal-engine-knowledge-graph-mcp
v0.1.1
Published
[English](README_EN.md) | 中文
Downloads
5
Maintainers
Readme
虚幻引擎知识图谱 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": "概念按关系数量从大到小排序,包含入度、出度和总关系数统计"
}系统架构
核心组件
- 文档处理: 读取Markdown文档,使用DeepSeek v3提取概念关系
- 知识图谱: 基于Neo4j存储概念和关系数据
- MCP服务: 提供标准化的概念关系查询接口
数据流程
Markdown文档 → DeepSeek v3分析 → 概念关系提取 → Neo4j图数据库 → MCP工具查询开发测试
环境要求
- Node.js >= 18.0.0
- Docker (用于运行Neo4j)
- DeepSeek API密钥
安装步骤
- 克隆项目
git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git
cd unreal-engine-knowledge-graph-mcp- 安装依赖
npm install- 配置环境变量
# 复制环境变量模板
cp .env.example .env
# 编辑.env文件,添加DeepSeek API密钥
DEEPSEEK_API_KEY=your_deepseek_api_key_here- 启动Neo4j数据库
# 启动Docker容器
docker-compose up -d
# 等待数据库启动完成
npm run test-connection- 构建项目
npm run build- 提取概念关系(测试模式)
# 测试模式:只处理一个文档文件
npm run extract-triplets:test-mode- 导入数据到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添加新文档
- 将Markdown文档放入
sources/docs/目录 - 运行概念关系提取:
npm run extract-triplets - 导入到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!
