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 ambiente | Descrição | Valor padrão |
|---|---|---|
NEO4J_URI | Endereço de conexão do banco Neo4j | bolt://localhost:7687 |
NEO4J_USER | Nome de usuário do Neo4j | neo4j |
NEO4J_PASSWORD | Senha do Neo4j | password123 |
DEEPSEEK_API_KEY | Chave da API DeepSeek | Nenhum |
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êsen(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êsen(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
- Processamento de documentos: lê documentos Markdown e usa DeepSeek v3 para extrair relações entre conceitos
- Knowledge graph: armazena dados de conceitos e relações com base no Neo4j
- 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
- Clonar o projeto
git clone https://github.com/your-username/unreal-engine-knowledge-graph-mcp.git
cd unreal-engine-knowledge-graph-mcp
- Instalar dependências
npm install
- Configurar variáveis de ambiente
# 复制环境变量模板
cp .env.example .env
# 编辑.env文件,添加DeepSeek API密钥
DEEPSEEK_API_KEY=your_deepseek_api_key_here
- Iniciar o banco de dados Neo4j
# 启动Docker容器
docker-compose up -d
# 等待数据库启动完成
npm run test-connection
- Compilar o projeto
npm run build
- Extrair relações entre conceitos (modo de teste)
# 测试模式:只处理一个文档文件
npm run extract-triplets:test-mode
- 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íficodirection: 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ção0.9-1.0: relação técnica explícita, com descrição direta e clara na documentação0.7-0.9: relação relativamente explícita, inferida do contexto com evidências suficientes0.5-0.7: confiança média, a relação existe mas requer algum raciocínio0.3-0.5: relação mais fraca, baseada principalmente em similaridade semântica0.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
- Coloque o documento Markdown no diretório
sources/docs/ - Execute a extração de relações entre conceitos:
npm run extract-triplets - 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!