Data Engineering Tutor MCP Server
Un tutor de Data Engineering que proporciona actualizaciones personalizadas sobre conceptos, patrones y tecnologías.
Documentación
Data Engineering Tutor MCP Server
Este repositorio contiene un servidor simple de Protocolo de Contexto de Modelo (MCP) construido con Node.js y TypeScript. Actúa como un "Tutor de Ingeniería de Datos", proporcionando actualizaciones personalizadas sobre conceptos, patrones y tecnologías de Ingeniería de Datos a un cliente de IA conectado.
Este servidor demuestra conceptos clave de MCP: definir Recursos, Herramientas y Prompts para crear un asistente de agente interactivo y con estado.
Prerrequisitos
- Node.js (v18 o posterior recomendado)
npm(o tu gestor de paquetes de Node.js preferido comoyarnopnpm)- Un cliente de IA capaz de conectarse a un servidor MCP (por ejemplo, Cursor, la aplicación de escritorio de Claude)
- Una clave de API de OpenRouter (para obtener actualizaciones en vivo de Ingeniería de Datos a través de Perplexity)
Configuración
-
Clonar el repositorio:
# If you haven't already # git clone <repository-url> # cd <repository-directory> -
Instalar dependencias:
npm install -
Preparar la clave de API: La herramienta
de_tutor_get_updatesrequiere una clave de API de OpenRouter.- Obtén tu clave de OpenRouter.
- Crea un archivo
.enven la raíz del proyecto (puedes copiar.env.example). - Añade tu clave al archivo
.env:
(Reemplaza el marcador de posición con tu clave real.)OPENROUTER_API_KEY=sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx
-
Compilar el servidor: Compila el código TypeScript.
npm run build
Ejecutar el servidor
Puedes ejecutar el servidor directamente usando Node:
node build/index.js
Alternativamente, configura tu cliente MCP (como Cursor o la aplicación de escritorio de Claude) para lanzar el servidor. El nombre del servidor es de-tutor y el nombre del binario (si es necesario para la configuración del cliente) también es de-tutor.
Ejemplo de configuración del cliente (por ejemplo, para Claude Desktop):
{
"mcpServers": {
"de-tutor": {
"command": "node",
"args": ["/full/path/to/your/project/build/index.js"],
"env": {
"OPENROUTER_API_KEY": "sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
(Asegúrate de que la ruta en args sea la ruta absoluta correcta al archivo index.js compilado en tu sistema. Puede que no necesites la sección env aquí si ya estás usando el archivo .env, ya que el servidor lo carga directamente a través de dotenv.)
Uso con Cursor
Cursor es un editor de código centrado en IA que puede actuar como cliente MCP. Configurar este servidor con Cursor requiere configurar el lanzamiento del servidor y potencialmente configurar una Regla de Proyecto para el prompt de guía, aunque Cursor también podría recoger el prompt proporcionado por el servidor.
-
Configurar el servidor en Cursor:
- Ve a
Cursor Settings>MCP>Add new global MCP server. - Pega el mismo JSON que en el ejemplo de configuración del cliente anterior, asegurándote de que la ruta a
build/index.jssea correcta para tu sistema.
- Ve a
-
(Opcional) Crear una Regla de Proyecto de Cursor para el Prompt: Si prefieres reglas explícitas o descubres que Cursor no está usando el prompt del servidor automáticamente, puedes proporcionar la guía usando la función de Reglas de Proyecto de Cursor.
-
Crea el directorio
.cursor/rulesen la raíz de tu proyecto si no existe. -
Crea un archivo dentro de él llamado
de-tutor.rule(o cualquier nombre de archivo.rule). -
Pega el siguiente texto de guía en
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 y usar:
- Asegúrate de que el servidor
de-tutoresté habilitado en la configuración de MCP de Cursor. - Si usas un archivo de regla: Inicia un nuevo chat o solicitud de generación de código (por ejemplo, Cmd+K) e incluye
@de-tutor-rule(o como hayas nombrado tu archivo de regla) en tu solicitud. Esto le dice a Cursor que cargue el contenido de la regla, proporcionando instrucciones sobre cómo usar las herramientas. - Si confías en el prompt del servidor: Simplemente comienza a interactuar con Cursor; debería tener acceso a las herramientas y al prompt de guía proporcionado por el servidor.
- Asegúrate de que el servidor
Características y uso
Este servidor proporciona las siguientes capacidades:
- Recurso (
data_engineering_knowledge_memory): Almacena un objeto JSON simple endata/data-engineering-knowledge.jsonque mapea conceptos conocidos (cadenas) a banderas booleanas (true). - Herramientas:
de_tutor_read_memory: Lee los conceptos conocidos actuales del archivo JSON.de_tutor_write_memory: Actualiza el archivo JSON para marcar un concepto como conocido (true) o desconocido (false). Tomaconcept(cadena) yknown(booleano) como entrada.de_tutor_get_updates: Usa tu clave de API de OpenRouter para consultar a Perplexity (perplexity/sonar-small-online) sobre noticias, patrones y tecnologías recientes de Ingeniería de Datos.
- Prompt (
data-engineering-tutor-guidance): Proporciona instrucciones al cliente de IA conectado sobre cómo usar las herramientas en un flujo de trabajo:- Obtener las últimas actualizaciones.
- Leer los conceptos conocidos de la memoria.
- Presentar nueva información al usuario.
- Actualizar la memoria según los comentarios del usuario.
Desarrollo y depuración
- Compilación:
npm run buildcompila TypeScript a JavaScript en el directoriobuild/. - Estructura del código: Consulta
src/para ver los detalles de implementación:src/index.ts: Punto de entrada del servidor. ImportaMcpServeryStdioServerTransportdesde rutas específicas del SDK. InstanciaMcpServer. Importa y llama a las funciones de registro (registerPrompts,registerResources,registerTools) desde otros módulos, pasando la instancia del servidor. Configura y conecta el servidor usandoStdioServerTransport.src/prompts/index.ts: Define el texto del prompt de guía. ExportaregisterPrompts, que toma la instancia deMcpServery usaserver.prompt()para registrar el prompt de guía estático con su callback.src/resources/index.ts: Exporta el tipoKnowledgeMemoryy funciones auxiliares (readMemoryFile,writeMemoryFile) para E/S de archivos endata/data-engineering-knowledge.json. ExportaregisterResources, que toma la instancia deMcpServery usaserver.resource()para registrar el recursodata_engineering_knowledge_memorycon un URI específico y unReadResourceCallback.src/tools/index.ts: ExportaregisterTools, que toma la instancia deMcpServery usaserver.tool()para registrar cada herramienta (de_tutor_read_memory,de_tutor_write_memory,de_tutor_get_updates). Define esquemas de entrada usando Zod cuando sea necesario (parawrite_memory). Las funciones de las herramientas usan ayudantes deresources/index.tsofetchpara realizar acciones y devolver resultados en el formato esperado.
- Inspector MCP: Usa
@modelcontextprotocol/inspectorpara ver el flujo de mensajes en bruto:
(Asegúrate de quenpx @modelcontextprotocol/inspector node ./build/index.jsOPENROUTER_API_KEYesté configurado en tu entorno si ejecutas de esta manera y no dependes únicamente del archivo.envcargado por el propio servidor.)
Notas
- Este servidor usa un archivo simple (
data/data-engineering-knowledge.json) para almacenar el conocimiento del usuario. Para aplicaciones más robustas, considera una base de datos adecuada. - El manejo de errores es básico; los servidores de producción necesitarían una gestión de errores más completa.
Conclusión
Esta demostración muestra los pasos principales involucrados en la creación de un servidor MCP funcional usando el SDK de TypeScript y la clase McpServer. Definimos un recurso para gestionar el estado, herramientas para realizar acciones (incluyendo la interacción con una API externa) y un prompt para guiar al cliente de IA.
Esto proporciona una base para construir capacidades agénticas más complejas y útiles con MCP.
(Además, si encuentras algún 🐛error, no dudes en abrir un issue.)