Data Engineering Tutor MCP Server
Um tutor de Engenharia de Dados que fornece atualizações personalizadas sobre conceitos, padrões e tecnologias.
Documentação
Data Engineering Tutor MCP Server
Este repositório contém um servidor simples de Model Context Protocol (MCP) construído com Node.js e TypeScript. Ele atua como um "Tutor de Engenharia de Dados", fornecendo atualizações personalizadas sobre conceitos, padrões e tecnologias de Engenharia de Dados para um cliente de IA conectado.
Este servidor demonstra conceitos-chave do MCP: definindo Recursos, Ferramentas e Prompts para criar um assistente de agente interativo e com estado.
Pré-requisitos
- Node.js (v18 ou posterior recomendado)
npm(ou seu gerenciador de pacotes Node.js preferido, comoyarnoupnpm)- Um cliente de IA capaz de se conectar a um servidor MCP (ex.: Cursor, aplicativo desktop Claude)
- Uma Chave de API OpenRouter (para buscar atualizações ao vivo de Engenharia de Dados via Perplexity)
Configuração
-
Clonar o Repositório:
# If you haven't already # git clone <repository-url> # cd <repository-directory> -
Instalar Dependências:
npm install -
Preparar a Chave de API: A ferramenta
de_tutor_get_updatesrequer uma chave de API OpenRouter.- Obtenha sua chave em OpenRouter.
- Crie um arquivo
.envna raiz do projeto (você pode copiar.env.example). - Adicione sua chave ao arquivo
.env:
(Substitua o espaço reservado pela sua chave real.)OPENROUTER_API_KEY=sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx
-
Compilar o Servidor: Compile o código TypeScript.
npm run build
Executando o Servidor
Você pode executar o servidor diretamente usando Node:
node build/index.js
Alternativamente, configure seu cliente MCP (como Cursor ou o aplicativo desktop Claude) para iniciar o servidor. O nome do servidor é de-tutor e o nome do binário (se necessário para a configuração do cliente) também é de-tutor.
Exemplo de Configuração do Cliente (ex.: para Claude Desktop):
{
"mcpServers": {
"de-tutor": {
"command": "node",
"args": ["/full/path/to/your/project/build/index.js"],
"env": {
"OPENROUTER_API_KEY": "sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
(Certifique-se de que o caminho em args seja o caminho absoluto correto para o arquivo index.js compilado no seu sistema. Você pode não precisar da seção env aqui se já estiver usando o arquivo .env, pois o servidor o carrega diretamente via dotenv.)
Usando com Cursor
Cursor é um editor de código com foco em IA que pode atuar como cliente MCP. Configurar este servidor com Cursor requer configurar o lançamento do servidor e potencialmente configurar uma Regra de Projeto para o prompt de orientação, embora o Cursor também possa captar o prompt fornecido pelo servidor.
-
Configurar o Servidor no Cursor:
- Vá para
Cursor Settings>MCP>Add new global MCP server. - Cole o mesmo JSON do exemplo de configuração do cliente acima, garantindo que o caminho para
build/index.jsesteja correto para o seu sistema.
- Vá para
-
(Opcional) Criar uma Regra de Projeto no Cursor para o Prompt: Se você preferir regras explícitas ou descobrir que o Cursor não está usando o prompt do servidor automaticamente, você pode fornecer a orientação usando o recurso de Regras de Projeto do Cursor.
-
Crie o diretório
.cursor/rulesna raiz do seu projeto, se ele não existir. -
Crie um arquivo dentro dele chamado
de-tutor.rule(ou qualquer nome de arquivo.rule). -
Cole o seguinte texto de orientação em
de-tutor.rule:You are a helpful assistant connecting to a Data Engineering knowledge server. Your goal is to provide the user with personalized updates about new Data Engineering concepts, patterns, and technologies they haven't encountered yet. Available Tools: 1. `de_tutor_get_updates`: Fetches recent general news and articles about Data Engineering. Use this first to see what's new. 2. `de_tutor_read_memory`: Checks which Data Engineering concepts the user already knows based on their stored knowledge profile. 3. `de_tutor_write_memory`: Updates the user's profile to mark whether they have learned or already know a specific Data Engineering concept mentioned in an update. Your Workflow: 1. Call `de_tutor_get_updates` to discover recent Data Engineering developments. 2. Call `de_tutor_read_memory` to understand the user's current knowledge base. 3. Present the new developments to the user, highlighting things they likely don't know. 4. If the user confirms they know a concept or have learned it, call `de_tutor_write_memory` to update their profile. Be concise and focus on delivering relevant, new information tailored to the user's existing knowledge.
-
-
Conectar e Usar:
- Certifique-se de que o servidor
de-tutoresteja habilitado nas configurações de MCP do Cursor. - Se estiver usando um arquivo de regra: Inicie uma nova conversa ou solicitação de geração de código (ex.: Cmd+K) e inclua
@de-tutor-rule(ou como você nomeou seu arquivo de regra) na sua solicitação. Isso informa ao Cursor para carregar o conteúdo da regra, fornecendo instruções sobre como usar as ferramentas. - Se estiver contando com o prompt do servidor: Simplesmente comece a interagir com o Cursor; ele deve ter acesso às ferramentas e ao prompt de orientação fornecido pelo servidor.
- Certifique-se de que o servidor
Recursos e Uso
Este servidor fornece os seguintes recursos:
- Recurso (
data_engineering_knowledge_memory): Armazena um objeto JSON simples emdata/data-engineering-knowledge.jsonmapeando conceitos conhecidos (strings) para flags booleanas (true). - Ferramentas:
de_tutor_read_memory: Lê os conceitos conhecidos atuais do arquivo JSON.de_tutor_write_memory: Atualiza o arquivo JSON para marcar um conceito como conhecido (true) ou desconhecido (false). Recebeconcept(string) eknown(booleano) como entrada.de_tutor_get_updates: Usa sua chave de API OpenRouter para consultar o Perplexity (perplexity/sonar-small-online) em busca de notícias, padrões e tecnologias recentes de Engenharia de Dados.
- Prompt (
data-engineering-tutor-guidance): Fornece instruções ao cliente de IA conectado sobre como usar as ferramentas em um fluxo de trabalho:- Obter as atualizações mais recentes.
- Ler conceitos conhecidos da memória.
- Apresentar novas informações ao usuário.
- Atualizar a memória com base no feedback do usuário.
Desenvolvimento e Depuração
- Compilação:
npm run buildcompila TypeScript para JavaScript no diretóriobuild/. - Estrutura do Código: Veja
src/para detalhes de implementação:src/index.ts: Ponto de entrada do servidor. ImportaMcpServereStdioServerTransportde caminhos específicos do SDK. InstanciaMcpServer. Importa e chama funções de registro (registerPrompts,registerResources,registerTools) de outros módulos, passando a instância do servidor. Configura e conecta o servidor usandoStdioServerTransport.src/prompts/index.ts: Define o texto do prompt de orientação. ExportaregisterPrompts, que recebe a instância deMcpServere usaserver.prompt()para registrar o prompt de orientação estático com seu callback.src/resources/index.ts: Exporta o tipoKnowledgeMemorye funções auxiliares (readMemoryFile,writeMemoryFile) para I/O de arquivo emdata/data-engineering-knowledge.json. ExportaregisterResources, que recebe a instância deMcpServere usaserver.resource()para registrar o recursodata_engineering_knowledge_memorycom uma URI específica e umReadResourceCallback.src/tools/index.ts: ExportaregisterTools, que recebe a instância deMcpServere usaserver.tool()para registrar cada ferramenta (de_tutor_read_memory,de_tutor_write_memory,de_tutor_get_updates). Define esquemas de entrada usando Zod quando necessário (parawrite_memory). As funções de ferramenta usam auxiliares deresources/index.tsoufetchpara executar ações e retornar resultados no formato esperado.
- Inspetor MCP: Use
@modelcontextprotocol/inspectorpara ver o fluxo bruto de mensagens:
(Certifique-se de quenpx @modelcontextprotocol/inspector node ./build/index.jsOPENROUTER_API_KEYesteja definido no seu ambiente se estiver executando desta forma e não contando apenas com o arquivo.envcarregado pelo próprio servidor.)
Notas
- Este servidor usa um arquivo simples (
data/data-engineering-knowledge.json) para armazenar o conhecimento do usuário. Para aplicações mais robustas, considere um banco de dados adequado. - O tratamento de erros é básico; servidores de produção precisariam de um gerenciamento de erros mais abrangente.
Conclusão
Esta demonstração mostra os passos principais envolvidos na criação de um servidor MCP funcional usando o SDK TypeScript e a classe McpServer. Definimos um recurso para gerenciar estado, ferramentas para executar ações (incluindo interação com uma API externa) e um prompt para orientar o cliente de IA.
Isso fornece uma base para construir capacidades de agente mais complexas e úteis com MCP.
(Além disso, se você encontrar algum 🐛bug, sinta-se à vontade para abrir uma issue.)