关于 Data Engineering Tutor MCP Server
这是一款基于 Node.js 和 TypeScript 的 MCP 服务,帮助 AI 客户端提供个性化的数据工程概念、模式和技术动态。它结合最新动态检索与本地文件中的已知概念档案。
主要功能
- 01获取最新数据工程动态
- 02读取和更新概念档案
- 03提供已存知识的 MCP 资源
- 04提供动态处理流程提示词
适用场景
- 01查找近期数据工程新闻与模式
- 02按已知概念筛选动态
- 03记录会话中学到的概念
MCP 相关
向 MCP 客户端提供动态检索工具,以及读取或修改文件形式知识档案的工具,并提供资源和指导提示词。动态检索通过 OpenRouter 查询 Perplexity。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
数据工程导师 MCP 服务
此仓库包含一个使用 Node.js 和 TypeScript 构建的简单 Model Context Protocol(MCP)服务。它充当“数据工程导师”,为连接的 AI 客户端提供有关数据工程概念、模式和技术的个性化更新。
此服务展示了 MCP 的核心概念:定义资源、工具和提示词,从而创建有状态的交互式 Agent 助手。
先决条件
- Node.js(建议使用 v18 或更高版本)
npm(或你偏好的 Node.js 包管理器,例如yarn或pnpm)- 能够连接到 MCP 服务的 AI 客户端(例如 Cursor、Claude 桌面应用)
- OpenRouter API 密钥(用于通过 Perplexity 获取实时数据工程更新)
设置
-
克隆仓库:
# 如果你还没有克隆 # git clone <repository-url> # cd <repository-directory> -
安装依赖项:
npm install -
准备 API 密钥:
de_tutor_get_updates工具需要 OpenRouter API 密钥。- 从 OpenRouter 获取密钥。
- 在项目根目录中创建一个
.env文件(可以复制.env.example)。 - 将密钥添加到
.env文件中:
(请将占位符替换为你的实际密钥。)OPENROUTER_API_KEY=sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx
-
构建服务: 编译 TypeScript 代码。
npm run build
运行服务
你可以直接使用 Node 运行服务:
node build/index.js
或者,配置 MCP 客户端(例如 Cursor 或 Claude 桌面应用)以启动此服务。服务名称为 de-tutor,二进制文件名(客户端配置需要时)也为 de-tutor。
客户端配置示例(例如 Claude Desktop):
{
"mcpServers": {
"de-tutor": {
"command": "node",
"args": ["/full/path/to/your/project/build/index.js"],
"env": {
"OPENROUTER_API_KEY": "sk-or-xxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
(请确保 args 中的路径是系统上已构建的 index.js 文件的正确绝对路径。如果你已经使用 .env 文件,则可能不需要在此处添加 env 部分,因为服务会通过 dotenv 直接加载该文件。)
在 Cursor 中使用
Cursor 是一款 AI 优先的代码编辑器,可作为 MCP 客户端。要在 Cursor 中设置此服务,需要配置服务启动方式,并且可能需要设置 Project Rule 来提供指导提示词,不过 Cursor 也可能会自动读取服务提供的提示词。
-
在 Cursor 中配置服务:
- 前往
Cursor Settings>MCP>Add new global MCP server。 - 粘贴与上方客户端配置示例相同的 JSON,并确保
build/index.js的路径适用于你的系统。
- 前往
-
(可选)为提示词创建 Cursor Project Rule: 如果你更喜欢明确的规则,或者发现 Cursor 没有自动使用服务的提示词,可以通过 Cursor 的 Project Rules 功能提供指导。
-
如果项目根目录中不存在
.cursor/rules目录,请创建该目录。 -
在其中创建一个名为
de-tutor.rule的文件(或使用任何.rule文件名)。 -
将以下指导文本粘贴到
de-tutor.rule中:你是一名友好的助手,连接到一个数据工程知识服务。你的目标是根据用户尚未接触过的数据工程概念、模式和技术,为用户提供个性化的最新资讯。 可用工具: 1. `de_tutor_get_updates`:获取近期的数据工程新闻和文章。首先使用此工具了解最新动态。 2. `de_tutor_read_memory`:根据用户存储的知识档案,检查用户已经了解哪些数据工程概念。 3. `de_tutor_write_memory`:更新用户档案,标记用户是否已学会或已经了解更新中提到的特定数据工程概念。 工作流: 1. 调用 `de_tutor_get_updates`,了解近期的数据工程进展。 2. 调用 `de_tutor_read_memory`,了解用户当前的知识库。 3. 向用户介绍最新进展,重点说明他们可能不了解的内容。 4. 如果用户确认自己了解或已经学会某个概念,调用 `de_tutor_write_memory` 更新其档案。 请简明扼要,专注于提供与用户现有知识相关的新信息。
-
-
连接并使用:
- 确保在 Cursor 的 MCP 设置中启用了
de-tutor服务。 - 如果使用规则文件,请开始新的聊天或代码生成请求(例如 Cmd+K),并在请求中加入
@de-tutor-rule(或你为规则文件指定的名称)。这会告知 Cursor 加载该规则的内容,并提供如何使用这些工具的说明。 - 如果依赖服务提示词,只需开始与 Cursor 交互;它应该能够访问这些工具以及服务提供的指导提示词。
- 确保在 Cursor 的 MCP 设置中启用了
功能与用法
此服务提供以下功能:
- 资源(
data_engineering_knowledge_memory): 在data/data-engineering-knowledge.json中存储一个简单的 JSON 对象,将已知概念(字符串)映射为布尔标记(true)。 - 工具:
de_tutor_read_memory:从 JSON 文件中读取当前已知的概念。de_tutor_write_memory:更新 JSON 文件,将某个概念标记为已知(true)或未知(false)。输入参数为concept(字符串)和known(布尔值)。de_tutor_get_updates:使用你的 OpenRouter API 密钥查询 Perplexity(perplexity/sonar-small-online),获取近期的数据工程新闻、模式和技术。
- 提示词(
data-engineering-tutor-guidance): 为连接的 AI 客户端提供如何在工作流中使用这些工具的说明:- 获取最新资讯。
- 从记忆中读取已知概念。
- 向用户介绍新信息。
- 根据用户反馈更新记忆。
开发与调试
- 构建:
npm run build会将 TypeScript 编译为 JavaScript,并输出到build/目录。 - 代码结构: 有关实现细节,请参阅
src/:src/index.ts:服务入口点。从特定 SDK 路径导入McpServer和StdioServerTransport。实例化McpServer。从其他模块导入并调用注册函数(registerPrompts、registerResources、registerTools),并传入服务实例。使用StdioServerTransport设置并连接服务。src/prompts/index.ts:定义指导提示词文本。导出registerPrompts,该函数接收McpServer实例,并使用server.prompt()及其回调注册静态指导提示词。src/resources/index.ts:导出KnowledgeMemory类型和用于对data/data-engineering-knowledge.json进行文件读写的辅助函数(readMemoryFile、writeMemoryFile)。导出registerResources,该函数接收McpServer实例,并使用server.resource()注册data_engineering_knowledge_memory资源及其特定 URI 和ReadResourceCallback。src/tools/index.ts:导出registerTools,该函数接收McpServer实例,并使用server.tool()注册各个工具(de_tutor_read_memory、de_tutor_write_memory、de_tutor_get_updates)。在需要时使用 Zod 定义输入架构(用于write_memory)。工具函数使用resources/index.ts中的辅助函数或fetch执行操作,并以预期格式返回结果。
- MCP Inspector: 使用
@modelcontextprotocol/inspector查看原始消息流:
(如果以这种方式运行,且不单纯依赖服务自身加载的npx @modelcontextprotocol/inspector node ./build/index.js.env文件,请确保环境中已设置OPENROUTER_API_KEY。)
注意事项
- 此服务使用简单的文件(
data/data-engineering-knowledge.json)存储用户知识。对于更健壮的应用,请考虑使用合适的数据库。 - 错误处理较为基础;生产环境中的服务需要更全面的错误管理。
总结
本演示展示了使用 TypeScript SDK 和 McpServer 类创建可用 MCP 服务所涉及的核心步骤。我们定义了用于管理状态的资源、用于执行操作(包括与外部 API 交互)的工具,以及用于指导 AI 客户端的提示词。
这为使用 MCP 构建更复杂、更实用的 Agent 能力奠定了基础。
(另外,如果你遇到任何 🐛错误,欢迎提交 issue。)
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。