当前位置: 首页 > article >正文

【2025 最新前沿 MCP 教程 03】基础构建模块:工具、资源与提示

文章目录

    • 1. 开始啦
    • 2. 工具(模型控制):赋予 AI 行动能力
    • 3. 资源(应用控制):为 AI 提供关键上下文
    • 4. 提示(用户可控):优化 AI 交互
    • 5. 它们如何协同工作

1. 开始啦

欢迎来到模型上下文协议的核心引擎室!在前几章中,我们探讨了 MCP 背后的「为什么」——即需要一种标准化方式让 AI 模型与应用有效沟通。

现在,我们将深入「如何实现」。本章将介绍使 MCP 运作的三大基础构建模块: 工具 、资源和提示

试想构建一个复杂的 AI 助手。你需要让 AI 具备执行操作的能力(如预约安排),让它能够知晓信息(如你的当前日程),以及让你能引导其行为以获得最佳结果。

工具、资源和提示正是 MCP 框架中提供这些功能的三大支柱。理解这些核心组件对于释放 AI 集成的全部潜力至关重要。让我们慢慢来搞明白。


2. 工具(模型控制):赋予 AI 行动能力

想象给你的 AI 助手一套专用工具——扳手用来修理、电话用来拨打、笔用来书写信息。在 MCP 中,工具正是如此:它们是 AI 模型可以选择使用的功能或能力,用以执行操作或与外界交互。

  • 定义: 工具代表 AI 模型可以调用的动作或操作。它们本质上是向模型开放的函数,使其不仅能生成文本,还能主动执行数字世界乃至物理世界中的任务(通过连接的系统)。
  • 控制: 工具是由模型控制的。这意味着 AI 根据用户请求和上下文决定何时及如何使用特定工具。应用程序定义哪些工具可用,但由模型选择并执行它们。
  • 类比: 想象一位技艺精湛的厨师(AI 模型)在设备齐全的厨房(应用环境)中工作。刀具、烤箱和搅拌机就是工具。厨师根据菜谱(用户请求)决定使用哪种工具(例如"我需要打蛋器来搅拌这些鸡蛋")。
  • 示例:
    • API 调用: 向外部服务发送数据(例如使用 book_flight 工具调用航空公司 API)。
    • 数据库操作: 执行命令更新信息(例如一个 create_calendar_event 工具向数据库添加条目)。
    • 发送通知: 触发警报或消息(例如使用 send_email 工具)。
    • 执行代码: 在应用程序环境中运行特定脚本或函数。

工具是 MCP 中面向行动的部分,使 AI 能够成为积极的参与者,而不仅仅是被动的响应者。


3. 资源(应用控制):为 AI 提供关键上下文

如果说工具是 AI 能做什么,那么资源就是 AI 能知道什么。为了让 AI 智能行动,它需要获取相关且最新的信息。资源正是提供这种上下文的关键。

  • 定义: 资源代表应用程序向 AI 模型提供的特定数据或信息片段。它们作为受控访问点,连接应用程序状态或外部数据源。
  • 控制: 资源由应用程序控制。应用程序决定哪些信息可作为资源使用,并确保提供的数据准确且实时。AI 模型可以请求访问资源,但数据本身由应用程序管理。
  • 类比: 延续厨师的比喻,资源就像是储藏室和冰箱里的食材(应用程序的数据存储)。厨师(AI 模型)知道可以要求"西红柿"(访问用户资料资源),而厨房经理(应用程序)则确保西红柿新鲜并在请求时提供。
  • 示例:
    • 用户资料数据: 访问诸如姓名、邮箱、偏好等信息(用户资料资源)。
    • 产品目录: 获取可用产品的详细信息(产品数据库资源)。
    • 当前天气: 获取实时天气信息(weather_api_data 资源)。
    • 文档内容: 访问特定文件的文本内容(document_text 资源)。
    • GET 端点: 正如您所指出的,资源在功能上类似于 Web 开发中的 HTTP GET 端点——它们提供了一种检索特定信息的方式,而无需改变系统底层状态。

资源确保 AI 模型在必要的背景信息下运行,从而产生更相关、更准确的响应和行动。


4. 提示(用户可控):优化 AI 交互

