Unreal Engine Knowledge Graph

Pesquise relações entre conceitos na documentação oficial da Unreal Engine usando um grafo de conhecimento alimentado por Neo4j.

Documentação

Servidor MCP de Knowledge Graph do Unreal Engine

English | Português

Este projeto fornece um servidor MCP (Model Context Protocol) para a documentação oficial do Unreal Engine, com suporte a busca de relações entre conceitos baseada no banco de dados de grafos Neo4j, ajudando desenvolvedores a descobrir caminhos de aprendizado e dependências entre conceitos.

Contexto do Projeto

Ao aprender desenvolvimento com Unreal Engine, os desenvolvedores frequentemente precisam entender as relações entre vários conceitos, como:

  • A relação entre o sistema de Blueprints e o código C++
  • A relação entre o Material Editor e a programação visual baseada em nós
  • A relação entre a geometria virtual Nanite e modelos de alta poligonagem

A busca em documentação tradicional só encontra informações sobre conceitos individuais, sem revelar caminhos de aprendizado e dependências entre eles. Este projeto constrói um knowledge graph para que a IA possa entender as conexões entre conceitos, oferecendo orientação de aprendizado mais inteligente.

Solução

Este projeto fornece um servidor MCP baseado no banco de dados de grafos Neo4j, dedicado à busca e descoberta inteligente de relações entre conceitos do Unreal Engine. Usando o modelo DeepSeek v3 para extrair relações entre conceitos dos documentos, construímos um knowledge graph completo.

Funcionalidades

  • 🔗 Busca de relações entre conceitos: descubra conceitos relacionados e caminhos de aprendizado para qualquer conceito
  • 🧠 Descoberta inteligente de conceitos: mineração profunda de relações baseada no banco de dados de grafos
  • 🔍 Busca por nome de conceito: busca difusa por nomes de conceitos, com suporte a consultas bilíngues (chinês e inglês)
  • 📊 Estatísticas de relações: obtenha contagens de relações por conceito, ordenadas por importância

Uso no MCP Host

Configuração no Cursor

Crie ou edite o arquivo de configuração .cursor/mcp.json na raiz do projeto:

{
    "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"
            }
        }
    }
}

Configuração no VSCode

Crie ou edite o arquivo de configuração .vscode/mcp.json na raiz do projeto:

{
    "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"
            }
        }
    }
}

Descrição das variáveis de ambiente

Variável de ambienteDescriçãoValor padrão
NEO4J_URIEndereço de conexão do banco Neo4jbolt://localhost:7687
NEO4J_USERNome de usuário do Neo4jneo4j
NEO4J_PASSWORDSenha do Neo4jpassword123
DEEPSEEK_API_KEYChave da API DeepSeekNenhum

Funcionalidades das ferramentas MCP

search_concept_relations

Busca conceitos relacionados e relações para um conceito específico, com suporte a consultas bilíngues (chinês e inglês).

Casos de uso:

  • 🎯 Expansão de aprendizado de conceitos: "Quero aprender o sistema de Blueprints, quais outros conceitos estão relacionados?"
  • 🔍 Exploração de relações técnicas: "Quais são os módulos de funcionalidade principais do Unreal Engine?"
  • 🧭 Planejamento de caminho de aprendizado: "Partindo do Material Editor, o que mais preciso aprender?"

Exemplo de prompt:

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

Parâmetros:

  • concept (obrigatório): nome do conceito a consultar (bilíngue)
    • cn (obrigatório): nome do conceito em chinês
    • en (obrigatório): nome do conceito em inglês
  • limit (opcional): número máximo de relações retornadas, padrão 20

Formato dos dados retornados:

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

search_concepts

Busca difusa por nomes de conceitos, com suporte a consultas bilíngues (chinês e inglês).

Casos de uso:

  • 🔍 Localização rápida de conceitos: "Lembro que existe um recurso sobre 'partículas', qual é o nome mesmo?"
  • 📝 Confirmação de nomes de conceitos: "Quais são os recursos relacionados a 2D no Unreal Engine?"
  • 🎯 Exploração por palavras-chave: "Buscar todos os conceitos que contenham 'editor'"

Exemplo de prompt:

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

Parâmetros:

  • searchTerm (obrigatório): palavra-chave de busca (bilíngue)
    • cn (obrigatório): palavra-chave de busca em chinês
    • en (obrigatório): palavra-chave de busca em inglês
  • limit (opcional): número máximo de conceitos retornados, padrão 10

Formato dos dados retornados:

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

get_all_concepts

Obtém a lista de todos os conceitos disponíveis e suas estatísticas de relações (ordenados por número de relações, priorizando conceitos centrais).

