AIGC浪潮下,风靡全球的Mcp到底是什么?一文讲懂,技术小白都知道!!

AIGC浪潮下,风靡全球的Mcp到底是什么?一文讲懂,技术小白都知道!!

个人主页-爱因斯晨

文章专栏-AIGC

 

长大好多烦恼,好愁!

目录

 

前言

初步了解

Mcp到底是个啥?

发展

理论基础

核心组件

使用逻辑

于传统API不同之处

模型推荐


 

前言

上年这个时候,刚拿到录取通知书。哥哥教我用ai智能体,其实就是向我炫技。当时我问他,为什么不能直接给我生成图表,直接给我生成多好,省得我再去复制了。他说,其实很简单,只要做个接口协议什么的就行,只是目前国内没人做。当时说的很高深,我也听不懂。没想到年底,这个功能就实现内测了。在某种程度上,我也算是预言了哈哈。

初步了解

Mcp到底是个啥?

Mcp,全称 Model Context Protocol,翻译过来是模型上下文协议。你不用管这高大上的名字,简单说,它就是和大 AI 模型聊天时,一种把相关信息整理好、按规矩传给 AI 的方式。​

之前我们使用的AI智能体如果比作是个思考问题的大脑,那么Mcp就是思考后,给你去干活的。AI大模型是给你思维结果,而Mcp就是调用工具给你做好工作。也就是低代码~

发展

2024 年 11 月,Anthropic(由 OpenAI 前员工创办)发布并开源 Mcp。当时 AIGC 发展快但存痛点,AI 模型与外部数据、工具连接不足,此前方案缺通用性。Mcp 提供标准化交互方式,助 AI 与外部系统互动。后获多家支持,OpenAI 等巨头入局,成 AI 智能体时代关键技术。真的好快啊!

理论基础

与 RAG(为大模型提供充足上下文)和 Function Calling(让模型能使用工具)密切相关,在它们基础上实现 AI 与外部系统更高效交互。

核心组件

使用逻辑

目前在Claude,OpenAI GPT,阿里云百炼,纳米AI都有接入Mcp,可以在工具箱中调用工作使用的Mcp来完成现有工作,但是带来的问题是权限过大,不安全。

于传统API不同之处

  • 传统 API 参数变更时,用户必须更新代码,否则请求可能失败。​
  • MCP 采用动态灵活方式,客户端连接服务器时会先了解其能力,服务器也会动态更新功能描述,客户端无需重写代码就能适应变化,大幅降低维护成本。

模型推荐

事先声明!!不是广告!!不是广告!!红衣大叔没给我打钱!!当然,也欢迎纳米AI官方给我打钱~~

打开我们的大模型,选择工具,我们可以看到有很多官方或个人开发的mcp工具,我们可以点击使用

提出要求

他会给你充分的回答,但是,我觉着还是不够方便,如何直接get成品呢?

纳米ai有另一功能,相当于成熟的mcp堆出来的agent,点击智能体页面

我选择网页搭建