当工具让 AI 行动、资源让 AI 认知时,提示允许用户(或开发者)引导 AI 如何处理任务。它们是塑造 AI 针对特定用例行为的模板或指令。

  • 定义: 提示是与 AI 模型交互的预定义结构或模板,旨在为重复性任务或特定场景获取最优响应。通常包含动态信息的占位符。
  • 控制: 提示通常由用户控制或开发者控制。用户或开发者设计这些提示以简化交互,并确保 AI 以最高效的格式接收指令。
  • 类比: 将提示词想象成餐厅的标准点菜单。与其模糊地告诉厨师“给我做点吃的”,不如使用表单(点披萨提示)明确标注“尺寸:[大号],配料:[意大利辣香肠,蘑菇],饼底:[薄脆]”。这能确保厨师以正确格式获取所需的确切信息。
  • 示例:
    • 摘要提示: “总结以下文档:[文档内容]。重点关注关键发现和待办事项。”
    • 邮件生成提示: “起草一封礼貌的跟进邮件给[收件人姓名],内容关于我们讨论[主题]的会议。提一下会议笔记已附上。”
    • 代码生成提示:“编写一个名为 [函数名] 的 Python 函数,该函数接收 [输入参数] 并返回 [预期输出]。需包含针对 [特定错误条件] 的错误处理。”

提示作为交互的蓝图,使得与 AI 的沟通更加高效、可预测,并能针对特定需求进行定制。


5. 它们如何协同工作

当工具、资源和提示协同工作时,MCP 的真正威力才得以显现。让我们通过一个简单场景来说明:

场景: 用户询问他们的 AI 助手:“我明天的日程安排是什么?能否帮我预订一个与张三关于项目启动的 30 分钟会议?”

  1. 用户请求: 初始请求到来。
  2. 提示(可选): 应用程序可能使用预定义的 schedule_and_book 提示来构建交互,确保 AI 理解请求的双重性质。
  3. 资源访问: AI 模型识别出需要日程信息。它请求访问 user_calendar 资源。应用程序提供了明天相关的日历数据。
  4. 信息处理: AI 处理通过资源获取的日历数据。
  5. 工具调用: AI 确定需要预订会议。它识别出 book_meeting 工具作为合适的操作。
  6. 工具执行: AI 调用 book_meeting 工具,可能传递诸如参会人(“张三”)、时长(“30 分钟”)和主题(“项目启动”)等参数。该应用背后支持 book_meeting 工具的代码会与日历系统 API 交互以创建事件。
  7. 响应生成: AI 通过整合来自 user_calendar 资源的信息和 book_meeting 工具的执行结果(例如"明天上午 10 点您有一个会议。我已成功为您预约了下午 2 点与 张三 关于项目启动的 30 分钟会议。")来生成用户响应。

在此流程中,资源提供上下文(日程安排),工具执行操作(预约),而提示词可用于结构化初始请求以确保清晰度。这种协作使得复杂多步骤任务能够无缝处理。

通过理解工具、资源和提示,您就掌握了模型上下文协议的核心机制。这些组件提供了一个灵活而标准化的框架,用于构建复杂的应用程序,使 AI 模型能够访问信息、采取有意义的行动,并在指导下实现最佳性能。在下一章中,我们将深入探讨实际实现细节,并探索如何在您自己的项目中定义和使用这些构建模块。

相关文章:

【2025 最新前沿 MCP 教程 03】基础构建模块:工具、资源与提示

文章目录 1. 开始啦2. 工具(模型控制):赋予 AI 行动能力3. 资源(应用控制):为 AI 提供关键上下文4. 提示(用户可控):优化 AI 交互5. 它们如何协同工作 1. 开始啦 欢迎来…...

Docker-高级使用

前言 书接上文Docker-初级安装及使用_用docker安装doccano-CSDN博客,我们讲解了Docker的基本操作,下面我们讲解的是高级使用,请大家做好准备! 大家如果是从初级安装使用过来的话,建议把之前镜像和搭载的容器数据卷里面…...

计算机网络 | Chapter1 计算机网络和因特网

💓个人主页:mooridy-CSDN博客 💓文章专栏:《计算机网络:自定向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 🌹关注我,和我一起学习更多计算机网络的知识 🔝🔝 目录 …...

PowerBi中ALLEXCEPT怎么使用?

在 Power BI 的 DAX 中,ALLEXCEPT() 是一个非常重要的函数,用来实现**“在保留部分筛选条件的前提下,移除其他所有筛选器”**,它常用于 同比、占比、累计汇总 等分析中。 ✅ 一、ALLEXCEPT 是什么意思? 函数全称&…...

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 medical - pills.yaml 通常用于配置与医学药丸检测任务相关的参数和信息 Objects365.yaml 用于配置与 Objects365 数据集相关信息的文件。Objects365 数据集包含 365 个不同的物体类别…...

蚂蚁集团“Plan A”重磅登场,开启AI未来

近期,蚂蚁集团面向全球高潜AI人才,正式发布顶级专项招募计划——“Plan A”。作为其“蚂蚁星”校招体系的全新升级模块,Plan A聚焦人工智能领域科研精英,旨在与全球高校AI研究者协同突破AGI前沿,共绘技术未来图谱。 蚂…...

