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 entornoSignificadoValor predeterminado
NEO4J_URIDirección de conexión de la base de datos Neo4jbolt://localhost:7687
NEO4J_USERNombre de usuario de Neo4jneo4j
NEO4J_PASSWORDContraseña de Neo4jpassword123
DEEPSEEK_API_KEYClave de API de DeepSeekNinguna

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 chino
    • en (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 chino
    • en (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

  1. Procesamiento de documentos: Lee documentos Markdown y utiliza DeepSeek v3 para extraer relaciones de conceptos
  2. Grafo de conocimiento: Almacena datos de conceptos y relaciones basados en Neo4j
  3. 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

  1. Clonar el proyecto
git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git
cd unreal-engine-knowledge-graph-mcp
  1. Instalar dependencias
npm install
  1. Configurar variables de entorno
# 复制环境变量模板
cp .env.example .env

# 编辑.env文件,添加DeepSeek API密钥
DEEPSEEK_API_KEY=your_deepseek_api_key_here
  1. Iniciar la base de datos Neo4j
# 启动Docker容器
docker-compose up -d

# 等待数据库启动完成
npm run test-connection
  1. Compilar el proyecto
npm run build
  1. Extraer relaciones de conceptos (modo de prueba)
# 测试模式:只处理一个文档文件
npm run extract-triplets:test-mode
  1. 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ón
  • direction: 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ón
    • 0.9-1.0: Relación técnica explícita, con descripciones directas y claras en la documentación
    • 0.7-0.9: Relación bastante explícita, inferida del contexto pero con evidencia suficiente
    • 0.5-0.7: Confianza media, la relación existe pero requiere cierto razonamiento
    • 0.3-0.5: Relación débil, basada principalmente en similitud semántica
    • 0.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

  1. Coloque el documento Markdown en el directorio sources/docs/
  2. Ejecute la extracción de relaciones de conceptos: npm run extract-triplets
  3. 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!