MCP 实战系列(Day 1):什么是 MCP?

最近,MCP (Model Context Protocol) 在 AI 圈的热度不断攀升,各大开源工具、国内的高德地图以及 OpenAI 都纷纷推出了自家的 MCP Server。

那么,到底什么是 MCP?本文会从协议原理出发,介绍 MCP 的 概念以及应用。这将是一个小白也能看懂的 系列文章,欢迎关注收藏不迷路。

MCP 协议的定义

官方的定义通常是最权威的:MCP 是一个开放协议,它标准化了应用程序如何为 AI 模型提供上下文。你可以把 MCP 想象成 AI 应用程序的 USB-C 端口,就像 USB-C 提供了一个标准方式连接设备和各种外设一样,MCP 提供了一个标准方式让 AI 模型连接不同的 数据源和工具

实际上,对小白来说,官方的例子还不够直观。以下,我会用更直白的例子解释 MCP 的核心概念。

Model Context(模型上下文)

DeepSeek 凭借其出色的性价比在 AI 领域引发广泛关注,相信许多读者都已通过类似工具尝试过写作、编程或文本处理等。但最令人头疼的是,我们常常需要复制各种文件、论文或自己的源代码为 LLM 提供素材(即输入给 LLM 的内容)。

这些素材正是 MCP 协议中的 上下文。那么是否有一种方式可以简化这种素材收集的过程?换句话说就是 让模型自己去查找你要的内容。比如借助 FireCrawl MCP Server,模型可以自动爬取网页上的内容并根据用户的要求做总结;借助 高德地图 MCP Server,用户只需输入 “请为我计划一次天津美食一日游” 即可快速制定出详细的行程规划。

通过 MCP 与各家服务商的支持,一个 具备特定知识库的模型上下文 可以被 动态构建(上下文引用是在运行时通过协议调用决定的)。

Protocol(协议)

用一句话解释:协议就是一组规则。如同计算机网络中应用层的 HTTP 协议,它定义了客户端(如浏览器)与服务器之间如何通过请求-响应模型交换数据,包括请求方法(如 GET、POST)、状态码(如 200、404)和报文格式等 规则,客户端与服务器遵循该规则便可实现通信。

协议的制定能稳健地构建出一个生态,开发者可以遵循上述规则发布各类 MCP 服务,用户也仅需按照规则在 MCP 主机(Cursor、Cline 等)中配置服务即可。

MCP 协议的构成

下图可以直观的表示 MCP 协议中的各个组成部分以及相对关系:

请添加图片描述

对照上图来介绍 MCP(Model Context Protocol)协议中各组件的相关概念:

MCP Hosts(MCP 主机)

MCP 主机是面向用户的 AI 应用程序,比如 Claude Desktop、IDE 以及其他支持 MCP 的 AI 工具(如 Cline 插件)。

其功能是负责协调用户与 AI 模型的交互,并通过 MCP 客户端调用外部工具和数据源。比如,用户通过 Claude Desktop 提问时,主机决定是否需要调用 MCP 服务器获取数据。

一句话总结:MCP 主机就是可以借助 MCP 客户端与 MCP 服务器通信来获取更多上下文信息的 AI 应用程序

MCP Clients(MCP 客户端)

MCP 客户端是驻留在 MCP 主机内部的中间组件,每个客户端与一个 MCP 服务器 保持 1:1 连接。其功能是将服务器提供的工具或资源暴露给 AI 模型,并在模型决定调用时向对应的 MCP 服务器发起请求。

核心原理:通过在 MCP 主机中配置所需的 MCP 服务器(每个服务器会提供至少一个可调用工具),MCP 客户端可以聚合这些工具与用户的输入一并提交给 LLM。模型会根据用户的输入(某些特定的关键字)判断是否需要调用工具,如果模型的响应是一个 tool_use 类型,则主机会通过 MCP 客户端与对应的服务器进行连接,服务器调用该工具并返回结果,最后 MCP 主机会将上述返回的结果继续聚合后再交由 LLM,循环此过程 直到获得不再需要调用工具的最终结果。

MCP Servers(MCP 服务器)

MCP 服务器是个轻量级程序,通过 标准化协议 提供特定功能,如数据访问、工具调用或 Prompts。

  • Resources:结构化数据(如文件、API 响应)
  • Tools:可执行函数(如查询数据库、发送邮件)
  • Prompts:预定义的交互模板

