找回密码
 创建社区账号
搜索
热搜: MCP 知识库 案例
查看: 137|回复: 2

《掌握n8n,开启AI自动化之旅》系列第十章:n8n MCP动手搭建、实战案例拆解

[复制链接]

10

主题

1

回帖

40万

积分

超级版主

积分
400054
发表于 2025-5-5 18:07:51 | 显示全部楼层 |阅读模式
作者|疯哥公号|疯哥AI教程《掌握n8n,开启AI自动化之旅》
  
引言
2025年AI开始从“对话工具”进化为“全能助手”,但如何让AI直接操作现实世界的工具并参与人类工作(如给客户发邮件、财务报销、执行营销活动等),答案就是**MCP协议——AI领域的“万能接口”,而n8n**则是企业实现AI自动化工作流的最佳平台。  
  
  
都没说清楚
最近,疯哥也看了不少博主写的或者视频介绍MCP,感觉不满意,一些平时讲AI的博主、视频博主介绍MCP至少50%都对MCP详细背景和概念模糊不清,越看越让人找不到北。甚至有些说的知识点也是错误的,自身没有准确理解就各种安利小白们。MCP协议每个核心组件到底是做什么用的?数据流动方向是怎么样的?为什么Anthropic会平白无故搞一个MCP协议出来?等等概念那些粉丝不少的AI博主没几个能掰扯交代清楚的。
今天,疯哥想还是要把这个东西交代清楚了,我打算分至少两个章节来说MCP,前一篇介绍MCP的前世今生,从行业最早的AI大模型外挂说起,为什么会出现MCP,它的技术逻辑是什么,整个结构是怎样的,核心组件的关系和作用等等,疯哥觉得既然说了MCP就不得不再介绍谷歌最新推出的分布式智能体协议(A2A)。MCP与A2A是什么关系等。要讲的知识点太多,我们一个一个来吧。
  
Function Calling(函数调用)
  
要从源头说起,不得不搬出AI三巨头“OpenAI”、“Google”、“Anthropic”。没办法他们都是全球AI技术的引领者。我们先从OpenAI当时推荐的”Function Calling“说起,Function Calling的出现是为了解决大模型早起存在的一个痛点,我们知道大模型能够回答我们各种问题,但是大模型都有一个明显的缺陷就是这些大公司在训练万大模型之后,大模型的知识更新就停止了。
当时的话,如果你问AI这样的问题:
“今天上海北京的天气怎样?”
“我想了解一下今日美股是涨还是跌?”
需要回答实时性的问题时,AI基本都趴窝是根本无法回答,直接了当被拒绝。Function Calling的出现无疑是给大模型随身携带了一个外挂,类似插件技术,会将用户的问题中需要实时获取AI外部信息数据的时候自动转换为一个标准的函数,问题中的相关信息就是函数的参数,这样,大模型就可以和外部的系统或工具进行连接。
Function Calling就这样非常智能的将用户输入的提示词转换为了对外部系统API调用的函数。从而方便地借助外部工具获取最新的信息。
Function Calling 具体是如何工作的?
整个过程分5个步骤:
步骤1: 函数定义
以查询股票行情为例子,技术人员会提前定义好一个专门用来获取天气的函数比如“get_StockTradingData”,同时定义了描述、参数与参数的类型。比如这里的参数就可能包括股票名称或股票代码、日期信息。
步骤2: 大模型推理
大模型收到用户需要查询当天正谷歌股票价格这样的问题,然后大模型会对问题进行分析,当判断这个问题需要调用外部系统比如“纳斯达克行情”时,大模型就会自动调用预先定义好的“get_StockTradingData”函数。
步骤3: 函数生成
大模型会根据问题内容,生成“get_StockTradingData”函数需要的参数,并且以Json格式输出,比如针对“谷歌今日开盘价格”这个问题,生成的参数就类似:{"stock":"谷歌","Date":"2025年4月22日"}
步骤4: 函数执行
技术人员会根据大模型输出的这些参数,去执行实际的函数。在这里就是这些参数去调用实际的纳斯达克API,来获取谷歌今天上午开盘的价格。
步骤5: 结果整合
函数执行得到的结果返回给大模型,大模型再根据这些数据来生成最终的回答,比如“今日美国纳斯达克大盘行情高开低走,上午指数下跌5%,谷歌股票价格从100美元跌到90美元...”。
Function Calling 的优点
早期使用Function Calling确实比较简单,没啥难度,只要按照外部系统的API要求来预定义好Json格式的函数就行。然后,将函数信息发送给大模型,大模型就去调用这些函数,整个过程不复杂吧非常直观。所以,在只需要单一大模型,少量功能的简单应用场景中,Function Calling只需要一键操作就可以把大模型输出和代码逻辑结合起来。
Function Calling 的缺点
虽然简单门槛低,但是缺乏夸模型的一致性,因为,每家AI公司开发出的大模型输出(API)可格式都存在差异,各家用个各家,这样就给技术人员带来了麻烦,如果我们要支持多个大模型就不得不这对每家AI大模型单独开发对应的函数,技术人员就需要对GPT、Culrade、Gemini这些大模型分别开发适合的股票价格查询函数( 这样的过程叫适配),显然非常低效和浪费资源。总结就是“缺乏跨模型的一致性”、“模型适配难度大”、“需要额外工作消除差异,增加了成本”。
  