我们可以看一下最后成品

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>L'Éclat | 精致美妆体验</title> <link rel="stylesheet" href="https://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/font-awesome/6.0.0/css/all.min.css"> <link rel="stylesheet" href="https://s2.ssl.qhres2.com/static/56662140ef7d5d03.css"> <style> :root { --beige: #F5F5DC; --light-yellow: #FAF8ED; --gold: #D4AF37; --soft-pink: #F8D7DA; --transition: all 0.3s ease; } body { font-family: 'Helvetica Neue', Arial, sans-serif; background-color: var(--light-yellow); color: #5A5A5A; line-height: 1.6; } .header { background-color: var(--beige); box-shadow: 0 2px 10px rgba(0,0,0,0.05); position: sticky; top: 0; z-index: 100; } .logo { font-family: 'Times New Roman', serif; color: var(--gold); letter-spacing: 2px; } .nav-item { transition: var(--transition); border-bottom: 2px solid transparent; } .nav-item:hover { color: var(--gold); border-bottom-color: var(--gold); } .hero { background: linear-gradient(135deg, var(--light-yellow) 0%, var(--beige) 100%); min-height: 500px; } .product-card { background-color: white; transition: var(--transition); box-shadow: 0 5px 15px rgba(0,0,0,0.05); } .product-card:hover { transform: translateY(-5px); box-shadow: 0 10px 25px rgba(0,0,0,0.1); } .category-badge { background-color: var(--soft-pink); color: #8E4A49; } .price { color: var(--gold); font-weight: bold; } .btn-primary { background-color: var(--gold); transition: var(--transition); } .btn-primary:hover { background-color: #C19A3D; transform: translateY(-2px); } .footer { background-color: var(--beige); } .fade-in { animation: fadeIn 1s ease-in; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } </style> </head> <body> <!-- 导航栏 --> <header> <div> <div> <div>L'Éclat</div> <nav> <a href="#">首页</a> <a href="#">护肤</a> <a href="#">彩妆</a> <a href="#">香水</a> <a href="#">关于我们</a> </nav> <div> <button> <i></i> </button> <button> <i></i> </button> <button> <i></i> <span>3</span> </button> </div> </div> </div> </header> <!-- 英雄区域 --> <section> <div> <div> <h1>发现你的独特之美</h1> <p>精选全球优质美妆产品,为您带来非凡的护肤与彩妆体验</p> <button>探索新品</button> </div> </div> </section> <!-- 产品分类 --> <section> <div> <h2>产品分类</h2> <div> <div> <div> <i></i> </div> <h3>护肤系列</h3> </div> <div> <div> <i></i> </div> <h3>彩妆系列</h3> </div> <div> <div> <i></i> </div> <h3>香水系列</h3> </div> <div> <div> <i></i> </div> <h3>礼盒套装</h3> </div> </div> </div> </section> <!-- 精选推荐 --> <section> <div> <div> <h2>精选推荐</h2> <div> <button>新品</button> <button>热销</button> <button>特惠</button> </div> </div> <div> <!-- 产品卡片1 --> <div> <div> <img src="https://images.unsplash.com/photo-1596755094514-f87e34085b2c?ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=80" alt="玫瑰精华面霜"> <div>护肤</div> </div> <div> <h3>玫瑰精华面霜</h3> <p>深层滋养,焕发肌肤活力</p> <div> <span>¥298</span> <button>加入购物车</button> </div> </div> </div> <!-- 产品卡片2 --> <div> <div> <img src="https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=80" alt="丝绒唇膏"> <div>彩妆</div> </div> <div> <h3>丝绒唇膏 #12</h3> <p>哑光质地,持久不脱色</p> <div> <span>¥168</span> <button>加入购物车</button> </div> </div> </div> <!-- 产品卡片3 --> <div> <div> <img src="https://images.unsplash.com/photo-1592945403244-b3fbafd7f539?ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=80" alt="清晨花园香水"> <div>香水</div> </div> <div> <h3>清晨花园香水</h3> <p>清新花香调,50ml</p> <div> <span>¥458</span> <button>加入购物车</button> </div> </div> </div> <!-- 产品卡片4 --> <div> <div> <img src="https://qcdn2.zhaomi.cn/t11de458816ceac5d1e59b3cfaf.png" alt="假日礼盒"> <div>礼盒</div> </div> <div> <h3>假日礼盒套装</h3> <p>精选5件明星产品</p> <div> <span>¥998</span> <button>加入购物车</button> </div> </div> </div> </div> </div> </section> <!-- 品牌故事 --> <section> <div> <div> <div> <h2>我们的故事</h2> <p>L'Éclat 源自法语,意为"光芒"。我们相信每个女性都拥有独特的光芒,而我们的使命就是帮助您发现并绽放这份美丽。</p> <p>自2015年创立以来,我们始终致力于从全球精选最优质的化妆品和护肤品,只为您带来最安全、最有效的美丽体验。</p> <button>了解更多</button> </div> <div> <img src="https://images.unsplash.com/photo-1522337360788-8b13dee7a37e?ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=80" alt="品牌故事"> </div> </div> </div> </section> <!-- 客户评价 --> <section> <div> <h2>客户评价</h2> <div> <div> <div> <div> <img src="https://randomuser.me/api/portraits/women/43.jpg" alt="客户头像"> </div> <div> <h4>张小姐</h4> <div> <i></i> <i></i> <i></i> <i></i> <i></i> </div> </div> </div> <p>"玫瑰精华面霜真的太好用了!我的皮肤变得水润有光泽,会一直回购的!"</p> </div> <div> <div> <div> <img src="https://randomuser.me/api/portraits/women/65.jpg" alt="客户头像"> </div> <div> <h4>李女士</h4> <div> <i></i> <i></i> <i></i> <i></i> <i></i> </div> </div> </div> <p>"丝绒唇膏的颜色太美了,而且一点都不干,持久度也很好,已经买了三个颜色了!"</p> </div> <div> <div> <div> <img src="https://randomuser.me/api/portraits/women/32.jpg" alt="客户头像"> </div> <div> <h4>王小姐</h4> <div> <i></i> <i></i> <i></i> <i></i> <i></i> </div> </div> </div> <p>"清晨花园香水味道很清新,不会太浓烈,适合日常使用,包装也很精美。"</p> </div> </div> </div> </section> <!-- 订阅区 --> <section> <div> <h2>订阅我们的电子报</h2> <p>订阅即可获取新品上市、独家优惠和护肤美妆小贴士,首次订阅还可获得9折优惠券!</p> <div> <input type="email" placeholder="您的电子邮箱"> <button>订阅</button> </div> </div> </section> <!-- 页脚 --> <footer> <div> <div> <div> <h3>L'Éclat</h3> <p>发现你的独特之美</p> </div> <div> <h4>快速链接</h4> <ul> <li><a href="#">首页</a></li> <li><a href="#">所有产品</a></li> <li><a href="#">新品上市</a></li> <li><a href="#">特惠活动</a></li> </ul> </div> <div> <h4>客户服务</h4> <ul> <li><a href="#">联系我们</a></li> <li><a href="#">配送信息</a></li> <li><a href="#">退换政策</a></li> <li><a href="#">常见问题</a></li> </ul> </div> <div> <h4>关注我们</h4> <div> <a href="#"> <i></i> </a> <a href="#"> <i></i> </a> <a href="#"> <i></i> </a> </div> <p>客服时间: 9:00-21:00</p> <p>客服热线: 400-123-4567</p> </div> </div> <div> <p>© 2025 L'Éclat 美妆. 保留所有权利.</p> </div> </div> </footer> <script> // 简单的淡入动画 document.addEventListener('DOMContentLoaded', () => { const elements = document.querySelectorAll('.fade-in'); elements.forEach(el => { el.style.opacity = '0'; setTimeout(() => { el.style.transition = 'opacity 1s ease'; el.style.opacity = '1'; }, 100); }); // 产品卡片悬停效果 const productCards = document.querySelectorAll('.product-card'); productCards.forEach(card => { card.addEventListener('mouseenter', () => { card.style.transform = 'translateY(-5px)'; card.style.boxShadow = '0 10px 25px rgba(0,0,0,0.1)'; }); card.addEventListener('mouseleave', () => { card.style.transform = ''; card.style.boxShadow = '0 5px 15px rgba(0,0,0,0.05)'; }); }); }); </script> </body> </html>

