Unreal Engine Knowledge Graph
Busca relaciones de conceptos en la documentación oficial de Unreal Engine utilizando un grafo de conocimiento impulsado por Neo4j.
Documentación
Servidor MCP de Unreal Engine Knowledge Graph
English | 中文
Este proyecto proporciona un servidor MCP (Model Context Protocol) para la documentación oficial de Unreal Engine, que admite búsqueda de relaciones de conceptos basada en la base de datos de grafos Neo4j, ayudando a los desarrolladores a descubrir rutas de aprendizaje y dependencias entre conceptos.
Antecedentes del proyecto
Durante el proceso de aprendizaje del desarrollo con Unreal Engine, los desarrolladores a menudo necesitan comprender las relaciones entre varios conceptos, por ejemplo:
- La relación entre el sistema de Blueprints y el código C++
- La relación entre el editor de materiales y la programación con grafos de nodos
- La relación entre la geometría virtual Nanite y los modelos de alto polígono
La búsqueda tradicional en documentación solo puede encontrar información sobre un concepto individual, sin poder revelar las rutas de aprendizaje y las dependencias entre conceptos. Este proyecto construye un grafo de conocimiento que permite a la IA comprender las relaciones entre conceptos, proporcionando una guía de aprendizaje más inteligente.
Solución
Este proyecto proporciona un servidor MCP basado en la base de datos de grafos Neo4j, especializado en la búsqueda y descubrimiento inteligente de relaciones de conceptos de Unreal Engine. Mediante el modelo DeepSeek v3 se extraen las relaciones de conceptos de la documentación, construyendo un grafo de conocimiento completo.
Características
- 🔗 Búsqueda de relaciones de conceptos: Descubre conceptos relacionados y rutas de aprendizaje de cualquier concepto
- 🧠 Descubrimiento inteligente de conceptos: Minería profunda de relaciones basada en la base de datos de grafos
- 🔍 Búsqueda de nombres de conceptos: Búsqueda difusa de nombres de conceptos, compatible con consultas bilingües chino-inglés
- 📊 Información estadística de relaciones: Obtiene estadísticas del número de relaciones de un concepto, ordenadas por importancia
Uso en un host MCP
Configuración de Cursor
Cree o edite el archivo de configuración .cursor/mcp.json en el directorio raíz del proyecto:
{
"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"
}
}
}
}
Configuración de VSCode
Cree o edite el archivo de configuración .vscode/mcp.json en el directorio raíz del proyecto:
{
"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"
}
}
}
}
Descripción de variables de entorno
| Variable de entorno | Significado | Valor predeterminado |
|---|---|---|
NEO4J_URI | Dirección de conexión de la base de datos Neo4j | bolt://localhost:7687 |
NEO4J_USER | Nombre de usuario de Neo4j | neo4j |
NEO4J_PASSWORD | Contraseña de Neo4j | password123 |
DEEPSEEK_API_KEY | Clave de API de DeepSeek | Ninguna |
Funciones de las herramientas MCP
search_concept_relations
Busca conceptos y relaciones relacionados con un concepto especificado, compatible con consultas bilingües chino-inglés.
Casos de uso:
- 🎯 Ampliación del aprendizaje de conceptos: «Quiero aprender el sistema de Blueprints, ¿qué otros conceptos relacionados existen?»
- 🔍 Exploración de relaciones técnicas: «¿Qué módulos de funcionalidad central incluye Unreal Engine?»
- 🧭 Planificación de rutas de aprendizaje: «Partiendo del editor de materiales, ¿qué más necesito conocer?»
Ejemplo de prompt:
帮我搜索"蓝图系统"和"Blueprint System"的相关概念,我想了解它与其他功能的关系
查找"虚幻引擎"和"Unreal Engine"包含哪些核心功能
搜索"材质编辑器"和"Material Editor"相关的学习内容
Parámetros:
concept(obligatorio): Nombre del concepto a consultar (bilingüe chino-inglés)cn(obligatorio): Nombre del concepto en chinoen(obligatorio): Nombre del concepto en inglés
limit(opcional): Número máximo de relaciones a devolver, 20 por defecto
Formato de datos devueltos:
{
"searchTerms": {
"cn": "虚幻引擎",
"en": "Unreal Engine"
},
"concept": "虚幻引擎 / Unreal Engine",
"found": true,
"totalRelations": 12,
"relatedConcepts": [
{
"concept": "蓝图系统",
"predicate": "包含",
"context": "虚幻引擎的可视化脚本编程系统",
"direction": "outgoing"
}
],
"limit": 20
}
search_concepts
Búsqueda difusa de nombres de conceptos, compatible con consultas bilingües chino-inglés.
Casos de uso:
- 🔍 Búsqueda rápida de conceptos: «Recuerdo que había una función sobre "partículas", ¿cómo se llamaba?»
- 📝 Confirmación de nombres de conceptos: «¿Qué funciones relacionadas con 2D existen en Unreal Engine?»
- 🎯 Exploración por palabras clave: «Busca todos los conceptos que contengan "editor"»
Ejemplo de prompt:
搜索包含"粒子"和"Particle"的所有概念
查找与"2D"相关的功能
搜索"编辑器"和"Editor"相关的工具
Parámetros:
searchTerm(obligatorio): Palabra clave de búsqueda (bilingüe chino-inglés)cn(obligatorio): Palabra clave de búsqueda en chinoen(obligatorio): Palabra clave de búsqueda en inglés
limit(opcional): Número máximo de conceptos a devolver, 10 por defecto
Formato de datos devueltos:
{
"searchTerms": {
"cn": "蓝图",
"en": "Blueprint"
},
"concepts": ["蓝图系统", "蓝图编辑器", "Blueprint System", "Blueprint Editor"],
"count": 4,
"limit": 10
}
get_all_concepts
Obtiene la lista de todos los conceptos disponibles y su información estadística de relaciones (ordenada por número de relaciones, mostrando primero los conceptos centrales).
Casos de uso:
- 📋 Navegación prioritaria de conceptos centrales: «¿Cuáles son los conceptos más importantes en el grafo de conocimiento de Unreal Engine?»
- 🎯 Elaboración de planes de estudio: «Quiero aprender en orden de importancia, ¿cuáles son los conceptos centrales?»
- 📊 Análisis de relaciones de conceptos: «¿Cuántas relaciones tiene cada uno de estos conceptos y cuáles son los más centrales?»
Ejemplo de prompt:
显示最重要的虚幻引擎概念,按关系数量排序
列出前50个核心概念,我想了解哪些最重要
获取概念列表及其关系统计,帮我制定学习计划
Parámetros:
limit(opcional): Número máximo de conceptos a devolver, 100 por defecto
Formato de datos devueltos:
{
"concepts": [
{
"concept": "蓝图系统",
"relationCount": 25,
"incomingCount": 12,
"outgoingCount": 13
},
{
"concept": "虚幻引擎",
"relationCount": 20,
"incomingCount": 8,
"outgoingCount": 12
}
],
"count": 2,
"limit": 100,
"note": "概念按关系数量从大到小排序,包含入度、出度和总关系数统计"
}
Arquitectura del sistema
Componentes principales
- Procesamiento de documentos: Lee documentos Markdown y utiliza DeepSeek v3 para extraer relaciones de conceptos
- Grafo de conocimiento: Almacena datos de conceptos y relaciones basados en Neo4j
- Servicio MCP: Proporciona una interfaz estandarizada de consulta de relaciones de conceptos
Flujo de datos
Markdown文档 → DeepSeek v3分析 → 概念关系提取 → Neo4j图数据库 → MCP工具查询
Desarrollo y pruebas
Requisitos del entorno
- Node.js >= 18.0.0
- Docker (para ejecutar Neo4j)
- Clave de API de DeepSeek
Pasos de instalación
- Clonar el proyecto
git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git
cd unreal-engine-knowledge-graph-mcp
- Instalar dependencias
npm install
- Configurar variables de entorno
# 复制环境变量模板
cp .env.example .env
# 编辑.env文件,添加DeepSeek API密钥
DEEPSEEK_API_KEY=your_deepseek_api_key_here
- Iniciar la base de datos Neo4j
# 启动Docker容器
docker-compose up -d
# 等待数据库启动完成
npm run test-connection
- Compilar el proyecto
npm run build
- Extraer relaciones de conceptos (modo de prueba)
# 测试模式:只处理一个文档文件
npm run extract-triplets:test-mode
- Importar datos a Neo4j
npm run import-to-neo4j
Estructura de datos de tripletas de conocimiento
El sistema utiliza la estructura estándar de tripletas de grafos de conocimiento para almacenar relaciones de conceptos:
{
"filename": "文档名称",
"sourceFile": "源文件路径",
"triples": [
{
"subject": "主体概念",
"predicate": "关系谓词",
"object": "客体概念",
"context": "上下文说明",
"direction": "bidirectional"
}
],
"timestamp": "创建时间戳"
}
Descripción de campos:
subject: Nombre del concepto sujeto (sujeto de la tripleta de conocimiento)predicate: Predicado de la relación (por ejemplo: contiene, admite, depende, se asocia, etc.)object: Nombre del concepto objeto (objeto de la tripleta de conocimiento)context: Descripción contextual de la relación, que ayuda a comprender el significado específico de la relacióndirection: Direccionalidad de la relación"unidirectional": Relación unidireccional (sujeto→objeto, pero el objeto no necesariamente→sujeto)"bidirectional": Relación bidireccional (sujeto↔objeto, mutuamente relacionados)
confidence: Confianza (0.0-1.0), que indica la precisión y fiabilidad de la extracción de la relación0.9-1.0: Relación técnica explícita, con descripciones directas y claras en la documentación0.7-0.9: Relación bastante explícita, inferida del contexto pero con evidencia suficiente0.5-0.7: Confianza media, la relación existe pero requiere cierto razonamiento0.3-0.5: Relación débil, basada principalmente en similitud semántica0.1-0.3: Relación muy débil, basada únicamente en la co-ocurrencia de conceptos
Guía de desarrollo
Estructura del proyecto
├── 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 # 项目配置
Scripts disponibles
# 构建项目
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
Añadir nuevos documentos
- Coloque el documento Markdown en el directorio
sources/docs/ - Ejecute la extracción de relaciones de conceptos:
npm run extract-triplets - Importe a Neo4j:
npm run import-to-neo4j
Tripleta de conocimiento personalizada
Puede crear manualmente archivos JSON de tripletas de conocimiento:
{
"filename": "custom-triples",
"sourceFile": "custom/triples.md",
"triples": [
{
"subject": "自定义概念A",
"predicate": "关联",
"object": "自定义概念B",
"context": "这是一个自定义的知识三元组",
"direction": "bidirectional"
}
],
"timestamp": "2025-01-12T10:30:15.387Z"
}
Guarde el archivo en el directorio sources/triplets/ y luego ejecute el comando de importación.
Pila tecnológica
Tecnologías principales
- Node.js: Entorno de ejecución
- TypeScript: Lenguaje de desarrollo con seguridad de tipos
- MCP SDK: Implementación del Model Context Protocol
- Neo4j: Base de datos de grafos
- Docker: Despliegue mediante contenedores
Integración de IA
- DeepSeek v3: Extracción de relaciones de conceptos
- OpenAI SDK: Interfaz de llamadas API
Herramientas de desarrollo
- Vitest: Marco de pruebas unitarias
- tsx: Ejecutor de TypeScript
- Zod: Validación de parámetros
Solución de problemas
Problemas de conexión con Neo4j
# 检查Docker容器状态
docker-compose ps
# 查看Neo4j日志
docker-compose logs neo4j
# 重启Neo4j容器
docker-compose restart neo4j
Probar la conexión
npm run test-connection
Ver la interfaz del navegador de Neo4j
Acceda a http://localhost:7474
- Nombre de usuario: neo4j
- Contraseña: password123
Licencia
MIT License
Contribuciones
¡Bienvenidos los Issues y Pull Requests!