通过前面对 MCP 客户端的介绍,MCP 服务器的职能变得非常容易理解:即遵循 MCP 协议来暴露其可提供的 ResourcesToolsPrompts。比如在官方示例的 MCP 服务器实现代码中,通过以下方式来注册一个提供天气预报功能的 tool

// server 为创建的 McpServer 实例
server.tool(
    "get-forecast",
    "Get weather forecast for a location",
    {
        latitude: z.number().min(-90).max(90).describe("Latitude of the location"),
        longitude: z.number().min(-180).max(180).describe("Longitude of the location"),
    },
    async ({ latitude, longitude }) => {
        // 调用第三方天气接口的逻辑
        return {
            content: [
                {
                    type: "text",
                    text: "在这里响应天气预报的内容",
                },
            ],
        };
    }
);

这里定义了 工具的名称功能描述工具所需的经纬度参数(限定了入参的类型和数值范围)以及 工具实现的回调代码。这种定义规则便是一种应用于 MCP 服务端的 协议

概念图中的 Local Data Sources(本地数据源)和 Remote Services(远程服务)本质上就是 MCP Server 所依赖的数据源的获取方式。比如,上述的天气预报工具实际上是通过调用第三方接口来获取某个地理坐标的天气情况。

如何使用 MCP Server

官网列举了一系列支持 MCP 协议的应用程序列表 MCP Clients,我们使用 VS Code 中的 Cline 插件作为示例来介绍如何使用 MCP Server(假设已安装 VS Code)。

执行步骤

  1. 在 VS Code 中安装 Cline 插件
  2. 在 MCP Servers 市场中选择 Filesystem MCP Server 进行安装:
  3. 复制以下 Filesystem MCP Server 的相关配置至 Cline 插件的 MCP Servers 配置文件中:
{
    "mcpServers": {
        "filesystem": {
            "command": "npx",
            "args": [
                "-y",
                "@modelcontextprotocol/server-filesystem",
                "/path/to/allowed/dir" // 允许访问的目录
            ]
        }
    }
}

Cline 已经内置了 MCP Servers 的应用市场,用户可以直接在插件中搜索并安装。但为了让读者理解 MCP Server 的配置原理,这里采用手动配置的方式。

以下是完整的操作演示视频:

在 Cline 中使用 Filesystem MCP Server

注意:Cline 需要配置具体 LLM 的 API 才可使用,建议提前申请好 DeepSeek 等模型的 API Key。示例视频中,配置 Filesystem MCP Server 时给定的允许访问的目录 /path/to/allowed/dir 已提前准备了数据。

总结

本文介绍了 MCP 协议的概念以及如何在 Cline 中配置一个 MCP Server,下一篇文章将 介绍如何搭建一个自己的 MCP Server。本文是《从原理到实战:掌握 Model Context Protocol(MCP)》系列的第一篇文章,如果本文对你有帮助,欢迎点赞、收藏和转发,支持我继续创作更多实用内容。如有问题欢迎在评论区留言。