你别说,你还真别说!纳米ai有两把刷子!红衣大叔打钱!!!!

图片来源:阿里云

Read more

ESP32S3 CameraWebServer避坑指南:从代码烧录到网页访问的全流程解析

ESP32-S3 CameraWebServer 实战避坑:从零到一的图像流媒体搭建全解 最近在折腾合宙的ESP32-S3核心板,想用它配合摄像头做个简单的网络监控或者视频流demo。网上随手一搜,乐鑫官方的CameraWebServer示例看起来是最直接的入门路径。但真动手的时候才发现,从环境配置、代码烧录到最终在网页上看到清晰的图像,中间每一步都可能藏着几个不大不小的“坑”。这篇文章就是把我自己踩过的坑、以及后来找到的解决方案,系统地梳理出来。如果你也是刚接触ESP32-S3,手头有一块合宙的板子和一个OV2640摄像头,想快速跑通这个经典的Web服务器示例,那么接下来的内容应该能帮你省下不少折腾的时间。 我们的目标很明确:让ESP32-S3连接Wi-Fi,驱动OV2640摄像头采集图像,并建立一个可以通过浏览器访问的网页服务器,实时查看视频流或拍摄静态照片。整个过程涉及硬件连接、开发环境搭建、代码修改、固件烧录和网络调试多个环节,任何一个环节出错都可能导致最终失败。别担心,我们会逐一拆解。 1. 硬件准备与环境搭建:万事开头难 在敲下第一行代码之前,正确的硬件连接和稳定