MCP登场
  
上面介绍完了Function Calling,我们正式介绍MCP,MCP叫“模型上下文协议”由Claude模型的母公司 Anthropic 在 2024年11月提出的开放性AI协作协议,它的目标很明确就是要解决多家大模型对接不同外部系统或工具时的标准化问题。下面是MCP官方网站介绍
比如Anthropic的Claude大模型、Openai的GPT大模型、Meta的Llama还有国内的Deepseek、阿里、火山、腾讯家等大模型都已经接入了MCP协议并加入了MCP的生态。我们先看一下MCP官方给的一幅MCP结构示意图:
疯哥为大家解释一下,MCP采用的是“客户端+服务端”模式,这个模式中包含4个核心部分,我分别来介绍每个核心部分的概念和作用。这个非常重要,先理解了每个核心组件的作用才能正确理解后面疯哥要拆解n8n搭建MCP(服务+客户端)具体案例。否则你会给非常多的n8n节点搞糊涂的。
核心1:MCP Host(主机)
GPT、Deepseek等具备AI能力的工具或者系统,以及各种AI应用软件,比如电脑版的机器人Chat聊天软件,或者Canvs这样的具备AI能力的应用。都属于(MCP Host)主机,它是MCP生态的入口,要搭建MCP首先要先有MCP Host。MCP Host主要负责向用户提供AI能力和功能。
核心2:MCP Client(客户端)
MCP Host(主机)后面就是MCP Client(客户端),MCP Client(客户端)的作用是维持和MCP Server(服务器)一对一连接。这些MCP Client(客户端)会处理通信过程中各种细节问题。确保(MCP Host)主机和MCP Server(服务器)之间的数据能够顺利传输
核心3:MCP Server(服务器)
MCP Server(服务器)是MCP协议生态中最重要的部分,其实MCP Server(服务器)都是一些轻量级的程序比如py代码。每个MCP Server(服务器)都可以通过标准化的MCP协议去暴露特有的功能,从而起到连接AI 大模型和真实世界数据源的关键作用。举个例子比如纳斯达克专门上架了MCP Server(服务器),任何想查询股票价格和指数信息的请求都可以通过MCP Client(客户端) 传递过来,然后将用户需要数据原路返回。特别要注意的是,任何人任何平台都可以制作自己的MCP Server(服务器)提供给别人调用,类似现在API提供者,通常MCP Server(服务器)是一个server.py的代码文件,里面定义了各种功能操作的函数信息,包括函数名称、函数描述,需要的参数等等。****
另外,在MCP Server(服务器)下面还有两个概念,“本地数据源”和“远程服务”。
“本地数据源”就是我们电脑上的文件、图片、数据库、和服务等,MCP服务器可以安全的访问我们电脑上这些资源。
“远程服务”是通过互联网可以调用的外部系统,比如各种云和API等,MCP服务器也能远程连接到这些服务。
MCP就是以上三大核心组件相互协作相互通信形成一个完整的生态系统。
MCP的数据流向
数据从MCP Host(主机)出发通过MCP Client(客户端)到达MCP Server(服务器)最后由MCP Server(服务器)负责调用数据源或远程服务。MCP Server(服务器)获取到数据源之后再通过相反的路径将数据返回到MCP Client(客户端)最后到达MCP Host(主机)。
举个例子加深我们理解,我通过电脑上安装的GPT聊天软件或者手机大模型App,说我想知道今天纳斯达克的指数和具体某个股票的价格,Claude聊天软件和App就是上面说的MCP Host(主机),我们把需求通过AI聊天软件传达给了MCP Client(客户端),这个客户端其实就是被内嵌到或者直接代码写在Claude聊天软件里了。通常是一个单独的python代码文件(client.py)。它和MCP Server(服务器)是1对1的关系,一直保持和MCP Server(服务器) 的连接通信。****
**MCP Server(服务器)这边拿到MCP Client(客户端)过来的用户要求:查询现在纳斯达克指数和某只股票价格的需求,这个时候**MCP Server(服务器)就需要用到两个代码文件:server.py、addon.py****
**server.py 按照规定格式将支持的工具和调用函数包括参数和描述等信息一一记录在server.py里,如下截图:**
大模型就是通过阅读server.py文件中定义的函数描述,知晓每个函数的功能,这个函数是用来干嘛的,比如获取某个股票的实时价格函数,参数是股票名称,顺带函数的功能介绍,就是给大模型看的,结合用户提出的问题从而判断应该使用哪个方法函数,是不是很容易理解。
server.py文件是需要按照规定格式来编辑的,确保可以被大模型正确获取。这里需要提醒,MCP非常费token,这是肯定的,文件里的所有工具函数的描述大模型都有仔细读上一遍或几遍,再继续思考推理。哈,你说耗不耗token。
当大模型确定使用哪个工具时,就会将用户的问题就是提示词转换为这个工具中某个函数的参数,万事俱备后我们的纳斯达克系统就拿到这个完成的需要执行的工具函数,这时候就该addon.py文件登场了。
如果某个公司开发的软件或者App想加入MCP生态的话,举个例子,如果我们想使用MCP通过大众点评查询上海徐家汇地区评分最高的火锅店是哪家,那么大众点评就必须在系统代码里添addon.py,负责接受**MCP Server(服务器)发送过来的指令和参数信息,有点类似一个插件专内嵌到应用系统中,接收MCP服务器发过来的指令然后通知应用软件具体要做什么操作,上面例子就是addon.py通知大众点评有人提问你赶快把徐家汇评分最高的火锅店信息查询出来。**
疯哥之前举的查股票价格的例子也是同样,addon.py通知股票系统去数据库中查询股票的价格,将查询到的价格信息回传给对应的**MCP Server(服务器),上面疯哥说到**MCP Client(客户端)和MCP Server(服务器)是1对1保持连接的,所以,股票价格信息原路返回,最后到达终点我们的MCP Host(主机)就是用户提问的聊天软件。
要编写addon.py就必须对该应用软件开发非常熟悉,通常就是开发团队自己将addon.py文件加入到应用软件中。
疯哥在n8n中搭建了一个简单完整的MCP服务和MCP客户端,我们来看一下,这个例子分为两个工作流,一个是MCP服务工作流、一个是MCP客户端工作流。
选择MCP服务器触发节点
选择官方出品的MCP Client节点,方盒子图标代表是“社区节点”,也就是个人节点。
查询全球天气的MCP Server(服务器)
查询全球天气的MCP Client(客户端)
通过这样的架构MCP能让AI大模型能够安全、高效地访问各种数据源和工具大大提高了模型与外部资源整合的效率,到此为止,你是不是对MCP有了清晰的认识了,至少你知道MCP能为我们做些什么了,总之,这是一件有意义的事情,降低成本提高效率永远都是我们追求的目标。这个案例会在第十一章节(进阶篇)中详细拆解。
  
  
MCP之上的A2A协议
  
