版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目五
智慧校园智能体互联--MCP协议应用项目背景与目标CONTENTS目录【教学目标】【项目背景】【项目目标】【项目分析】【教学目标】01技能目标(1)具备MCPServer开发环境搭建能力。能够配置Python开发环境,熟练安装与管理MCPSDK及相关依赖库。(2)能够开发自定义MCPServer。能够基于MCPSDK编写代码,独立实现工具(Tools)的注册逻辑、资源(Resources)的读取接口以及提示词模板(Prompts)的定义,构建满足特定业务需求(如校园数据查询)的MCP服务端。(3)实现MCP服务与Dify平台的集成:能够将本地或远程部署的MCPServer成功接入Dify知识库或应用中,并配置相应的智能体调用逻辑,实现跨系统的能力互通。【教学目标】知识目标(1)理解模型上下文(ModelContextProtocol,MCP)协议的核心概念与架构。掌握MCP的定义、设计初衷及其在AI智能体互联中的标准化价值;理解MCP的客户端、主机与服务器(Server)三层架构模型。(2)掌握MCP的通信与交互机制。熟悉MCP协议基于JSON-RPC的消息传递格式,理解标准输入输出(Stdio)与服务器发送事件(SSE)两种传输模式的区别与适用场景。(3)精通MCP的三大核心能力要素。深入理解工具(Tools)、资源(Resources)与提示词模板(Prompts)的定义、功能边界及其在智能体上下文构建中的作用。(4)了解MCP生态与Dify集成原理。认知MCP开源生态的构成,理解Dify平台接入MCP服务的工作流程与技术规范。【教学目标】素养目标(1)培养标准化与规范化意识。通过学习MCP协议,建立软件工程中的“协议先行”与“接口标准化”思维,理解统一标准对于降低系统耦合度、提升互操作性的重要意义。(2)树立开放生态与协作精神。理解开源协议生态的价值,养成在开发中积极复用现有标准组件、避免重复造轮子的工程习惯,增强对技术生态的适应能力。(3)提升系统安全与边界意识。在开发MCP工具与资源接口时,建立数据权限控制与安全隔离的意识,确保智能体在访问外部系统时的安全性与合规性。【教学目标】【项目背景】02随着“智慧校园”建设的深入,校园内各类信息化系统(如教务系统、图书馆系统、一卡通系统、宿舍管理系统等)往往以“数据孤岛”的形式存在。传统的智能体开发模式在对接这些分散系统时,通常需要针对每个系统单独开发API接口插件(Tools),这导致了开发成本高昂、维护困难且复用性差。当后端系统接口变更时,前端智能体往往需要同步重构,系统的耦合度过高限制了智能体的扩展能力。模型上下文协议(ModelContextProtocol,简称MCP),旨在为大语言模型(LLM)与外部数据源、工具之间提供一种通用的开放标准。MCP协议通过标准化的接口定义,使得智能体能够像插拔U盘一样轻松连接各类异构系统,而无需为每个系统编写专用的适配代码。在智慧校园场景中,引入MCP协议将彻底改变智能体获取校园服务的方式,实现从“点对点定制对接”向“标准化协议互联”的架构升级,为构建全域互联的校园超级智能体奠定技术基础。【项目背景】项目目标03本项目旨在通过引入MCP协议,构建一个具备标准化互联能力的智慧校园服务生态。具体目标包括:1.构建标准化的MCP服务端不依赖传统的HTTPAPI插件模式,而是基于MCP协议规范,开发一套包含校园常用功能的MCP服务。该服务需封装“查询图书库存”、“获取空闲教室”、“查询食堂菜单”等功能,对外暴露标准的资源(Resources)、工具(Tools)和提示词(Prompts)。2.实现跨平台的能力复用验证MCP协议的互操作性,确保开发出的MCP服务不仅能被本地调试工具识别,也能无缝接入Dify智能体编排平台,实现“一次开发,多处调用”。3.打造互联互通的智能体应用在Dify平台中集成上述MCP服务,构建一个能够灵活调用多种校园服务资源的综合型智能体,解决传统开发模式下接口维护繁琐、系统割裂的问题,提升智能体对校园复杂业务场景的响应能力。【项目目标】项目分析04本项目是智能体开发技术的高级进阶实践,其核心挑战在于从“单体应用开发”转向“分布式协议对接”。项目实施需重点解决以下3个层面的技术问题。1.协议理解与架构映射MCP协议引入了“客户端层”“服务端层”“宿主层”的三层架构,以及标准输入输出(Stdio)与服务器发送事件(SSE)两种通信模式。项目需首先理清这些概念在Dify环境下的映射关系,明确Dify作为MCPClient如何与作为MCPServer的后端服务进行数据交互。2.Server端的核心要素实现MCPServer不仅仅是简单的API封装,更强调“上下文”的供给。项目实施中需深入分析资源(Resources)、工具(Tools)和提示词(Prompts)的区别与联系。利用资源(Resources)机制,让智能体直接读取校园公告、校历等静态数据;利用工具(Tools)机制,赋予智能体执行查询成绩、预约场地等操作的能力;利用提示词(Prompts)机制,预置标准的交互模板,规范智能体的回复风格。3.环境集成与调试链路不同于传统的HTTP接口调试,MCP协议基于JSON-RPC消息格式。项目需通过MCPInspector等专用工具进行协议层面的抓包与验证,并解决本地MCPServer在接入Dify容器化环境时可能遇到的网络通信与鉴权问题,确保整个互联链路的稳定性。【项目分析】知识准备5.1MCP(ModelContextProtocol)协议概述随着大语言模型(LLM)应用生态的爆发,如何让模型高效、安全地连接外部数据与工具,成为了智能体开发的核心挑战。模型上下文协议(ModelContextProtocol,简称MCP)是一套旨在标准化LLM与外部系统交互的开源规范。MCP协议的出现,标志着智能体互联从“点对点定制”时代迈向了“标准化总线”时代。【知识准备】在MCP协议出现之前,智能体(AIAgent)获取外部能力的各种方式存在显著的碎片化问题。1.传统工具调用(FunctionCalling)的困境早期的智能体开发主要依赖各模型厂商私有的工具调用接口或LangChain等框架的插件标准。这种模式面临着严重的“M×N”集成难题:假设有M个大模型应用(如通义千问、Dify)和N个数据源(如本地数据库、知识库),开发者需要为每一个模型应用分别开发适配N个数据源的连接器。这不仅导致了重复造轮子,且接口标准不统一,维护成本极高。一旦后端系统的API发生变更,所有对接该系统的智能体都需要进行代码层面的更新。2.MCP带来的变革MCP协议提出了一种类似“USB-C接口”的通用标准。它解耦了“模型端(Host)”与“数据端(Server)”的连接逻辑。(1)对于模型应用只需实现一次MCP客户端标准,即可连接所有支持MCP协议的数据源,无需为每个数据源编写专用代码。(2)对于数据提供方只需开发一个符合MCP标准的服务端,即可被所有支持MCP的AI应用(如Dify)直接调用。这种架构将复杂的网状集成关系简化为标准化的星型或总线型连接,极大地促进了智能体生态的互操作性。5.1.1从工具调用到MCP的演进MCP协议采用经典的“客户端-服务器”架构,但在AI场景下,其角色的定义与传统Web开发略有不同。MCP架构主要包含以下3个核心组件。1.MCP主机(MCPHost)核心协调层。MCP主机是MCP架构中的“指挥官”,通常指发起LLM请求的应用程序实体(如IDE、AI操作系统等)。MCP主机负责维护整个对话的生命周期与上下文环境,管理用户授权,并决定何时向服务器发起工具调用请求。它是连接LLM模型与MCP生态系统的枢纽。2.MCP服务器(MCPServer)工具适配层。MCP服务器是具体能力的提供者,负责封装各类外部系统的数据与功能。MCP服务器对外暴露标准化的资源(Resources)、工具(Tools)和提示词(Prompts)。它不关心是哪个LLM在调用它,只专注于执行指令并返回结果。服务器极为灵活,既支持本地部署(如运行在用户电脑上的Python脚本,提供本地文件操作或计算器服务),也支持远程部署(如运行在云端的容器服务,提供地图导航、天气查询或企业级数据库访问接口)。3.MCP客户端(MCPClient)交互入口层。MCP客户端是连接MCP主机与MCP服务器的桥梁,通常作为MCP主机内部的一个组件或独立插件存在(例如VSCode的Cline插件,或Dify平台内部的MCP连接器)。5.1.2MCP协议架构5.1.2MCP协议架构以MCP主机为核心,它在与用户交互的同时,通过MCP客户端统一管理上下文流转。随后,MCP客户端根据需求分发指令,一方面通过JSON-RPC2.0通信驱动本地MCP服务器调用本地工具与资源,另一方面通过HTTP/HTTPS通信请求远程服务器调用云端API或数据库.最终,内外两端的数据与执行结果回传至主机,完成从用户意图到自动化操作的闭环。MCP协议基于JSON-RPC2.0规范进行消息交换,这是一种无状态、轻量级的远程过程调用协议。为了适应不同的部署场景,包括本地桌面应用、云端应用、Web应用,MCP定义了2种主要的传输层机制。1.标准输入输出(Stdio)传输模式(1)工作原理:主机应用作为父进程,通过命令行直接启动服务器应用作为子进程。双方通过标准输入(stdin)和标准输出(stdout)管道进行通信。(2)适用场景:适用于本地开发环境或桌面应用。这种模式安全性高,因为通信局限在本地进程间,无需暴露网络端口,且服务器的生命周期由主机直接管理。(3)典型特征:通信延迟极低,配置简单,但局限本地访问。2.SSE(Server-SentEvents)传输模式(1)工作原理:基于HTTP或HTTPS协议。主机作为HTTP(或HTTPS)客户端向服务器发起连接,通过SSE(服务器发送事件)建立单向持久连接,服务器实时向主机推送消息(如日志、进度通知)。主机通过标准的HTTP或HTTPSPOST请求向服务器发送JSON-RPC指令。(2)适用场景:适用于分布式系统或Web应用(如Dify平台)。服务器可以部署在独立的服务器或容器中,通过网络URL被远程的主机访问。(3)典型特征:支持跨网络调用,灵活性强,适合构建企业级微服务架构的智能体系统。5.1.3MCP通信协议MCP为开发和部署AI驱动的应用带来多项潜在优势,使LLM更加多功能、可靠且高效。1.减少幻觉LLM本质上可能会编造事实,或生成看似合理但实则错误的信息(产生幻觉),因为其回答基于训练数据而非实时信息。MCP提供清晰路径,使LLM能访问外部可靠数据源,从而提高回答的真实性并减少幻觉。2.提升AI的实用性与自动化能力该协议可扩展AI的能力,并实现其自主运行。通常,LLM仅了解其训练数据,而这些数据可能很快变得过时。不过,借助MCP,LLM可以连接多个现成工具与集成,如业务软件、内容存储库和开发环境。这意味着AI能胜任更复杂的任务,例如更新CRM系统中的客户信息、在线查询时事或执行特定计算。通过直接连接这些外部工具,LLM不再是单一的聊天程序,而是具备自主行为能力的智能体,从而实现更大程度的自动化。3.为AI提供更便捷的连接在MCP推出之前,LLM要连接到不同的外部数据源和工具非常困难,通常需要专用连接或供应商专属方法。这导致系统变得极其复杂且混乱,因为每新增一个模型或工具,所需的自定义连接数量都会快速增长。MCP提供了一个通用的开放标准,简化了连接过程,就像USB-C接口让设备连接更轻松一样。这种简化的方法有助于降低开发成本,加快AI应用开发,并构建更互联的AI环境。开发者还可以更轻松地在不同LLM提供商之间切换,并添加新工具,无需大幅修改。5.1.4使用MCP的优势MCP协议的设计初衷是为大语言模型(LLM)提供标准化的“手”“眼”和“经验”。为此,协议定义了3种基础原语(Primitives),构成了MCP服务器能够向主机提供的核心能力集。这3类能力分别是:工具(Tools)、资源(Resources)和提示词模板(PromptTemplates)。理解这3者的区别与应用场景,是开发高质量MCP服务器的基础。5.2MCP的核心能力工具(Tools)是MCP协议中最具行动力的组件,它赋予了大语言模型(LLM)“执行操作”的能力。从功能上类比,工具(Tools)相当于传统软件开发中的API接口或函数(Function),但在MCP架构中,它们被封装成了模型可以理解并调用的形式。1.定义与特征工具本质上是可执行的代码逻辑,具有以下核心特征:(1)可被调用:工具可以被主机端的大模型触发,执行具体的计算任务或副作用操作(如写入数据库、发送邮件)。(2)参数化:每个工具都定义了严格的输入参数结构(Schema),通常使用JSONSchema描述。LLM会根据上下文自动填充这些参数。(3)结果反馈:工具执行完毕后,必须返回结果(可以是文本、JSON数据或图像)给LLM,供其进行后续的推理或回复。5.2.1工具(Tools):模型可调用的操作2.典型应用场景工具(Tools)主要用于处理那些“需要计算”或“改变状态”的任务:(1)查询类操作:例如查询成绩、查询图书库存。(2)事务类操作:例如预约教室、提交报修单。(3)计算类操作:例如计算平均绩点。3.交互流程当LLM决定调用工具时,交互流程如下:(1)工具发现:主机向服务器请求工具列表,服务器返回可用工具及其参数定义。(2)意图识别:LLM分析用户指令,决定调用哪个工具,并生成对应的参数JSON。(3)执行请求:主机将参数发送给服务器,请求执行该工具。(4)执行与响应:服务器运行代码逻辑,将执行结果返回给主机,主机再将其传递回LLM。5.2.1工具(Tools):模型可调用的操作资源(Resources)代表了MCP服务器向LLM暴露的“静态数据”或“上下文内容”。如果说工具(Tools)是模型的手,那么资源(Resources)就是模型的眼,它允许LLM直接阅读外部系统中的文件、数据库记录或实时日志。1.定义与特征资源是数据的直接映射,具有以下特征:(1)被动读取:与工具(Tools)不同,资源(Resources)通常是只读的,主要用于为LLM提供背景知识。(2)URI标识:每个资源都有一个唯一的URI(统一资源标识符),例如“file:///logs/app.log”或“database://users/schema”。(3)订阅机制:主机可以订阅某个资源。当资源内容发生变化时(如日志更新),服务器会主动通知主机,使LLM能够感知实时动态。2.典型应用场景资源(Resources)适用于提供那些无需参数、作为背景参考的信息:(1)系统日志:例如,实时读取教务系统的运行日志,用于AI辅助运维诊断。(2)配置文件:例如,如读取学校的校历安排、作息时间表等静态配置。(3)文档内容:例如,读取存储在服务器上的《信息大学校园制度》文本或代码仓库中的特定文件。3.资源(Resources)与工具(Tools)的区别工具(Tools)强调动作和参数,如“去查询一下某信息”。资源(Resources)强调内容本身,如“这是文件A的内容”。5.2.2资源(Resources):模型可读取的数据提示词模板(PromptTemplates)是MCP协议中用于复用“专家经验”的机制。它允许服务器预定义一组结构化的提示词(Templates),帮助主机或用户更高效地使用服务器提供的能力。1.定义与特征提示词模板是一组预设的对话模版,包含:(1)预设指令:定义了AI的角色、任务目标和行为约束。(2)动态参数:模板中可以包含变量,在调用时由用户或UI填充。(3)上下文关联:提示词模板可以自动关联服务器端的工具和资源,通过一步操作构建完整的任务上下文。2.典型应用场景提示词模板主要用于降低用户的使用门槛,将复杂的任务流程简化下来:(1)代码审查:服务器提供一个名为“review_code”的提示词模板,自动加载代码文件(Resource)并指令AI检查潜在代码问题(Bug)。(2)故障排查:定义一个名为“debug_error”的提示词模板,模板内容为“请分析以下错误日志[日志资源],并调用[查询工具]检查系统状态,最后给出修复建议。”(3)校园助手初始化:定义一个名为“campus_guide”的提示词模板,预设系统提示词为“你是一名热情的校园向导,请根据校历资源回答问题...”,用户只需选择该模板即可启动配置好的智能体。5.2.3提示词模板(PromptTemplates):可复用的交互模板5.2.3提示词模板(PromptTemplates):可复用的交互模板3.设计意义提示词模板实现了提示词工程(PromptEngineering)的代码化。通过将优秀的提示词模板封装在MCPServer中,开发者不仅分发了工具(Tools)和资源(Resources),还分发了“如何使用这些工具和数据”的最佳实践。描述了MCP三大能力关系,顶部为提示词模板,作为交互入口并承载最佳实践,左下为工具,负责执行具体操作与动态交互,右下为资源,提供背景数据与静态上下文。三者协同构成完整体系,其中提示词模板可灵活引用工具与资源,组合形成一个完整的任务执行包。掌握了MCP协议的理论架构与核心能力后,下一步是将这些概念转化为实际的代码实现。开发一个MCPServer本质上是构建一个遵循JSON-RPC规范的服务端程序,该程序负责监听客户端请求,并根据协议定义返回相应的资源、工具或提示词。为了简化这一过程,MCP社区提供了多种编程语言的SDK(软件开发工具包),使得开发者能够专注于业务逻辑的实现。5.3MCP开发基础虽然理论上可以使用任何支持标准输入输出(Stdio)或HTTP通信的语言来实现MCP协议,但在实际工程中,使用官方或社区维护的SDK能显著提高开发效率与规范性。目前主流的开发框架主要包括TypeScrip/Node.jsSDK和PythonSDK。1.PythonSDKPython是AI领域最通用的编程语言,也是开发数据驱动型MCPServer的首选。(1)核心库:mcp是官方提供的基础库,提供了底层的协议封装。为了进一步降低开发门槛,社区推出了FastMCP框架,通常包含在mcp库的高级模块中或作为独立封装存在。(2)设计理念:FastMCP借鉴了FastAPI的设计哲学,采用装饰器模式。开发者只需在普通的Python函数上添加“@mcp.tool”或“@mcp.resource”装饰器,框架就会自动解析函数的类型提示和文档字符串,将其转换为MCP协议所需的Schema定义。(3)适用场景:适合数据分析、本地文件操作、连接Python生态丰富的AI库,如PyTorch、Pandas等场景。5.3.1MCPServer开发框架2.TypeScript/Node.jsSDK对于前端开发者或需要构建高并发I/O密集型服务的场景,TypeScriptSDK是理想选择。(1)核心库:@modelcontextprotocol/sdk。(2)设计理念:采用事件驱动和类定义的方式。开发者通过实例化MCP服务器类,并注册相应的处理函数来响应MCP主机的请求。它对JSONSchema的支持更为原生,适合与现有的Web服务或数据库进行集成。(3)适用场景:适合开发跨平台的Web应用插件、连接云端API网关等场景。本项目将重点以PythonSDK为例,讲解MCPServer的开发流程。5.3.1MCPServer开发框架在MCP服务器开发中,注册一个工具(Tools)通常包含三个步骤:定义函数逻辑、声明参数结构、绑定协议路由。使用PythonSDK时,这一过程被高度简化。1.引入依赖与实例化首先,需要导入核心模块并创建一个MCPServer实例,这个实例将作为后续所有功能的挂载点。5.3.2工具的注册与实现frommcp.server.fastmcpimportFastMCP
#创建一个名为"CampusHelper"的MCPServer实例mcp=FastMCP("CampusHelper")5.3.2工具的注册与实现2.使用装饰器定义工具通过“@mcp.tool()”装饰器,可以将一个普通的Python函数标记为MCP工具。(1)函数名:自动成为工具的名称(Name)。(2)函数文档字符串:自动解析为工具的描述(Description),供LLM理解该工具的用途。(3)类型提示(TypeHints):至关重要。框架会根据参数的类型(如str,int)和“pydantic.Field”描述,自动生成JSONSchema。LLM正是依靠这个Schema来准确填充参数。左图是一个查询图书馆书籍库存的代码示例,可以根据书籍名称查询图书馆的库存状态。在此代码中,开发者无需手动编写JSON格式的接口定义,框架会在后台自动生成如下描述信息发送给MCP主机:(1)ToolName:query_book_inventory(2)Description:根据书籍名称查询图书馆的库存状态。(3)InputSchema:{"type":"object","properties":{"book_name":{"type":"string"}}}单击此处添加文本@mcp.tool()defquery_book_inventory(book_name:str)->str:"""
根据书籍名称查询图书馆的库存状态。
Args:book_name:书籍的标题或关键词
"""#模拟数据库查询逻辑
inventory_data={"Python编程":5,"高等数学":0,"智能体开发实战":12}
count=inventory_data.get(book_name,-1)
ifcount==-1:returnf"未找到书籍:{book_name}"elifcount==0:returnf"《{book_name}》目前已全部借出。"else:returnf"《{book_name}》当前库存充足,剩余{count}本。"由于MCPServer通常作为后台服务运行,且依赖JSON-RPC协议通信,直接通过浏览器或Postman调试较为困难。为此,MCP生态提供了专用的调试工具—MCPInspector。MCPInspector是一个基于Web的可视化调试器。它可以模拟MCP主机(如Dify)的行为,直接连接到开发者编写的本地MCP服务器。它的功能主要包括以下3个:(1)连接测试:验证MCP服务器是否能正常启动并响应握手请求。(2)工具列表查看:直观展示MCP服务器暴露了哪些工具、资源和提示词模板。(3)模拟调用:提供UI界面供开发者输入参数,手动触发工具调用,并实时查看MCP服务器的返回结果与日志。5.3.3MCPServer的调试与测试MCP协议的价值不仅在于其技术规范本身,更在于其背后日益壮大的开源生态系统。通过接入现有的MCP开源服务,开发者可以快速复用社区已有的成果,避免重复开发。同时,作为MCP生态中的重要“主机(Host)”,Dify平台提供了开箱即用的MCP集成能力,使得将本地或云端的MCP服务转化为生产级智能体应用变得简单高效。5.4MCP生态与Dify集成MCP协议发布后,迅速得到了开源社区的响应。目前,Gitee(码云)、Github等代码托管平台上已涌现出大量高质量的MCP服务实现,涵盖了从基础工具到企业级应用的各个领域。理解并善用这些开源资源,是提升开发效率的关键。1.官方与社区维护的服务库MCP官方维护了一个名为“mcp-servers”的核心仓库,其中包含了多种标准化的服务实现。此外,社区开发者也贡献了大量适配第三方服务的服务器。常见的MCP服务类型包括:(1)文件系统类(Filesystem):允许LLM安全地读取、写入本地目录或文件,常用于代码辅助生成或文档处理场景。(2)数据库类(Database):如sqlite、postgres等MCP服务,允许LLM直接执行SQL语句查询数据库结构与内容。(3)开发工具类(DeveloperTools):如管理版本控制、查询错误日志等,辅助AI进行软件开发流程管理。(4)互联网服务类(InternetServices):如网络搜索、地图服务、团队协作等,赋予LLM连接互联网的能力。2.生态的复用价值在智慧校园项目中,虽然核心业务逻辑(如教务查询)需要定制开发,但许多通用能力可以直接复用生态资源。若智能体需要具备“查询校外实习企业信息”的能力,无需自己编写爬虫工具,只需配置并连接开源支持检索的MCP服务,智能体即可立刻获得联网搜索能力。这种“积木式”的开发模式极大地降低了智能体能力扩展的边际成本。5.4.1MCP开源生态Dify作为一款先进的LLM应用编排平台,原生支持MCP协议。在Dify中,MCPServer被视为一种特殊的“工具提供者”。接入成功后,MCP服务器暴露的所有工具都会自动出现在Dify的工具库中,供智能体或工作流自由调用。1.集成原理Dify连接MCP服务器主要依赖SSE(Server-SentEvents)通信模式。(1)部署要求:MCP服务必须以Web服务(如HTTPServer)的形式运行,并对外暴露可访问的URL地址,例如“:8000/sse”。(2)通信流程:Dify后端作为MCP客户端,向该URL发起连接请求。握手成功后,Dify会自动获取MCP服务器提供的工具列表并缓存其参数定义(Schema)。5.4.2在Dify中接入MCP服务5.4.2在Dify中接入MCP服务2.接入步骤在Dify平台中接入MCP服务的标准流程如下:(1)准备服务:确保MCP服务已启动,且网络策略允许Dify服务器访问该服务的端口。(2)添加工具:在Dify的“工具”管理页面,选择“MCP”选项卡,点击“连接MCP服务(HTTP)”。5.4.2在Dify中接入MCP服务(3)配置连接:输入服务的名称和服务URL(如:8000/sse),如果服务开启了鉴权,还需填入APIKey。(4)验证与使用:连接建立后,系统会显示“已连接”状态,并列出该MCP服务下的所有工具。此时,开发者在编排智能体应用时,即可像使用内置工具一样,直接将这些MCP工具添加到“工具调用”节点中。3.常见问题与注意事项(1)网络连通性:如果Dify是通过Docker部署在本地,而MCP服务运行在宿主机上,需注意Docker容器访问宿主机网络的配置(通常需使用ernal)。(2)鉴权安全:在生产环境中,公开暴露MCP服务接口存在安全风险。建议在服务端实现APIKey校验机制,并在Dify连接配置中填入对应的密钥,防止未授权访问。项目实施CONTENTS目录任务5.1接入高德地图MCP服务任务5.2搭建MCPServer开发环境任务5.3开发第一个MCP工具任务5.4为MCP服务扩展资源与提示词模板05任务5.5将自研MCP服务接入Dify平台任务5.1接入高德地图MCP服务01【任务描述】在自主开发复杂的MCP服务端之前,理解Dify平台作为客户端如何与外部服务进行通信是至关重要的。本任务旨在演示如何将国民级应用“高德地图”的开放服务通过MCP协议接入Dify平台。通过配置现有的高德地图MCP服务,在零代码修改Dify底层的情况下,让智能体瞬间拥有地点检索(POI)、天气查询、路线规划等真实世界的地理感知能力,并将其直接应用于智能体应用中。任务5.1接入高德地图MCP服务【任务分析】利用HTTP的方式接入高德地图MCP服务,主要涉及以下3个关键技术环节:1.开发者凭证准备:高德地图等商业API要求进行身份鉴权,须先在高德开放平台注册开发者账号,并申请APIKey。高德地图开放平台为开发者提供了一定的免费调用额度,对于个人项目和小型应用来说通常足够使用。2.服务端点配置:在Dify的平添中添加MCP服务,并配置好高德地图的MCP服务APIKey等信息。3.工具挂载与测试:MCPServer接入成功后,其内部注册的工具(Tools)会自动同步至Dify的工具面板。只需创建一个基础智能体,将该工具赋予大语言模型,即可验证通信链路的连通性。任务5.1接入高德地图MCP服务【任务实现】1.获取高德地图APIKey高德地图APIKey是访问高德地图服务的凭证密钥,相当于一把授权访问的钥匙。(1)首先访问高德开放平台官网,如果还没有账号,需要先以个人名义完成注册流程,填写个人信息并通过验证。注册完成后登录平台,进入控制台界面。(2)在“应用管理”中选择“我的应用”,单击“创建新应用”按钮。填写应用名称为“Dify使用LBS”,应用类型选“教育”。任务5.1接入高德地图MCP服务(3)在刚创建的应用管理界面中,单击右上角的“添加Key”按钮,在弹出的窗口中填写APIKey信息。Key名称填写“dify_lbs_key”,服务平台选择“Web服务”,单击“提交”按钮。(4)创建成功后,可以看到系统会分配一个Key。任务5.1接入高德地图MCP服务2.添加MCP服务准备好APIKey后,就可以回到Dify的管理界面进行添加MCP服务。(1)在工具管理界面中选择MCP,单击“添加MCP服务(HTTP)”按钮,进入配置界面。(2)填写服务端点URL为“/mcp?key={你的APIKey}”,名称为“高德地图MCP”,服务器标识符为“amap-mcp”,认证、请求头及配置3个选项暂不配置。单击“添加并授权”按钮。任务5.1接入高德地图MCP服务(3)配置成功后,会看到“已授权”的绿色标记,并且下方显示包含多个工具列表。3.创建智能体应用(1)返回Dify工作室,新建一个“Agent”类型的应用,命名为“任务5.1-校园出行助手”,单击“创建”按钮。任务5.1接入高德地图MCP服务(2)在智能体编排界面的“工具”区域,将接入的高德服务MCP中的多个工具全部勾选并添加。(3)在系统提示词中设定“你是一位智能地图助手,根据用户提供的出行路线、时间、起止点提供最佳的出行路线。你可以智能调用amap-mcp服务,进行用户位置地点的查询和路线规划和天气查询,并提示天气信息”。任务5.1接入高德地图MCP服务4.调试验证(1)在调试预览界面,输入提示词“我在深圳,明天早上9:00想从福田少年宫坐地铁去深圳湾体育馆。”进行测试。(2)大模型在思考过程中,会主动判断调用MCP服务的哪些工具来完成任务。(3)大模型思考并整理回复结束,会给出一个完整的出行建议及天气提示信息。任务5.1接入高德地图MCP服务【任务小结】本任务通过将高德地图MCP服务成功接入Dify平台,完成了对MCP协议跨系统通信的实战验证。掌握了这套标准的接入规范,读者即可举一反三,将任何具备开放API的企业级系统(如OA、ERP、校园一卡通系统等)快速转化为智能体的工具。任务5.1接入高德地图MCP服务任务5.2搭建MCPServer开发环境02【任务描述】本任务旨在为MCP服务的开发构建坚实的基础运行环境。由于MCP协议涉及跨进程通信与JSON-RPC消息交互,且调试工具依赖于Node.js环境,因此开发环境的配置相比传统的Python项目更为复杂。本任务要求开发者完成Python解释器与Node.js环境的安装验证,构建独立的项目目虚拟环境,并安装MCP协议核心SDK及其配套的命令行工具,确保后续的开发工作能够在一个隔离、纯净且工具链完善的环境中进行。任务5.2搭建MCPServer开发环境【任务分析】搭建MCP服务开发环境需重点解决3个层面的依赖问题。1.语言运行时依赖MCP服务的逻辑实现通常基于Python编程语言,利用其丰富的AI生态,因此需要配置Python运行环境。而官方提供的通用调试器(Inspector)基于Web技术栈开发,依赖Node.js运行时。2.环境隔离为了防止MCP相关依赖库与系统全局Python库产生版本冲突,必须遵循最佳实践,创建项目级的虚拟环境。3.核心组件安装需要安装mcp官方标准库,该库提供了协议握手、消息封装、服务实例构建等底层能力的实现。任务5.2搭建MCPServer开发环境【任务实现】MCP服务的开发涉及Python后端逻辑与Node.js前端调试工具的协同工作,因此环境配置相比常规项目更为严格。本环节将引导开发者逐步完成从基础运行时检查、项目隔离环境构建到SDK(核心软件开发工具包)安装的全过程,确保开发环境的纯净与工具链的完整。1.系统环境检查与准备MCP服务的开发采用“双栈”环境,即逻辑开发依赖Python,调试工具依赖Node.js。(1)Python环境检查打开系统终端(命令提示符或PowerShell),输入命令“python--version”检查Python版本。建议使用Python3.10或更高版本,以获得更好的类型提示支持。教材编写环境使用的python版本为3.11.7。任务5.2搭建MCPServer开发环境若未安装或版本过低(低于3.10),需前往Python官网下载并安装最新版。(2)Node.js环境检查MCPInspector(调试器)是一个Node.js应用程序,通过npx命令运行。需确认系统已安装Node.js,建议v16及以上版本。教材编写环境使用的node版本为v22.15.0,npm版本为10.9.2。任务5.2搭建MCPServer开发环境若终端提示“命令未找到”,需前往Node.js官网下载安装LTS版本。2.构建项目目录与虚拟环境为了规范代码管理,需建立独立的项目工作区。(1)创建项目根目录在本地磁盘创建一个名为“smart-campus-mcp”的文件夹,作为本项目的根目录,并进入该文件夹。任务5.2搭建MCPServer开发环境(2)创建Python虚拟环境在项目根目录下执行以下命令,创建一个名为“venv”的Python虚拟环境。(3)激活虚拟环境激活环境后,终端提示符前通常会出现“(.venv)”标识,表明后续安装的库仅对当前项目生效。使用命令“.venv\Scripts\activate”进行激活虚拟环境。任务5.2搭建MCPServer开发环境3.安装MCP协议核心依赖库在虚拟环境激活的状态下,安装MCP开发所需的Python包。(1)安装mcp标准库使用pip包管理器安装mcp,版本为1.26.0。该库包含了创建MCPClient(客户端)和Server(服务端)所需的所有基础类和类型定义。安装依赖包时可以通过国内镜像源进行加速,如阿里云镜像源。任务5.2搭建MCPServer开发环境(2)验证安装安装完成后,可通过“piplist”命令查看已安装的包列表,确认mcp及其依赖项(如pydantic,anyio等)已正确安装。任务5.2搭建MCPServer开发环境4.配置MCPInspector调试环境MCPInspector是官方提供的可视化调试工具,它充当MCP客户端的角色,用于连接并测试开发者编写的MCP服务。(1)理解npx运行机制调试器不需要通过pip安装,而是通过Node.js的包执行器npx直接从npm仓库拉取并运行。这意味着无需在本地全局安装调试器,确保持久使用最新版本。(2)验证调试器可用性在终端中输入命令“npx@modelcontextprotocol/inspector--help”,测试npx能否正常访问MCPInspector的包信息。此时尚未编写MCP服务代码,仅测试工具链连通性。任务5.2搭建MCPServer开发环境若终端输出了Inspector的帮助文档,说明调试环境配置无误。若出现网络错误,可能需要配置npm镜像源。【任务小结】本任务完成了MCP服务开发的前置准备工作。通过建立Python与Node.js的双栈环境,配置项目级的虚拟环境空间,并成功安装核心SDK,开发环境已具备了编写和调试MCP协议代码的能力。这种标准化的环境配置流程,有效避免了因依赖冲突或版本不兼容导致的开发障碍,为后续开发智慧校园系列MCP工具奠定了稳固的基础。任务5.2搭建MCPServer开发环境任务5.3开发第一个MCP工具03【任务描述】在完成了MCP开发环境的搭建后,本任务将进入核心代码开发阶段。我们将基于Python的MCP框架,编写一个名为“campus_calculator”的MCP服务。该MCP服务将包含一个自定义工具(Tool)——calculate_gpa,用于实现“百分制成绩到绩点(GPA)”的转换逻辑。任务要求读者不仅要完成代码编写,还需深入理解MCP协议中“元数据注册”与“类型推断”的实现机制,并使用MCPInspector调试器对开发的工具进行交互式测试,验证工具发现、参数传递及结果返回的完整流程。任务5.3开发第一个MCP工具【任务分析】开发一个具备实际功能的MCP工具,需要解决以下3个关键技术点:1.服务实例化如何初始化一个MCP服务实例,使其具备基本的协议响应能力。2.工具注册机制如何利用装饰器将普通的Python函数提供给MCP协议,使其转化为大模型可理解的工具描述(ToolSchema)。重点在于如何通过类型提示自动生成参数定义。3.交互式调试由于MCP服务默认运行在标准输入输出模式(Stdio),无法直接通过常规手段访问。必须掌握使用MCPInspector工具模拟主机行为,完成从连接握手到功能调用的全链路验证。任务5.3开发第一个MCP工具【任务实现】本任务将按照“编写服务端代码→启动调试器→验证工具功能”的逻辑顺序进行。1.编写MCP服务端代码在项目根目录下创建一个名为“server.py”的Python文件,该文件将作为整个MCP服务的入口。(1)引入核心框架导入mcp.server.fastmcp模块。mcp是官方提供的高级封装库,它极大地简化了MCP服务的初始化过程,屏蔽了底层的JSON-RPC消息处理细节。如代码5-3所示。任务5.3开发第一个MCP工具frommcp.server.fastmcpimportFastMCP
#实例化MCPServer#参数"SmartCampus"是该服务在客户端显示的名称mcp=FastMCP("SmartCampus")(2)实现业务逻辑并注册工具编写一个计算GPA的函数,关键在于使用“@mcp.tool()”装饰器进行标注,并为函数参数添加明确的类型提示和文档字符串。MCP框架会自动读取函数的文档字符串作为工具描述,读取类型提示作为参数结构。如果省略这些信息,大模型将无法正确理解工具的用途和用法。任务5.3开发第一个MCP工具@mcp.tool()defcalculate_gpa(score:float)->str:"""
根据课程百分制成绩计算单科绩点(GPA)。
Args:score:课程的百分制成绩(0-100分),支持小数。
"""#数据校验逻辑
ifscore<0orscore>100:return"错误:成绩必须在0到100之间"
#业务计算逻辑(标准4.0算法)
ifscore>=90:gpa=4.0elifscore>=85:gpa=3.7elifscore>=82:gpa=3.3elifscore>=78:gpa=3.0elifscore>=75:gpa=2.7elifscore>=72:gpa=2.3elifscore>=68:gpa=2.0elifscore>=64:gpa=1.5elifscore>=60:gpa=1.0else:gpa=0.0
returnf"成绩{score}分对应的绩点为:{gpa}"(3)设置启动入口在文件末尾添加运行指令。mcp.run()方法会自动处理命令行参数,建立与MCP主机的通信连接。2.启动MCPInspector进行调试代码编写完成后,服务端脚本是一个被动响应程序。为了测试它,需要启动MCPInspector作为客户端发起连接。(1)执行调试命令打开系统终端,激活虚拟环境venv,输入以命令“npx@modelcontextprotocol/inspectorpythonserver.py”启动调试器。注意,这里的“pythonserver.py”是告诉调试器如何启动服务端脚本。任务5.3开发第一个MCP工具if__name__=="__main__":mcp.run()(2)访问Web调试界面命令执行成功后,终端会输出服务监听地址,通常为“http://localhost:6277”,在浏览器中打开该链接。此时,MCPInspector会在后台自动启动server.py进程,并通过标准输入输出流与之建立MCP协议连接。任务5.3开发第一个MCP工具(3)验证连接状态单击左侧栏的“Connect”按钮,如果按钮下方显示绿色的“Connected”字样,说明Python服务端已成功启动并响应了MCPInspector的握手请求。任务5.3开发第一个MCP工具3.验证工具发现与调用连接建立仅代表通信通畅,下一步需验证工具是否被正确注册且功能逻辑是否符合预期。(1)检查工具列表在MCPInspector界面的左侧导航栏,点击“Tools”选项卡。此时,列表中应当出现我们在代码中定义的“calculate_gpa”工具。检查工具下方的描述文本是否与代码中的文档字符串一致。任务5.3开发第一个MCP工具(2)模拟调用点击“calculate_gpa”工具条目,展开测试面板。在参数输入区域(Arguments),系统会根据Schema自动生成“score”字段的输入框,如图5-16所示。输入测试数值,例如88.5,单击“RunTool”按钮。查看执行结果观察右侧的"ToolResult"面板,预期输出"成绩88.5分对应的绩点为:3.7"。任务5.3开发第一个MCP工具(3)查看协议日志点击底部的"History"和"ServerNotification"面板,查看JSON-RPC通信报文。可以清晰地看到请求与响应结构,加深对MCP协议底层交互的理解。任务5.3开发第一个MCP工具【任务小结】本任务通过编写代码与交互调试,完成了第一个MCP工具的开发全流程。验证了Pythonmcp框架的核心特性:通过Python装饰器和类型提示,即可自动完成MCP协议中复杂的工具定义生成工作。同时,通过MCPInspector的实际操作,直观体验了MCP协议“发现”“调用”“响应”的交互机制。这不仅是一个简单的计算功能实现,更标志着开发者已经掌握了将任意Python逻辑封装为标准化AI接口的核心能力,为后续开发更复杂的校园数据查询服务奠定了技术基础。任务5.3开发第一个MCP工具任务5.4为MCP服务扩展资源与提示词模板04【任务描述】在实现了工具(Tools)功能后,MCP服务已具备了“执行操作”的能力。为了构建更完善的校园智能体服务,本任务将进一步扩展服务的能力,实现MCP协议的另外2个核心要素:资源(Resources)与提示词模板(Prompts)。任务要求开发者在现有的server.py代码基础上进行迭代。1.定义资源添加一个名为“campus_calendar”的静态资源,用于存储并对外提供学校的“校历安排”数据,使大模型能够直接读取并理解学期时间节点。2.定义提示词模板创建一个名为“academic_advisor”的交互模板,预设“学业规划顾问”的角色设定,并自动关联上述校历资源与成绩计算工具,为用户提供一站式的学业咨询服务。任务5.4为MCP服务扩展资源与提示词模板【任务分析】如果说工具是智能体的“手”,那么资源就是“眼”,提示词模板则是“经验”。1.资源(Resources)开发核心在于定义统一资源标识符(URI)和MIME类型。本任务将利用@mcp.resource
装饰器,将一段静态文本封装为可被模型直接读取的上下文数据,解决大模型缺乏特定领域(如本校校历)背景知识的问题。2.提示词模板(Prompts)开发核心在于构建结构化的交互逻辑。需要利用@mpt装饰器,设计一个包含系统提示词和用户消息的模板结构,并通过代码逻辑将“资源”自动注入到系统提示词中,从而极大降低用户的使用门槛。任务5.4为MCP服务扩展资源与提示词模板【任务实现】本任务将对上一任务中构建的智慧校园服务进行功能升级,将模拟真实的校园业务需求,逐步添加静态数据接口与标准化交互模板。实施过程遵循“定义数据源→注册资源接口→封装交互逻辑”的路径,通过代码注解(Annotations)将普通的Python数据结构转化为MCP协议标准的上下文对象。这不仅丰富了服务端的功能维度,也展示了MCP协议如何通过统一的编程范式管理多样化的智能体能力。1.定义静态资源(Resources)资源通常用于向大模型提供只读的背景数据。在本步骤中,将模拟一份校园校历数据,并通过MCP协议暴露给MCP主机。(1)准备数据源在server.py文件中,定义一个字符串常量,模拟校历内容。在实际生产环境中,这可能读取自数据库或文件。任务5.4为MCP服务扩展资源与提示词模板#模拟校历数据CALENDAR_DATA="""【2024-2025学年第一学期校历】1.开学报到:2024年9月1日2.正式上课:2024年9月2日3.期中考试:2024年11月4日-11月8日4.期末考试:2025年1月6日-1月10日5.寒假开始:2025年1月13日"""(2)注册资源接口使用@mcp.resource()装饰器注册资源。其中URI(统一资源标识符)类型,通过“resource://...”格式定义资源的唯一标识,此处定义为“resource://campus/calendar”。另外,MIME(多用途互联网邮件扩展)类型指定数据的格式,纯文本使用“text/plain”。当MCP主机请求该URI时,框架会自动调用此函数并将返回的字符串作为上下文内容传递给大模型。任务5.4为MCP服务扩展资源与提示词模板@mcp.resource("resource://campus/calendar")defget_campus_calendar()->str:"""获取本学期的校历安排信息"""returnCALENDAR_DATA2.定义提示词模板(Prompts)提示词模板用于封装最佳实践。本任务将创建一个“学业顾问”模板,它会自动加载校历资源,并引导模型使用之前开发的计算工具。(1)设计提示词模板在开放式对话中,用户往往不知道如何精准提问才能触发智能体的特定能力(如“什么时候考试”或“帮我算绩点”)。通过定义一个名为“academic_advisor”的提示词模板,可以预置“学业规划顾问”的角色设定,并显式地告诉大模型“当前有哪些资源可用(如校历)”以及“遇到什么问题该用什么工具(如计算GPA)”。这样,用户只需选择该模板,即可直接进入一个经过优化的、具备上下文感知能力的专业对话场景,无需手动输入冗长的背景信息。。任务5.4为MCP服务扩展资源与提示词模板你是一名专业的学业规划顾问,正在为{student_name}提供咨询服务。
请遵循以下指导原则:1.你的回答必须参考提供的【校历资源】,准确告知重要的时间节点。2.如果学生询问成绩相关问题,请积极使用'calculate_gpa'工具进行计算。3.语气要亲切、专业,富有鼓励性。
当前可用的参考资料(校历)已加载到上下文中。(2)注册模板接口使用@mpt()装饰器,该装饰器无需复杂的Schema配置,重点在于返回值的结构。任务5.4为MCP服务扩展资源与提示词模板@mpt()defacademic_advisor(student_name:str="同学")->str:"""创建一个学业规划顾问的对话上下文。会自动加载校历数据,并引导模型关注考试时间与成绩计算。"""returnf"""你是一名专业的学业规划顾问,正在为{student_name}提供咨询服务。
请遵循以下指导原则:1.你的回答必须参考提供的【校历资源】,准确告知重要的时间节点。2.如果学生询问成绩相关问题,请积极使用'calculate_gpa'工具进行计算。3.语气要亲切、专业,富有鼓励性。
当前可用的参考资料(校历)已加载到上下文中。"""3.使用MCPInspector验证扩展功能保存代码后,重新启动MCPInspector进行测试,验证新增的资源和模板是否生效。(1)重启调试器每次修改服务代码后,都需要重启MCPInspector以重新加载协议定义。在终端中终止之前的进程(Ctrl+C),然后再次运行启动命令“npx@modelcontextprotocol/inspectorpythonserver.py”。(2)验证资源在MCPInspector界面导航栏,单击"Resources"选项卡,单击“ListResources”按钮,列表中显示“get_campus_calendar”资源。任务5.4为MCP服务扩展资源与提示词模板单击“get_campus_calendar”资源链接,预览区域应正确显示代码中定义的CALENDAR_DATA文本内容,这证明资源接口已成功暴露。(3)验证提示词模板单击导航栏的“Prompts”选项卡,在栏目界面中单击“ListPrompts”按钮,列表中应显示“academic_advisor”提示词模板。单击进入详情,在参数框student_name中输入“李明”,点击“GetPrompt”。输出结果应显示渲染后的提示词文本,其中“{student_name}”已被替换为“李明”。任务5.4为MCP服务扩展资源与提示词模板【任务小结】本任务通过代码迭代,将MCP服务的能力从单一的“工具执行”扩展到了“全上下文支持”。通过实现资源接口,本任务将封闭的校历数据开放给了大模型。通过实现提示词模板接口,将“如何扮演学业顾问”的提示词工程经验固化在了代码中。至此,一个功能完备的“智慧校园MCP服务”开发完成,它集成了资源、工具与提示词模板,为下一步接入Dify平台做好了充分准备。任务5.4为MCP服务扩展资源与提示词模板任务5.5将自研MCP服务接入Dify平台05【任务描述】在完成了MCP服务的本地开发与调试后,本任务将进入系统集成的关键阶段。本任务将把运行在本地环境中的智慧校园服务接入到Dify智能体编排平台。由于Dify通常运行在Docker容器或云端环境中,而MCP服务运行在本地宿主机上,因此本任务的重点在于配置网络通信与协议适配。任务要求开发者首先将MCP服务的通信模式从默认的标准输入输出切换为SSE(服务器发送事件)模式,使其能够通过HTTP协议被远程访问。随后,在Dify的工具管理界面配置连接参数,成功识别并加载“calculate_gpa”工具。最后,构建一个“智慧校园助手”智能体应用,在实际对话中调用该MCP工具,完成从“开发态”到“运行态”的闭环验证。任务5.5将自研MCP服务接入Dify平台【任务分析】将本地MCP服务接入Dify平台,核心挑战在于解决“跨环境通信”问题:1.通信协议转换Dify作为Web应用,无法像本地终端那样通过管道(PIPE)启动子进程。必须将MCP服务改造为支持HTTP/SSE协议的网络服务。2.网络拓扑打通如果Dify运行在Docker容器中,它无法直接通过“localhost”或“”访问宿主机。需要使用特殊的网络别名(如“ernal”)来实现容器与宿主机的互联。3.应用编排集成在Dify中,MCP工具的使用方式与内置工具略有不同。需要掌握在对话流或工作流编排界面中添加MCP工具的方法,并编写有效的系统提示词(SystemPrompt)来引导大模型正确调用这些工具。任务5.5将自研MCP服务接入Dify平台【任务实现】本任务分为3个步骤:改造server.py代码以支持SSE、在Dify中配置MCP连接、创建并测试智能体应用。1.改造MCP服务支持SSE通信默认的mcp.run()方法仅支持本地标准输入输出模式,为了让Dify能够通过网络访问,需要将其修改为SSE(服务器发送事件)服务模式。(1)修改启动代码打开server.py文件,注释掉原有的mcp.run()行,替换为图中代码。这段代码将启动一个基于Uvicorn的高性能Web服务器,监听本地8000端口。mcp框架在检测到transport=“sse”参数时,会自动启动Uvicorn服务器并配置好“/sse”和“/messages”路由端点。添加了CORSMiddleware允许Dify的前端界面跨域访问这个服务。任务5.5将自研MCP服务接入Dify平台#原有的启动方式(仅限本地Stdio)#if__name__=="__main__":#mcp.run()
#修改后的启动方式(支持SSE网络访问)if__name__=="__main__":importuvicorn#运行MCP的SSE服务模式
#这里的mcp是之前实例化的FastMCP对象
mcp.run(transport="sse")(2)启动网络服务在终端中运行修改后的脚本:“pythonserver.py”。观察终端输出。如果看到类似“INFO:Uvicornrunningon:8000”的日志,说明MCP服务已成功以Web服务形式启动,正在等待Dify的连接。任务5.5将自研MCP服务接入Dify平台2.在Dify平台配置MCP连接确保Dify平台已正常运行,并按照以下步骤添加工具。(1)访问工具管理页面登录Dify平台,单击顶部导航栏的"工具"菜单,在左侧栏选择"MCP"选项卡。(2)添加MCP服务器点击页面上的“添加MCP服务器(HTTP)”按钮,弹出配置窗口。填写如表5-1所示信息。添加配置页面。任务5.5将自研MCP服务接入Dify平台表5-1添加MCP服务器配置配置项配置值备注服务端点URLernal:8000/sse由于Dify部署在本地Docker容器中,因此用ernal代替localhost名称SmartCampus智慧校园服务器标识符Smart-campus唯一标识认证使用动态客户端注册(3)验证连接单击“添加并授权”按钮,Dify后端将立即尝试连接该URL并获取工具列表。状态显示为绿色的已连接状态。单击“SmartCampus”卡片,在工具列表中,能够看到“calculate_gpa”工具,且描述信息与Python代码中的文档字符串一致。任务5.5将自研MCP服务接入Dify平台3.构建与测试“智慧校园助手”智能体连接成功后,MCP工具就成为了Dify平台的通用资产,接下来创建一个应用来使用它。(1)创建智能体应用在Dify“工作室”页面,创建一个新的应用,类型选择“Agent(智能体)”,命名为“任务5.4-智慧校园助手”。(2)编排工具调用进入编排界面,在“提示词”区域输入以下指令,引导模型使用工具。填写提示词内容。任务5.5将自研MCP服务接入Dify平台你是一名智慧校园助手。当学生询问成绩绩点(GPA)时,请务必调用'calculate_gpa'工具进行计算。不要自己估算,必须以工具返回的结果为准。在“工具”区域点击添加,从列表中找到并勾选刚接入的“SmartCampu”MCP服务中的“calculate_gpa”工具。(3)进行对话测试在右侧的“预览与调试”窗口进行测试。输入:“我这学期Python考了88分,绩点是多少?”。可以看到智能体状态显示"正在使用工具calculate_gpa"。展开工具日志,可以看到把score设为88。具返回结果3.7。大模型根据工具结果,输出完整的自然语言回复:“您的Python课程成绩88分对应的绩点是3.7”。任务5.5将自研MCP服务接入Dify平台【任务小结】本任务完成了MCP协议落地的“最后一公里”。通过将Python服务改造为SSE网络模式,解决了本地进程与容器化平台之间的通信隔离问题。Dify平台的成功接入,验证了MCP协议的标准化优势——无需为Dify编写特定的插件代码,仅凭通用的MCP协议,即可让本地开发的工具被云端智能体直接调用。至此,一个包含环境搭建、工具开发、资源扩展及平台集成的完整MCP项目实施流程圆满结束,为构建跨系统、分布式的智慧校园智能体生态提供了可复制的工程范本。任务5.5将自研MCP服务接入Dify平台THEEND谢谢项目六
智慧校园智能体赋能--AgentSkill开发与应用项目背景与目标CONTENTS目录【教学目标】【项目背景】【项目目标】【项目分析】【教学目标】01技能目标(1)能够根据具体的校园业务需求(如失物招领),规划并设计合理的Agent规范。(2)能够将业务逻辑(如登记记录、信息匹配)标准化封装为AgentSkill。(3)能够编写精准的技能说明书,指导大模型准确判断调用时机。(4)能够在一个智能体应用中挂载专属技能,并通过系统提示词和多轮对话进行调度测试与调优。【教学目标】知识目标(1)掌握AgentSkill的核心概念及其与基础工具的本质区别。(2)理解智能体自主触发、提取参数并调度Skill的底层工作机制。(3)辨析AgentSkill与MCP协议在应用场景、架构层级与解决痛点上的差异。(4)熟悉AgentSkill的标准规范(Schema)与输入输出结构设计。(5)了解AgentSkill的常见分类及其在复杂业务场景中的定位。【教学目标】素养目标(1)培养“高内聚低耦合”的现代软件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公墓管理员岗前班组建设考核试卷含答案
- 果蔬坚果加工工岗前面试考核试卷含答案
- 燃气具安装工岗前技术实务考核试卷含答案
- 索道运输机械操作工变革管理评优考核试卷含答案
- 汽车车身涂装修复工核心管理考核试卷含答案
- 白酒原料粉碎工安全宣教模拟考核试卷含答案
- 农作物植保员安全生产知识评优考核试卷含答案
- 紫胶蒸发工安全技能测试考核试卷含答案
- 石英晶体生长设备操作工岗中设备维护考核试卷含答案
- 《式微》相关试题及参考答案
- 腔镜肾癌的手术配合
- .高速公路运营企业双重预防机制建设指导手册
- 机电设备安装与调试技术课件
- 欧莱雅培训体系
- GB/T 44438-2024家具床垫功能特性测试方法
- CJT 526-2018 软土固化剂 标准
- NB-T10208-2019陆上风电场工程施工安全技术规范
- 城市道路照明设计标准 CJJ 45-2015
- 水泥质量控制培训课件
- 《研究生入学教育》课件
- 中小学学校住宿生管理规定培训课件
评论
0/150
提交评论