使用rclone将远程的webDav文件共享映射成本地硬盘

#webdav #rclone 一、准备工作 1.1 准备webdav连接 支持webdav的网盘有好多,请自行准备。我做示范的是国外的一个免费网盘,地址是https://infini-cloud.net/en/index.html, 先注册一个账号,就有20GB的免费空间可用。 收到验证邮件,输入验证码或者点击验证链接,注册成功后进入My Page。 免费的20GB空间大小,如果你在主页下方输入我送你的优惠码 L3UV8,你还将多获得5GB的空间 设置允许webDav访问,记住你的密码,如果忘记了,可以Reissue. 记录下以下三个信息(密码只显示一次) WebDAV Connection URLConnection IDApps Password 尝试一下webdav登录,可以正常访问 1.2 下载Rclone和WINFSP 我本机是Win11,我以windows版本为实例,其他操作系统请自行参考查找相关资料。 下载地址: https://rclone.org/downloads/

前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用

一、什么是SSE? SSE(Server-Sent Events)是一种服务器向客户端推送数据的技术,它允许服务器主动向客户端发送数据,而不需要客户端频繁轮询。SSE特别适合实时通信场景,比如AI聊天的流式输出、实时通知、股票行情更新等。 SSE的核心特点: * 单向通信 :服务器向客户端单向推送数据 * 基于HTTP :使用标准的HTTP协议,不需要特殊的服务器支持 * 自动重连 :连接断开时会自动尝试重连 * 文本格式 :使用简单的文本格式传输数据 * 轻量级 :实现简单,开销小 二、SSE的工作原理 1. 连接建立 客户端通过向服务器发送一个HTTP请求来建立SSE连接。服务器返回一个特殊的响应,设置 Content-Type: text/event-stream 头,告诉客户端这是一个SSE流。 2. 数据传输 服务器以流的形式持续发送数据,每个数据块都是一个SSE格式的消息。SSE消息格式如下: data: 消息内容\n\n 其中: * data: 是固定前缀 * 消息内容可以是任意文本,

PowerShell中Invoke-WebRequest的正确使用:避免参数匹配错误

1. 从一次报错说起:为什么我的curl命令在PowerShell里不灵了? 那天我正在调试一个本地API接口,很自然地就在PowerShell里敲下了 curl -X POST http://127.0.0.1:8199/api/post。这命令在Linux的Bash终端里我用了无数次,闭着眼睛都能敲对。结果,PowerShell毫不留情地甩给我一个红字报错:Invoke-WebRequest : 找不到与参数名称“X”匹配的参数。 我当时就愣住了,心想:“-X POST”这不是curl的标准写法吗?怎么到你这儿就不认了?相信很多从Linux/macOS转战Windows,或者刚开始接触PowerShell的朋友,都踩过这个坑。这个错误看似简单,背后却藏着PowerShell设计哲学和命令别名的“小心思”。简单来说,在PowerShell里,curl 并不是你熟悉的那个cURL工具,而是 Invoke-WebRequest 这个PowerShell原生Cmdlet的一个别名。这就好比你在北京叫“师傅”可能是在打招呼,在别的地方可能就是在称呼真正的老师傅,语境完全不同。Invoke-