本教程是讲解MCP但是在MCP基础上疯哥又不得不介绍谷歌刚推出的A2A协议(Agent对Agent),它主要解决不同智能体之间的通信和协同问题。站在Agent更高的角度来看,我们在了解MCP之后再了解一下A2A是完全有必要的。可能再用不了多久n8n就会支持A2A协议,这样还有比n8n更牛的工具了么!疯哥可以这样说“完爆其他AI自动化”,面向企业Agent解决方案不会太远了。
未来完成业务工作的智能体很可能不是一个非常有可能是多个智能体互相协作完成一件任务,因为每个智能体负责不同的功能和服务,谷歌搞出这套开放性协议,是为了如何在多个智能体之间方便统一的进行调度和资源获取。我们来看一下A2A架构示意图:
A2A 核心概念
1、Agent Card(智能体名片)
它是Agent(智能体)的电子名片,是公开的元数据文件(描述数据的数据),里面详细描述了这个Agent所拥有的能力、技能、端点URL和认证需求等信息。
  
2、A2A Server(服务器)
它的作用是负责接收请求并且管理任务的执行,当有任务带来的时候A2A Server就会按照相应的规则和流程去处理任务。
  
3、A2A Client(客户端)
它是消费A2A服务的应用程序或者Agent,主要负责向A2A Server(服务器)发送请求。
  
