任务核心定位
聚焦 AI 学习场景(覆盖 Python 基础、LLM 原理、RAG 实战、Dify/n8n 工具使用等方向),基于 Dify + MCP 协议搭建「AI 学习智能 Agent」。该 Agent 能根据用户的学习阶段(新手/进阶)、目标(如掌握 Dify 实战/搭建 RAG 系统)、每日可投入时长,自动生成「知识点学习内容 + 可落地实战任务」,并通过 MCP 协议对接外部学习资源(如 GitHub 学习仓库、AI 官方文档、在线代码评测平台),实现“个性化学习计划生成→学习资源调取→实战任务设计→进度追踪”的闭环,解决 AI 学习“无规划、无方向、学完不会用”的痛点。
一、任务基础信息
- 适用人群:AI 学习新手/进阶者、想要系统化学习 LLM/RAG/Dify 的开发者、教育类工具搭建者;
前置条件:
- 已部署 Dify(v1.10.0+ 版本,支持 MCP 协议,Docker/私有化部署均可);
- 开发环境:Python 3.8+(搭建 MCP Server)、Git(对接 GitHub 学习资源)、浏览器(Dify 操作);
学习资源准备:
- 本地/在线 AI 学习知识库(如 Python 基础、RAG 原理、Dify 文档等 Markdown/PDF 资料);
- 可选对接外部工具:GitHub API(调取学习仓库)、LeetCode API(Python 刷题)、Dify 官方文档 API;
- 工具支持:FastAPI(搭建 MCP Server)、uvicorn(运行 Server)、requests(接口调用);
- 任务周期:2-3 天(按「MCP Server 搭建→Dify 配置→工作流编排→测试优化」推进);
最终产出:可直接使用的 AI 学习 Agent,输入指令如“我是 AI 新手,每天 1.5 小时,目标 2 周掌握 Dify 实战,生成今日学习计划”,即可返回:
- 当日学习内容(知识点+资源链接);
- 当日实战任务(步骤清晰、可落地的小任务);
- 学习验证方式(如代码运行、效果验收标准)。
二、核心原理:MCP 协议对接 AI 学习工具链
本次 Agent 核心通过 MCP 协议对接 3 类核心工具(由 MCP Server 封装),Dify 作为“大脑”编排流程:
- MCP Server 作用:封装“学习资源查询、实战任务生成、进度记录”3 类工具,提供标准化 MCP 协议接口;
- Dify 工作流作用:解析用户需求→调用 MCP 工具→整合结果→输出个性化学习计划。
三、任务详细拆解(Step-by-Step 落地)
阶段 1:搭建 AI 学习专属 MCP Server(1 天)
核心目标:封装 3 类 AI 学习工具,提供 MCP 协议接口供 Dify 调用
具体操作:
创建 MCP Server 项目&安装依赖
新建文件夹
ai-learning-mcp-server,执行以下命令安装依赖:pip install fastapi uvicorn requests pydantic python-dotenv新建
server.py(核心代码,含 3 类工具封装,可直接复制):from fastapi import FastAPI, HTTPException from pydantic import BaseModel import requests import json from datetime import datetime import os # 初始化 FastAPI 应用 app = FastAPI(title="AI 学习 Agent MCP Server") # ===================== 配置项(可根据自己的学习资源修改) ===================== # 1. 学习资源映射(按阶段/主题分类) LEARNING_RESOURCES = { "新手-Python基础": { "知识点": "Python 变量/数据类型/循环/函数/模块导入", "资源链接": "https://github.com/walter201230/Python.git", "文档": "https://docs.python.org/zh-cn/3/tutorial/index.html" }, "新手-Dify部署": { "知识点": "Docker 基本命令、Dify 一键部署、知识库创建", "资源链接": "https://github.com/langgenius/dify.git", "文档": "https://docs.dify.ai/guides/getting-started/install-docker" }, "进阶-RAG优化": { "知识点": "Embedding 模型选型、分片策略、混合检索、Rerank 重排序", "资源链接": "https://github.com/explodinggradients/ragas.git", "文档": "https://docs.dify.ai/guides/knowledge-base/optimize-retrieval" }, "进阶-MCP协议": { "知识点": "MCP 协议原理、MCP Server 搭建、Dify MCP 插件配置", "资源链接": "https://github.com/langgenius/dify-docs.git", "文档": "https://docs.dify.ai/guides/plugins/mcp-plugin" } } # 2. 实战任务模板(按阶段/主题匹配) PRACTICE_TASKS = { "新手-Python基础": { "任务名称": "Python 基础语法实战", "任务描述": "编写一个 Python 脚本,实现:1. 定义函数计算两个数的和;2. 循环输出 1-10 的偶数;3. 导入 math 模块计算圆的面积(半径手动输入)", "验收标准": "脚本可运行,无语法错误,输出结果正确" }, "新手-Dify部署": { "任务名称": "Dify 本地部署+基础知识库创建", "任务描述": "1. 用 Docker 一键部署 Dify;2. 创建名为「AI 学习笔记」的知识库;3. 上传 1 篇 Python 学习笔记(Markdown 格式);4. 测试 1 个简单问答(如“Python 函数定义规则”)", "验收标准": "Dify 服务正常启动,知识库问答准确率≥80%" }, "进阶-RAG优化": { "任务名称": "Dify RAG 检索效果优化", "任务描述": "1. 基于已有的 Dify 知识库,修改分片参数(Chunk Size=500,Overlap=100);2. 启用混合检索+gte-rerank-v2 模型;3. 设计 5 条测试用例,验证召回率提升≥10%", "验收标准": "检索结果更精准,模糊查询能匹配到相关内容" }, "进阶-MCP协议": { "任务名称": "MCP 对接天气 API 实战", "任务描述": "1. 搭建简易 MCP Server,封装天气查询工具;2. 在 Dify 中配置 MCP 插件;3. 编排工作流,实现“输入城市名→调用 MCP 工具→返回天气信息”", "验收标准": "工作流可正常运行,查询城市天气返回准确结果" } } # 3. 学习进度存储(本地 JSON 文件,简易版) PROGRESS_FILE = "learning_progress.json" if not os.path.exists(PROGRESS_FILE): with open(PROGRESS_FILE, "w", encoding="utf-8") as f: json.dump({}, f) # ===================== MCP 协议核心接口 ===================== # 定义工具调用请求模型 class ToolCallRequest(BaseModel): tool_name: str parameters: dict # 1. MCP 接口:获取工具列表(Dify 必须调用) @app.get("/mcp/tools") async def get_tools(): return { "tools": [ { "name": "get_learning_resource", "description": "根据学习阶段和目标查询对应的学习资源(知识点+链接+文档)", "parameters": [ {"name": "stage", "type": "string", "required": True, "description": "学习阶段:新手/进阶"}, {"name": "topic", "type": "string", "required": True, "description": "学习主题:Python基础/Dify部署/RAG优化/MCP协议"} ] }, { "name": "generate_practice_task", "description": "根据学习阶段和主题生成可落地的实战任务", "parameters": [ {"name": "stage", "type": "string", "required": True, "description": "学习阶段:新手/进阶"}, {"name": "topic", "type": "string", "required": True, "description": "学习主题:Python基础/Dify部署/RAG优化/MCP协议"} ] }, { "name": "record_learning_progress", "description": "记录每日学习进度(完成/未完成)", "parameters": [ {"name": "date", "type": "string", "required": True, "description": "学习日期,格式:YYYY-MM-DD"}, {"name": "stage", "type": "string", "required": True, "description": "学习阶段"}, {"name": "topic", "type": "string", "required": True, "description": "学习主题"}, {"name": "status", "type": "string", "required": True, "description": "进度状态:完成/未完成"} ] } ] } # 2. MCP 接口:调用工具(核心逻辑) @app.post("/mcp/call") async def call_tool(request: ToolCallRequest): tool_name = request.tool_name params = request.parameters # 工具1:查询学习资源 if tool_name == "get_learning_resource": key = f"{params['stage']}-{params['topic']}" if key not in LEARNING_RESOURCES: return {"success": False, "error": f"无匹配的学习资源:{key}"} return {"success": True, "result": LEARNING_RESOURCES[key]} # 工具2:生成实战任务 elif tool_name == "generate_practice_task": key = f"{params['stage']}-{params['topic']}" if key not in PRACTICE_TASKS: return {"success": False, "error": f"无匹配的实战任务:{key}"} return {"success": True, "result": PRACTICE_TASKS[key]} # 工具3:记录学习进度 elif tool_name == "record_learning_progress": try: with open(PROGRESS_FILE, "r", encoding="utf-8") as f: progress = json.load(f) # 存储格式:{日期: {阶段-主题: 状态}} if params["date"] not in progress: progress[params["date"]] = {} progress[params["date"]][f"{params['stage']}-{params['topic']}"] = params["status"] with open(PROGRESS_FILE, "w", encoding="utf-8") as f: json.dump(progress, f, ensure_ascii=False, indent=2) return {"success": True, "result": "学习进度记录成功"} except Exception as e: return {"success": False, "error": f"记录失败:{str(e)}"} # 未知工具 else: raise HTTPException(status_code=404, detail=f"工具 {tool_name} 不存在") # 启动 MCP Server if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8001)
启动并测试 MCP Server
- 运行 Server:在项目文件夹执行
python server.py; - 测试工具列表接口:浏览器访问
http://localhost:8001/mcp/tools,能看到 3 个工具列表即启动成功; 测试工具调用(Postman/浏览器):发送 POST 请求到
http://localhost:8001/mcp/call,请求体示例(查询新手-Dify部署的学习资源):{ "tool_name": "get_learning_resource", "parameters": {"stage": "新手", "topic": "Dify部署"} }- 若返回对应的学习资源信息,说明工具调用正常。
- 运行 Server:在项目文件夹执行
阶段 2:Dify 配置 MCP 插件与工具(0.5 天)
核心目标:让 Dify 识别 MCP Server 中的 3 类学习工具,实现工具调用
具体操作:
安装并配置 MCP 插件
- 登录 Dify 后台 → 插件市场 → 搜索「MCP SSE 插件」→ 安装;
配置插件参数:
- MCP Server URL:
http://你的服务器IP:8001(确保 Dify 能访问该地址,本地部署填http://localhost:8001); - 授权方式:选择「无授权」(简易场景);
- 点击「测试连接」,显示「连接成功」即完成配置。
- MCP Server URL:
验证 MCP 工具识别
- 进入 Dify 「工作室」→ 创建新应用,命名为「AI 学习智能 Agent」,选择「工作流」类型;
在工作流编辑器中,添加「Fetch MCP Tools」节点:
- 插件选择:已安装的 MCP 插件;
- 运行该节点,输出结果中能看到
get_learning_resource/generate_practice_task/record_learning_progress3 个工具,说明识别成功。
阶段 3:编排 AI 学习 Agent 工作流(核心环节,1 天)
核心目标:实现“用户输入→解析需求→调用 MCP 工具→整合学习+实战内容→输出计划”的完整流程
工作流节点配置(按顺序添加):
用户输入 → LLM 节点(解析需求)→ 条件分支 → Call MCP Tool(资源查询)→ Call MCP Tool(实战生成)→ 内容整合 → 输出
→ 进度记录(可选)→ 输出节点 1:用户输入(默认节点)
接收用户自然语言输入,示例:
- 新手:“我是 AI 新手,每天 1 小时,今天想学习 Dify 部署,生成学习计划和实战任务”;
- 进阶:“我是进阶学习者,今天想优化 RAG 检索效果,生成对应的学习内容和实战任务”。
节点 2:LLM 节点(解析学习需求,关键!)
- 模型选择:GPT-3.5 Turbo/DeepSeek-R1(意图识别准确率高);
Prompt 设计(严格按格式解析参数,可直接复制):
你是 AI 学习助手,需解析用户的学习需求,输出以下 JSON 格式的参数(无额外内容): { "stage": "学习阶段(仅填:新手/进阶)", "topic": "学习主题(仅填:Python基础/Dify部署/RAG优化/MCP协议)", "duration": "每日学习时长(如1小时/2小时)", "date": "今日日期(格式:YYYY-MM-DD)" } 规则: 1. 必须从用户输入中提取准确的 stage 和 topic,无法识别时 stage 填“新手”,topic 填“Python基础”; 2. duration 如实提取,无则填“1小时”; 3. date 填当前系统日期(YYYY-MM-DD)。 示例: 用户输入:我是 AI 新手,每天 1 小时,今天想学习 Dify 部署 → 输出: {"stage":"新手","topic":"Dify部署","duration":"1小时","date":"2026-01-12"}- 输出格式:选择「JSON」,确保后续节点能解析参数。
节点 3:Call MCP Tool(调用学习资源查询工具)
- 插件选择:已配置的 MCP 插件;
- 工具名称:
get_learning_resource; 工具参数:
- stage:
{{$node["LLM 节点"].json["stage"]}}(引用 LLM 节点解析的阶段); - topic:
{{$node["LLM 节点"].json["topic"]}}(引用学习主题)。
- stage:
节点 4:Call MCP Tool(调用实战任务生成工具)
- 插件选择:已配置的 MCP 插件;
- 工具名称:
generate_practice_task; 工具参数:
- stage:
{{$node["LLM 节点"].json["stage"]}}; - topic:
{{$node["LLM 节点"].json["topic"]}}。
- stage:
节点 5:内容整合(编辑字段节点)
作用:将学习资源、实战任务、时长整合为易读的每日学习计划,示例配置:
【今日 AI 学习计划】 学习阶段:{{$node["LLM 节点"].json["stage"]}} 学习主题:{{$node["LLM 节点"].json["topic"]}} 每日时长:{{$node["LLM 节点"].json["duration"]}} === 一、学习内容 === 核心知识点:{{$node["Call MCP Tool(资源查询)"].json["result"]["知识点"]}} 学习资源:{{$node["Call MCP Tool(资源查询)"].json["result"]["资源链接"]}} 官方文档:{{$node["Call MCP Tool(资源查询)"].json["result"]["文档"]}} === 二、实战任务 === 任务名称:{{$node["Call MCP Tool(实战生成)"].json["result"]["任务名称"]}} 任务描述:{{$node["Call MCP Tool(实战生成)"].json["result"]["任务描述"]}} 验收标准:{{$node["Call MCP Tool(实战生成)"].json["result"]["验收标准"]}}
节点 6:进度记录(可选,Call MCP Tool)
- 工具名称:
record_learning_progress; 工具参数:
- date:
{{$node["LLM 节点"].json["date"]}}; - stage:
{{$node["LLM 节点"].json["stage"]}}; - topic:
{{$node["LLM 节点"].json["topic"]}}; - status:
未完成(用户完成后可手动修改为“完成”)。
- date:
- 工具名称:
节点 7:输出节点
- 引用「内容整合」节点的输出,将格式化的学习计划返回给用户。
阶段 4:测试与优化(0.5 天)
核心目标:验证 Agent 生成的学习计划精准、实战任务可落地
具体操作:
测试用例设计&验证
用户输入 预期输出 验证要点 “我是 AI 新手,每天 1 小时,今天想学习 Dify 部署” 新手-Dify部署的学习资源+实战任务,格式清晰 知识点准确、实战任务可落地、资源链接有效 “我是进阶学习者,今天想优化 RAG 检索效果” 进阶-RAG优化的学习资源+实战任务 RAG 优化知识点完整、实战任务有量化验收标准 “随便推荐今天的 AI 学习内容” 默认新手-Python基础的学习计划 兜底逻辑生效,无报错 优化方向
- 若 LLM 解析参数错误:在 Prompt 中添加更多示例(few-shot),或降低温度参数(temperature=0.1);
- 若学习资源/实战任务不足:补充
LEARNING_RESOURCES和PRACTICE_TASKS字典(如新增“进阶-n8n 工作流”主题); - 若格式混乱:优化「内容整合」节点的模板,增加换行/分段。
四、企业级/个性化扩展建议
对接更多学习工具:
- 在 MCP Server 中新增工具:对接 LeetCode API(Python 刷题)、AI 教程网站(如 HuggingFace Docs)、Dify 社区案例库;
- 新增“学习效果验证”工具:调用在线代码评测平台,自动校验实战任务的代码正确性。
个性化适配:
- 增加「学习目标」参数(如“找工作/兴趣学习/企业落地”),生成不同侧重点的学习计划;
- 对接用户学习进度,生成“昨日未完成→今日优先学”的联动计划。
多端集成:
- 通过 Dify 的「集成」功能,将 Agent 接入飞书/企业微信/钉钉,每日自动推送学习计划;
- 增加“进度打卡”功能,用户完成实战任务后可上传截图,Agent 自动标记“完成”。
五、总结
关键点回顾
- 本次 AI 学习 Agent 核心通过 MCP 协议封装了「学习资源查询、实战任务生成、进度记录」3 类核心工具,实现了学习计划的自动化生成;
- Dify 工作流的核心是「LLM 解析用户需求→调用 MCP 工具→整合内容」,其中 LLM Prompt 的精准解析是关键;
- 实战任务设计遵循“可落地、可验证”原则,每个任务都有明确的验收标准,避免“学完不会用”。
核心价值
这个 Agent 不仅解决了 AI 学习“无规划”的问题,还通过 MCP 协议打通了“学习资源→实战任务→进度追踪”的全链路,新手可快速上手系统化学习,进阶者可针对性突破难点。你可根据自己的学习目标(如新增“大模型微调”“Agent 开发”等主题),补充 MCP Server 中的学习资源和实战任务模板,适配个性化学习需求。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。