【AI学习】MCP的简单快速理解

news2025/4/7 1:26:03

最近,AI界最火热的恐怕就是MCP了。作为一个新的知识点,学习的开始,先摘录一些信息,从发展历程、通俗介绍到具体案例,这样可以快速理解MCP。

MCP发展历程

来自@i陆三金

Anthropic 开发者关系负责人 Alex Albert:我眼中的 MCP 时间线

11 月:我们低调地通过一篇博客文章将其开源,我发布了一条公告推文。鉴于当时规范还处于早期阶段,它获得的关注远超我的预期。我们意识到这里对某些标准有很大的需求。

12 月:我们举办了两场 MCP 小型黑客马拉松以保持势头。假期来临,我们埋头改进规范、文档和服务器。

1 月 : 人们回到办公室,开始问“嘿,anthropic 一直在研究的这个 MCP 是什么东西?”

2 月:人们的兴趣开始增长,MCP 开始流行起来。越来越多的客户端应用程序开始提供支持。第三方存储库和网站变得无处不在。外部团体/公司开始举办自己的 MCP 活动。

3 月:MCP 浪潮席卷整个行业。主要企业合作伙伴将其视为新标准。其他实验室也开始承诺支持。

过去的几个月简直疯狂至极。令人兴奋的是,MCP 还有巨大的提升空间。四月及以后会是什么样子呢?

MCP介绍

来自@宝玉老师

MCP 目前更多是开发者玩具,普通用户不需要特别关注,等到生态起来了配置简单了直接用现成的好的 MCP 服务就好了。

目前大语言模型的局限在于无法直接连接外部真实环境,比如不知道今天是哪一天,不知道外面天气如何,不能用计算器,不能搜索、访问网页。就像你有台电脑,除了键盘鼠标显示器啥都没有,不能上网,不能接扫描仪、摄像头等等。

MCP 是一种协议(MCP:model context protocol),用来规范大语言模型和外部工具通信的。就像你电脑上的 USB 协议,有了 USB 协议,你的电脑就可以接上各种外界设备,比如 USB 接口的摄像头,可以录入视频了;比如 USB 接口的 扫描仪,可以扫描文档了;比如 USB 网卡,可以上网冲浪了。

MCP 就是大语言模型的 USB 协议,开发者们可以基于这套协议开发各种服务,比如去搜索网页的、连接你本地微信聊天记录的服务、天气预报的服务等等。

那么大语言模型怎么知道该调用什么服务呢?这里你需要有一个注册服务的操作,现在就是一个 JSON 配置文件,把各个服务都配置在里面,就像你电脑有个 USB Hub,你的一堆设备都插在 USB Hub 上,电脑能感知到有哪些设备插上 USB Hub 了。

当然大语言模型的 HUB 更智能,不需要你自己去选哪个设备(服务),模型会根据你的要求去从已经注册的服务中选取合适的服务。

比如说你的聊天应用注册了几个 MCP 服务:天气预报、网络搜索、查询本地微信聊天历史(参考这条微博:网页链接 )等。

你问 ChatBot:未来三天上海天气怎么样?
ChatBot 知道自己是没办法回答这个问题,但是它知道注册的 MCP 服务中有天气服务,就把用户的问题转变成参数:日期范围(03/18/2025-03/20/2025),城市:上海,然后去调用天气服务,天气服务返回给模型这三天的天气结果,然后模型拿到结果后就可以回复用户:今天明天是晴天,适合户外;后天要下雨记得带雨伞。

然后你再问 ChatBot:给我总结一下昨天XX群的聊天历史
ChatBot 没有你的聊天历史,但是它可以去找微信聊天历史查询 MCP 服务,传入参数(日期:03/17/2025),于是服务返回昨天的聊天历史给 ChatBot,ChatBot 去总结汇总,告诉用户结果。

如果你是开发者,可以先做一点简单的应用了解是什么,如果觉得可以提供有价值的服务,也可以先抢占生态位,去做一些应用,并且考虑怎么接入支付,以后可以通过卖 MCP 服务赚钱,未来还是有些机会的。

对于用户来说,现在的 MCP 还是比较初级的状态,用起来并不容易,并不会马上让你的使用体验发生很大变化,保持了解保持观望,如果有真正能让你日常工作提升效率的MCP应用场景,那就一定要去试试,也许你早点用上之后,就可以大幅提升效率,而你自己不需要做任何开发工作,就好比你给电脑买了一个新的 USB 设备,给你提供了很多便利。

MCP在Agentic RAG系统中的力量

来自@黄建同学