4、Task(任务)
它是A2A协议当中负责工作的核心组件,A2A Client(客户端)通过发送消息来自动任务,每个任务会有不同的状态,可以跟踪任务进度。比如“已经提交”、“处理中”、“需要输入”等等。
  
5、Message(消息)
它表示客户端和Agent之间通信轮次,包含多种新式的部分,好比人类对话中的语句,通过消息,Agent之间就能进行信息的交流。
  
A2A 工作流程
  
我们接着看一下A2A协议工作的流程,分为几个阶段
  
阶段1:初始化阶段
  
A2A Client(客户端)向A2A Server(服务器)发送Message(消息)请求,这样就启动了一个新Task(任务),同时发送初始消息。
  
阶段2:交互阶段
  
如果任务在执行过程需要更多的输入才能继续的话就会在这个阶段进行交互。A2A Client(客户端)会和A2A Server(服务器)之间不断相互传递信息。
  
阶段3:发现阶段
  
A2A Client(客户端)会从A2A Server(服务器)上获取Agent Card(智能体名片),这样就会了解其他智能体的能力。为后续的多智能体协作做准备。
  
阶段4:处理阶段
  
A2A Server(服务器)负责处理任务,并且在处理过程中会根据需要提供更新信息。
  
阶段5:完成阶段
  
任务完成之后A2A Server(服务器)会返回最终的结果。
  
举个例子加深理解,有个生成行业报告的需求,需要不同能力的智能体互相调用互相协作才能完成,请看例子图:
  
有个Agent负责采集行业数据,还有一个Agent负责分析这些行业数据,最后生成报告。其中,负责采集行业数据的Agent就可以被看作为A2A Client(客户端),它向A2A Server(服务器)发送采集数据的任务请求,A2A Server(服务器)接收到任务请求后会根据要求找到具备爬虫能力的Agent,然后在处理阶段协调爬虫Agent,有可能是一群爬虫Agent,协调它们的采集工作。
  
在协调过程中如果需要调整采集数据的范围或者方式的话就进入了交互阶段进行互相沟,当数据收集完成之后A2A Server(服务器)会将采集到的数据发送给负责分析数据的Agent,由它来生成数据报告。最后将报告作为结果原路返回给A2A Client(客户端)。
  
  
  