高中数学联赛模拟试题精选第18套几何题

在 △ A B C \triangle ABC △ABC 中, A B < A C AB< AC AB<AC, 点 K K K, L L L, M M M 分别是边 B C BC BC, C A C A CA, A B AB AB 的中点. △ A B C \triangle ABC △ABC 的内切圆圆心为 I I I, 且与边 B C BC BC 相切于点 D D D. 直线 l l l 经过线段…...

Kettle学习

一、Kettle 简介 Kettle(现称为 Pentaho Data Integration)是一款开源ETL工具,支持从多种数据源抽取、转换和加载数据,广泛应用于数据仓库构建、数据迁移和清洗。其核心优势包括: 可视化操作:通过拖拽组件设计数据处理流程(转换和作业)。多数据源支持:数据库(MySQL/…...

Synopsys 逻辑综合的整体架构概览

目录 一、DC Shell 逻辑综合的整体架构概览 ⛓️ 逻辑综合的主要阶段&#xff08;Pipeline&#xff09; 二、核心架构模块详解 1. Internal Database&#xff08;设计对象数据库&#xff09; 2. Scheduler&#xff08;调度器&#xff09; 3. Rewriting Engine&#xff08…...

Missashe考研日记-day27

Missashe考研日记-day27 0 写在前面 博主昨晚有事所以没学专业课&#xff0c;白天学了其他科&#xff0c;但是觉得不太好写博客&#xff0c;就合在今天一起写好了。 1 专业课408 学习时间&#xff1a;3h30min学习内容&#xff1a; 今天把内存管理部分剩下的关于分页分段和段…...

Java 富文本转word

前言&#xff1a; 本文的目的是将传入的富文本内容(html标签&#xff0c;图片)并且分页导出为word文档。 所使用的为docx4j 一、依赖导入 <!-- 富文本转word --><dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId&…...

多模态大语言模型arxiv论文略读(四十三)

InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文标题&#xff1a;InteraRec: Screenshot Based Recommendations Using Multimodal Large Language Models ➡️ 论文作者&#xff1a;Saketh Reddy Karra, Theja Tulabandhula …...

GPU加速-系统CUDA12.5-Windows10

误区注意 查看当前系统可支持的最高版本cuda&#xff1a;nvidia-smi 说明&#xff1a; 此处显示的12.7只是驱动对应的最高版本&#xff0c;不一定是 / 也不一定需要是 当前Python使用的版本。但我们所安装的CUDA版本需要 小于等于它&#xff08;即≤12.7&#xff09;因此即使…...

kafka课后总结

Kafka是由LinkedIn开发的分布式发布 - 订阅消息系统&#xff0c;具备高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性和高并发等特性。其主要角色包括Broker、Topic、Partition、Producer、Consumer、Consumer Group、replica、leader、follower和controller。消息系统中存…...

排序算法(快排+推排序+归并排序)

一、快排&#xff08;不稳定O(NlogN)&#xff09; 分治思想&#xff0c;随机选一个数作为pivot&#xff0c;然后放到数组最后去&#xff0c;比这个元素小的放左边&#xff0c;比这个元素大的放右边。最后再交换左边放完后的下一个元素和pivot&#xff0c;这样就把一个元素排好…...

【股票系统】使用docker本地构建ai-hedge-fund项目,模拟大师炒股进行分析。人工智能的对冲基金的开源项目

股票系统: https://github.com/virattt/ai-hedge-fund 镜像地址: https://gitcode.com/gh_mirrors/ai/ai-hedge-fund 项目地址: https://gitee.com/pythonstock/docker-run-ai-hedge-fund 这是一个基于人工智能的对冲基金的原理验证项目。本项目旨在探讨利用人工智能进行…...

施工安全巡检二维码制作

进入新时代以来&#xff0c;人们对安全的重视程度越来越高。特别在建筑施工行业&#xff0c;安全不仅是关乎着工人的性命&#xff0c;更是承载着工人背后家庭的幸福生活。此时就诞生了安全巡检的工作&#xff0c;而巡检过程中内容庞杂&#xff0c;安全生产检查、隐患排查、施工…...

什么是函数依赖中的 **自反律(Reflexivity)**、**增广律(Augmentation)** 和 **传递律(Transitivity)?

文章目录 1. 自反律&#xff08;Reflexivity Rule&#xff09;规则定义实际例子应用意义 2. 增广律&#xff08;Augmentation Rule&#xff09;规则定义实际例子应用意义 3. 传递律&#xff08;Transitivity Rule&#xff09;规则定义实际例子应用意义 综合应用场景&#xff1a…...

基于 Google Earth Engine (GEE) 的土地利用变化监测

一、引言 土地利用变化是全球环境变化的重要组成部分&#xff0c;对生态系统、气候和人类社会产生深远影响。利用遥感技术可以快速、准确地获取土地利用信息&#xff0c;监测其变化情况。本文将详细介绍如何使用 GEE 对特定区域的 Landsat 影像进行处理&#xff0c;实现土地利…...

Java基础语法10分钟速成

Java基础语法10分钟速成&#xff0c;记笔记版 JDKhello world变量字符串 类&#xff0c;继承&#xff0c;多态&#xff0c;重载 JDK JDK即Java development key&#xff0c;Java环境依赖包 在jdk中 编译器javac将代码的Java源文件编译为字节码文件&#xff08;.class&#xff…...

如何在Spring Boot中实现热加载以避免重启服务器

在 Spring Boot 开发中&#xff0c;频繁修改代码&#xff08;如 Java 类、配置文件或静态资源&#xff09;通常需要重启服务器&#xff0c;这会中断开发流程并降低效率。热加载&#xff08;Hot Reloading&#xff09;允许开发者在不重启服务器的情况下重新加载更改&#xff0c;…...

BT169-ASEMI无人机专用功率器件BT169

编辑&#xff1a;ll BT169-ASEMI无人机专用功率器件BT169 型号&#xff1a;BT169 品牌&#xff1a;ASEMI 封装&#xff1a;SOT-23 批号&#xff1a;最新 引脚数量&#xff1a;3 特性&#xff1a;单向可控硅 工作温度&#xff1a;-40℃~150℃ BT169单向可控硅&#xff…...

C++学习笔记(三十六)——STL之排序算法

一、STL 算法 C的STL&#xff08;Standard Template Library&#xff09; 提供了一组高效、通用的算法&#xff0c;这些算法适用于各种容器&#xff08;如 vector、list、set、map&#xff09;。 这些算法主要位于 <algorithm> 和 <numeric> 头文件中。 通用性&a…...

AI图像编辑器 Luminar Neo 便携版 Win1.24.0.14794

如果你对图像编辑有兴趣&#xff0c;但又不想花费太多时间学习复杂的软件操作&#xff0c;那么 Luminar Neo 可能就是你要找的完美工具。作为一款基于AI技术的创意图像编辑器&#xff0c;Luminar Neo简化了复杂的编辑流程&#xff0c;即使是没有任何图像处理经验的新手&#xf…...

发币流程是什么,需要多少成本?

这是一个专注于Web3相关开发的账号&#xff0c;具体会讲解步骤以及开发方案 偶尔会有科普&#xff0c;有兴趣的可以点右上角关注一下 发币&#xff08;发行数字货币&#xff09;的流程通常涉及技术实现、法律合规、经济模型设计等多个环节&#xff0c;以下是关键步骤的简要说明…...

【fork初体验】

文章目录 Linux 实验&#xff1a;深入理解 fork 系统调用一、实验目的二、实验环境三、实验内容与步骤&#xff08;一&#xff09;打印进程的进程 ID 和父进程 ID1. 编写程序2. 编译与运行3. 运行结果 &#xff08;二&#xff09;使用 fork 系统调用创建进程并加入循环语句1. 编…...

学习设计模式《六》——抽象工厂方法模式

一、基础概念 抽象工厂模式的本质是【选择产品簇(系列)的实现】&#xff1b; 抽象工厂模式定义&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类&#xff1b; 抽象工厂模式功能&#xff1a;抽象工厂的功能是为一系列相关对象或相互依…...

python_BeautifulSoup提取html中的信息

目录 描述&#xff1a; 过程&#xff1a; step one 下载html网页到本地 step two 提取html信息 list_con soup.select(.list-con) [0] li_list list_con.find_all(li) a li.find(span).find(a) title a.get(title) url a.get(href) span li.find(span).find(spa…...

单例设计模式之懒汉式以及线程安全问题

在单例设计模式中&#xff0c;懒汉式&#xff08;Lazy Initialization&#xff09; 通过延迟实例化来优化资源使用&#xff0c;但在多线程环境下存在线程安全问题。以下是其核心问题及解决方案的详细解析&#xff1a; 一、基础懒汉式代码&#xff08;线程不安全&#xff09; pu…...

今日头条如何查看IP归属地?详细教程与常见问题解答

在当今互联网时代&#xff0c;IP属地信息已成为各大社交平台展示用户真实性的重要标识。今日头条作为国内领先的资讯平台&#xff0c;也提供了IP属地显示功能。那么&#xff0c;今日头条怎么查看IP归属地&#xff1f;本文将详细介绍在今日头条11.9.0版本中如何查看自己和他人的…...