在今天的生产环境中运行的大多数RAG系统在某种程度上都是具有代理的。代理的实现方式取决于具体的使用场景。

  1. 当我们打包多个数据源时,至少在数据源选择和检索阶段会存在一定的代理。
  2. 这就是MCP如何在这种情况下丰富你的Agentic RAG系统的演化过程:
    • 用户查询分析:我们将原始用户查询传递给基于LLM的代理进行分析。
      ➡️ 原始查询可能会被重写,有时多次,以创建要在流程中传递的单个或多个查询。
      ➡️ 代理决定是否需要额外的数据源来回答查询。
    • 如果需要额外数据,将触发检索步骤。我们可以接触到多种数据类型,例如实时用户数据、用户可能感兴趣的内部文档、网络上可用的数据等。

MCP的介入点:
✅ 每个数据域都可以管理自己的MCP服务器,暴露数据使用的具体规则。
✅ 可以在每个域的服务器级别确保安全性和合规性。
✅ 新的数据域可以以标准化的方式轻松添加到MCP服务器池中,无需重写代理,从而使系统在程序、情节和语义记忆方面的演化解耦。
✅ 平台构建者可以以标准化的方式向外部消费者暴露他们的数据,使得轻松访问网络上的数据成为可能。
✅ AI工程师可以继续专注于代理的结构。

  1. 如果不需要额外数据,我们尝试直接通过LLM组合回答(或多个回答或一组操作)。
  2. 然后对答案进行分析、总结并评估其正确性和相关性:
    ➡️ 如果代理决定答案足够好,就会返回给用户。
    ➡️ 如果代理决定答案需要改进,我们尝试重写用户查询并重复生成循环。
    在这里插入图片描述

MCP案例:用 MCP 让大模型自动批量解读文献

具体直接参见文章
《用 MCP 让大模型自动批量解读文献,保姆级教程来了!》

MCP列表

MCP(Model Context Protocol) 是由 Anthropic 于去年 11 月提出的开放标准,用于解决 AI 助手(智能体)与数据系统之间的连接问题。在 MCP 出现前,每当智能体需要与不同来源的数据交互时,都需要针对特定 API 编写定制化代码,这极大限制了智能体的扩展能力和应用范围。

MCP 提供了一个统一的适配层,使智能体可以通过标准化接口与各种数据源和工具进行交互。简单来说,MCP 服务器将智能体的数据请求转换为目标 API 需要的格式,然后再将返回的数据标准化为智能体可读取的形式。这使开发者无需为每个新工具或数据源重复开发连接逻辑。

对 Mobin Chowdhury、Mohammd Shihab Hossain 等人搜集的 MCP 服务器列表进行了翻译,方便大家查询使用。这个列表涵盖了 浏览器控制、数据库、云平台、命令行、通信、数据科学、开发工具等多个领域的 MCP 服务器
列表链接:
https://www.caprompt.com/mcp-servers-list?continueFlag=23f0bd1aa25e0cf8e91ff3ce0478421f

其他文章

《6000字+6个案例:写给普通人的MCP入门指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单机快速部署开源、免费的分布式任务调度系统——DolphinScheduler

看了DolphinScheduler的介绍,不知道有没有引起你的兴趣,有没有想要上手体验一番呢。本文则主要为大家介绍DolphinScheduler的单机部署方式,方便大家快速体验。 环境准备 需要Java环境,这是一个老生常谈的问题,关于Ja…

【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器

今天我们将使用FastAPI来构建 MCP 服务器,Anthropic 推出的这个MCP 协议,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,尤…

springcloud configClient获取configServer信息失败导致启动configClient注入失败报错解决

目录 一、问题现象 二、解决方案 三、运行结果 四、代码地址 一、问题现象 springcloud configClient获取configServer信息失败导致启动configClient注入失败 报错堆栈信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name scop…

HarmonyOS-ArkUI Rcp模块类关系梳理

前言 本文重点解决的是,按照官网学习路径学习Tcp模块内容时,越看越混乱的问题。仿照官网案例,书写代码时,产生的各种疑惑。比如,类与类之间的关系,各种配置信息究竟有多少,为什么越写越混乱。那…

26考研——线性表_ 线性表的链式表示_双循环链表(2)

408答疑 文章目录 三、 线性表的链式表示双循环链表单链表与双链表的比较单链表的特点双链表的特点 双链表上基本操作的实现双链表的插入操作双链表的删除操作 双链表的代码实操定义结点创建一个结点带头结点的双链表初始化创建双链表打印双链表查找结点插入结点在指定节点后插…

基于springboot的考研成绩查询系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 这些年随着Internet的迅速发展,我们国家和世界都已经进入了互联网大数据时代,计算机网络已经成为了整个社会以及经济发展的巨大动能,考研成绩查询管理事务现在已经成为社会关注的重要内容,因此运用互联网技术来提高考研成绩…

es自定义ik分词器中文词库实现热更新