Casos de uso:

  • 📋 Navegação priorizando conceitos centrais: "Quais são os conceitos mais importantes no knowledge graph do Unreal Engine?"
  • 🎯 Elaboração de plano de aprendizado: "Quero aprender em ordem de importância, quais são os conceitos centrais?"
  • 📊 Análise de relações entre conceitos: "Quantas relações cada conceito tem e quais são os mais centrais?"

Exemplo de prompt:

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

Parâmetros:

  • limit (opcional): número máximo de conceitos retornados, padrão 100

Formato dos dados retornados:

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

Arquitetura do sistema

Componentes principais

  1. Processamento de documentos: lê documentos Markdown e usa DeepSeek v3 para extrair relações entre conceitos
  2. Knowledge graph: armazena dados de conceitos e relações com base no Neo4j
  3. Serviço MCP: fornece interface padronizada de consulta de relações entre conceitos

Fluxo de dados

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

Desenvolvimento e testes

Requisitos de ambiente

  • Node.js >= 18.0.0
  • Docker (para executar o Neo4j)
  • Chave da API DeepSeek

Passos de instalação

  1. Clonar o projeto
git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git
cd unreal-engine-knowledge-graph-mcp
  1. Instalar dependências
npm install
  1. Configurar variáveis de ambiente
# 复制环境变量模板
cp .env.example .env

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

# 等待数据库启动完成
npm run test-connection
  1. Compilar o projeto
npm run build
  1. Extrair relações entre conceitos (modo de teste)
# 测试模式:只处理一个文档文件
npm run extract-triplets:test-mode
  1. Importar dados para o Neo4j
npm run import-to-neo4j

Estrutura de dados de tripletas de conhecimento

O sistema usa a estrutura padrão de tripletas de knowledge graph para armazenar relações entre conceitos:

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

Descrição dos campos:

  • subject: nome do conceito sujeito (sujeito da tripleta de conhecimento)
  • predicate: predicado da relação (ex.: contém, suporta, depende, associa, etc.)
  • object: nome do conceito objeto (objeto da tripleta de conhecimento)
  • context: descrição do contexto da relação, ajudando a entender o significado específico
  • direction: direcionalidade da relação
    • "unidirectional": relação unidirecional (sujeito→objeto, mas objeto não necessariamente→sujeito)
    • "bidirectional": relação bidirecional (sujeito↔objeto, mutuamente relacionados)
  • confidence: nível de confiança (0.0-1.0), indicando a precisão e confiabilidade da extração da relação
    • 0.9-1.0: relação técnica explícita, com descrição direta e clara na documentação
    • 0.7-0.9: relação relativamente explícita, inferida do contexto com evidências suficientes
    • 0.5-0.7: confiança média, a relação existe mas requer algum raciocínio
    • 0.3-0.5: relação mais fraca, baseada principalmente em similaridade semântica
    • 0.1-0.3: relação muito fraca, baseada apenas em co-ocorrência de conceitos

Guia de desenvolvimento

Estrutura do projeto

├── 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 disponíveis

# 构建项目
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

Adicionar novos documentos

  1. Coloque o documento Markdown no diretório sources/docs/
  2. Execute a extração de relações entre conceitos: npm run extract-triplets
  3. Importe para o Neo4j: npm run import-to-neo4j

Personalizar tripletas de conhecimento

Você pode criar manualmente arquivos JSON de tripletas de conhecimento:

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

Salve o arquivo no diretório sources/triplets/ e execute o comando de importação.

Stack tecnológico

Tecnologias principais

  • Node.js: ambiente de execução
  • TypeScript: linguagem de desenvolvimento com segurança de tipos
  • MCP SDK: implementação do Model Context Protocol
  • Neo4j: banco de dados de grafos
  • Docker: implantação em contêineres

Integração com IA

  • DeepSeek v3: extração de relações entre conceitos
  • OpenAI SDK: interface de chamada de API

Ferramentas de desenvolvimento

  • Vitest: framework de testes unitários
  • tsx: executor TypeScript
  • Zod: validação de parâmetros

Solução de problemas

Problemas de conexão com o Neo4j

# 检查Docker容器状态
docker-compose ps

# 查看Neo4j日志
docker-compose logs neo4j

# 重启Neo4j容器
docker-compose restart neo4j

Testar conexão

npm run test-connection

Visualizar a interface do navegador Neo4j

Acesse http://localhost:7474

  • Nome de usuário: neo4j
  • Senha: password123

Licença

Licença MIT

Contribuições

Contribuições com Issues e Pull Requests são bem-vindas!