<think>嗯,用户是电气工程及其自动化专业的学生,零基础硬件,想参加全国大学生电子设计大赛的信号源类题目。首先需要明确信号源类题目通常涉及哪些内容。这类题目可能包括波形生成、频率合成、调制解调等,比如产生正弦波、方波、三角波,或者更复杂的信号如FSK、PSK等。 用户是零基础,所以得从最基础的开始。首先可能需要了解电子元件的基本知识,比如电阻、电容、电感,以及晶体管、运放等。然后是电路基础,比如欧姆定律、基尔霍夫定律,还有基本的模拟电路和数字电路知识。 接下来是信号源相关的核心知识,比如振荡器原理,如何用运放或555定时器生成波形,DDS(直接数字频率合成)技术,锁相环(PLL)等。可能还需要了解微控制器的使用,比如STM32或Arduino,用来控制信号源的参数。 然后是工具的使用,比如万用表、示波器、信号发生器等仪器的操作,以及电路设计软件如Altium Designer或Proteus,还有编程环境如Keil或Arduino IDE。 实践方面需要分阶段进行,从简单电路搭建到复杂项目,逐步提升。同时要学习往届优秀作品,分析他们的设计方案和实现方法。 团队协作和文档撰写也很重要,毕竟比赛需要分工合作,报告撰写能力会影响评分。可能需要安排每周的学习任务,保持进度,定期总结和调整计划。 现在需要考虑用户的时间安排,假设备赛时间有6个月左右,需要合理分配每个阶段的时间。同时要推荐合适的学习资源,比如书籍、在线课程、论坛等。还要注意理论与实践结合,避免只看不做。 可能遇到的困难包括电路调试、信号稳定性问题、编程实现等,需要预留时间解决这些问题。此外,参加校内培训或找导师指导也会有帮助。需要鼓励用户多动手,多实践,积累经验。</think>以下是针对全国大学生电子设计竞赛信号源类题目的零基础硬件队员学习计划,分5个阶段共6个月(可根据实际时间调整): --- ### **第一阶段:基础技能搭建(1-1.5个月)** #### **1. 电子基础** - **元器件认知**:电阻/电容/电感特性、二极管/晶体管参数、运放基本功能(如LM358) - **工具使用**:万用表测量电压/电阻、电烙铁焊接练习(推荐洞洞板焊接LED闪烁电路) - **必学电路**: - 分压电路(如用$V_{out}=V_{in}\frac{R_2}{R_1+R_2}$设计5V→3.3V转换) - RC滤波电路(截止频率计算$f_c=\frac{1}{2πRC}$) - 运放比较器电路(生成方波) #### **2. 编程入门** - 学习C语言基础(变量/循环/函数) - Arduino基础项目(如用PWM控制LED亮度) --- ### **第二阶段:信号源核心技术(1.5-2个月)** #### **1. 模拟信号生成** - **振荡电路**: - 文氏桥振荡器(正弦波,频率公式$f=\frac{1}{2πRC}$) - 555定时器实现方波/三角波(占空比调节) - **实战项目**:用运放搭建1kHz正弦波发生器(要求幅度可调) #### **2. 数字信号合成** - **DDS原理**:理解相位累加器、查找表(LUT)机制 - **STM32实战**: - 使用TIM定时器输出PWM - 用DAC生成正弦波(示例代码:生成256点LUT) #### **3. 进阶技术** - 锁相环(PLL)基础(如CD4046实现频率跟踪) - 调制技术:AM/FM调制电路搭建(用乘法器IC AD633) --- ### **第三阶段:系统集成训练(1.5个月)** #### **1. 典型赛题复现** - 实现2017年国赛题《简易信号发生器》: - 指标:1Hz-10MHz频率范围,幅度0-5V可调 - 方案:STM32+DDS+运放放大电路 #### **2. 关键模块开发** - **频率合成模块**:AD9833芯片驱动(SPI通信) - **幅度控制模块**:数字电位器MCP41010应用 - **显示模块**:OLED显示频率/波形参数 --- ### **第四阶段:竞赛技巧强化(1个月)** #### **1. 往届作品解析** - 分析2019年一等奖作品《高精度信号源》: - 采用FPGA+AD9767方案 - 加入自动增益控制(AGC)电路 #### **2. 故障排查训练** - 典型问题: - 信号失真(检查运放供电电压) - 频率漂移(改善晶振电源滤波) - 电磁干扰(学习PCB布局技巧) #### **3. 文档撰写** - 按照竞赛报告模板编写技术文档: - 系统框图用Visio绘制 - 测试数据表格化(如频率误差<0.1%) --- ### **第五阶段:模拟实战1个月)** - **48小时模拟赛**: - 题目示例:"设计可编程信号源,支持QPSK调制" - 分工建议: - 硬件:设计调制电路 - 软件:STM32控制调制参数 - 文档:实时记录调试过程 --- ### **学习资源推荐** 1. **教材**: - 《电子设计从零开始》杨欣(清华大学出版社) - 《全国大学生电子设计竞赛系统设计》黄智伟 2. **实战工具包**: - 硬件:STM32F407开发板、AD9833模块、AD620仪表放大器 - 软件:Altium Designer(PCB设计)、MATLAB(信号分析) 3. **在线资源**: - 立创EDA开源硬件平台(学习优秀工程) - 电赛论坛(www.nuedc-training.com.cn) --- ### **注意事项** 1. 每周保证≥20小时有效学习时间 2. 建立错题文档(记录电路烧毁/程序卡死等案例) 3. 每月参加校赛培训(重点学习往届评委评分标准) 建议从今天开始执行以下7日启动计划: ``` Day1:焊接10个0603封装电阻 Day3:用Arduino输出1kHz方波 Day5:搭建文氏桥振荡器 Day7:撰写第一个实验报告 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值