基于web地址的方式实现ik分词热更新。 操作系统:win 11 es version:8.6.2 ik version:8.6.2 1、创建web服务,并提供ik查询词库接口 编写分词http url代码,返回自定义分词内容分词词库数据来自业务需求,存…

OpenStack 卷虚拟机跨租户迁移方案

目标:迁移租户A的卷虚机到租户B 场景:使用卷虚拟机,租户a和b使用相同网络 租户A的操作: 1.记录虚拟机的ip地址,Mac信息, nova interface-list neutron port-show 2.对虚拟机进行关机操作,将…

添加购物车功能

业务需求: 用户提交三个字段,服务端根据提交的字段判断是菜品还是套餐,根据菜品或者套餐添加购物车表中。 代码实现 RestController Slf4j RequestMapping("/user/shoppingCart") public class ShoppingCartController {Autowired…

Python爬虫第2节-网页基础和爬虫基本原理

目录 一、网页基础 1.1 网页的组成 1.2 网页的结构 1.3 节点树及节点间的关系 1.4 选择器 二、爬虫的基本原理 2.1 爬虫概述 2.2 能抓怎样的数据 2.3 JavaScript 渲染页面 一、网页基础 使用浏览器访问网站时,我们会看到各式各样的页面。你是否思考过&…

【网络协议】三次握手与四次挥手

例如我们使用MobaXterm登录服务器的时候,基于TCP协议的之间是如何进行通信的? 使用工具:wireshark抓取传输层TCP协议 三次握手 mobaxterm:登录服务器触发三次握手 wireshark过滤分析 ip.addr 192.168.3.239 192.168.3.239登录…

JS API

const变量优先 即对象、数组等引用类型数据可以用const声明 API作用和分类 DOM (ducument object model) 操作网页内容即HTML标签的 树状模型 HTML中标签 JS中对象 最大对象 document 其次大 html 以此类推 获取DOM对象 CSS 中 使用选择器 JS 中 选多个 时代的眼泪 修…

“一路有你”公益行携手《东方星动》走进湖南岳阳岑川镇中心小学

2025年4月2日,“一路有你”公益行携手《东方星动》走进湖南岳阳岑川镇,一场充满爱与温暖的捐赠仪式在岑川镇中心小学隆重举行。这是一场跨越千里的爱心捐赠,也是一场别开生面的国防教育,更是一场赋能提质的文化盛宴。 岑川镇地处湘…

vue组件开发:什么是VUE组件?

什么是VUE组件 在我们实际开发过程中你也许会发现有很多代码是重复的,它们可能是一个按钮、一个表单、一个列表等等,其中最为显著的应该是列表。 以CSDN的首页为例: 上述截图中的文章列表可能会在多处出现,比如此截图是精选博客…

仿小红书社交源码+及时通讯聊天软件APP源码

多端支持,数据互通 本程序支持H5、小程序、安卓、iOS四端运行,共用同一套后台管理系统,确保数据同步,用户可在不同设备上无缝切换,实现真正的多端互通。 技术架构 前端技术:Vue2、uni-app、HTML、CSS、Jav…

Java基础:面向对象进阶(二)

01-static static修饰成员方法 static注意事项(3种) static应用知识:代码块 static应用知识:单列模式 02-面向对象三大特征之二:继承 什么是继承? 使用继承有啥好处? 权限修饰符 单继承、Object类 方法重…

ttkbootstrap 实现日期选择器, 开始和结束时间

ttkbootstrap 实现日期选择器, 开始和结束时间 1. 展示 2. 打印 3. 源码 from datetime import datetime import ttkbootstrap as ttkclass DateTimeEntryStart(ttk.Frame):def __init__(self, masterNone, **kwargs):super().__init__(master, **kwargs)self.dat…

Vulnhub-PrinkysPalacev3

Vulnhub-PrinkysPalacev3 1、主机发现 arp-scan -l 扫描同网段 2、端口扫描 nmap -sS -sV 192.168.66.185 nmap -sS -A -T4 -p- 192.168.66.185 nmap --scriptvuln 192.168.66.185 PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 5555/tcp o…

matlab从pytorch中导入LeNet-5网络框架

文章目录 一、Pytorch的LeNet-5网络准备二、保存用于导入matlab的model三、导入matlab四、用matlab训练这个导入的网络 这里演示从pytorch的LeNet-5网络导入到matlab中进行训练用。 一、Pytorch的LeNet-5网络准备 根据LeNet-5的结构图,我们可以写如下结构 import…

Spring Boot向Vue发送消息通过WebSocket实现通信

注意:如果后端有contextPath,如/app,那么前端访问的url就是ip:port/app/ws 后端实现步骤 添加Spring Boot WebSocket依赖配置WebSocket端点和消息代理创建控制器,使用SimpMessagingTemplate发送消息 前端实现步骤 安装sockjs-…