三种技术的区别
Function Calling vs MCP
Function Calling、MCP虽然都是为了实现外部工具与大模型的交互,但在设计理念和应用场景上存在明显区别,最明显的就是扩展性方面。
Function Calling缺少统一的标准,不同大模型需要定义不同的函数格式。假设现在有5个不同的大模型应用,同时又有5个不同的工具或服务,那么我们就必须进行5*5=25次对接开放工作。无疑是大大增加了成本和工作量。另外,Function Calling本身不直接支持函数的链式调用,大模型每次只能调用一个函数,当大模型获取到一个函数的结果后如果还需要调用下一个函数就需要把前一个函数的结果输入到模型的下一个论对话中然后再触发下一个函数调用,从原理上来讲这样可以实现函数输出作为输入形成链条但是整个过程需要技术人员在应用层面精心的编排,大模型自身缺乏对这种跨调用的全局把控能力,而MCP则是通过统一的接口标准优雅的解决了这个问题,这样就不需要5*5=25次,只需要5+5=10次,哈。对于工具的创建者来说他们只需要为每个工具或系统去实现一次MCP Server即可。对应用的开发者来说也只需要为每个应用实现一次MCP Client,大家都按照统一的协议标准就可以协同工作。所以结果就是扩展新功能的边际成本就大幅降低了,而且大大提高了开发效率和灵活性。****
A2A vs MCP
谷歌官方博客中提到A2A和MCP更多是一种互补的关系,MCP的作用是让Agent能够使用各种工具,解决“做什么”的问题。而A2A则是专注于实现Agent之间的协作,解决“和谁合作”的问题。好比一个完整软件项目中,有的同事负责整理需求、有的负责开发代码、有个负责测试和安装部署。不同能力的智能只负责自己擅长的部分,大家组合起来共同完成一个大的任务,未来通过n8n可以搭建一个工作流,这个工作流当中分别调用了多个不同的子工作流,这些子工作流中其实就是不同的Agent,不同的Agent内部又包含了MCP相关的服务,按照这个逻辑可以无限扩展下去,形成了一套完整的多智能体协作的大工作流。
本章节结束语:
MCP让Agent具备了使用工具的能力,A2A则让Agent之间能够互相协作,共同完成更加复杂的业务。我会看到这三种通信机制逐渐融合的趋势,但是现在OpenAI和Anthropic还没有公开支持A2A,在这个圈子里大家都有自己想法和理念,要选择技术路线都会取决于背后的商业利益,疯哥相信最终技术融合是必然的,不同技术之间会互相学习借鉴这样才会推动AI生态不断向前发展。
  
#n8n #MCP #A2A #AI Agent #AI自动化工作流 #n8n商业案例  
  


  
“疯哥智能体” 全力帮助企业和个人实现AI全自动化转型!
你还在为重复劳动消耗精力?你的企业还在为招不到优秀员工而苦恼?现在这些都不重要了,疯哥会手把手教你用自动化工具轻松打造AI机器人帮你解决所有问题和承担所有工作。
👉 关注公号 @疯哥AI  学习n8n AI智能体最新技术。  
👉 欢迎对n8n感兴趣的朋友加入“n8n中国”大家庭。  
👉 学习或生产运行n8n但是懒得动手自己部署,找疯哥。
  


有任何疑问请留言!
你的问题可能是别人的灵感,欢迎在评论区畅所欲言~  
  


  


下期预告
《第十一章:MCP动手搭建、实战案例拆解,n8n+MCP+A2A (进阶篇)》
👉 动手发布自己的MCP服务  👉 MCP实战案例拆解  
  




深入掌握n8n AI自动化技巧  
👉 持续更新《 零基础逆袭 n8n AI智能体架构师 》、《 n8n商业案例手把手实战 》
  
  
  
《掌握n8n,开启AI自动化之旅》系列  
《掌握Deepseek,开启AI白嫖之旅》系列
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?创建社区账号

×

7

主题

10

回帖

31000万

积分

超级版主

积分
310000026
发表于 2025-5-7 15:08:24 | 显示全部楼层
版主辛苦!感谢贡献和付出

0

主题

5

回帖

40

积分

摸鱼触发器

积分
40
发表于 昨天 08:22 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 创建社区账号

本版积分规则

QQ|手机版|小黑屋|n8n 中文社区

GMT+8, 2025-5-23 07:36 , Processed in 0.082740 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表