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

MCP(Model Context Protocol)与提示词撰写

随着大模型(LLM)在复杂任务中的普及,如何让模型高效调用外部工具和数据成为关键挑战。传统函数调用(Function Calling)依赖开发者手动封装 API,而 MCP(Model Context Protocol) 通过标准化协议,实现了模型与工具的无缝对接,成为新一代 Agent 开发的核心基础设施。

简言之,MCP 是 AI 的“万能接口”,类似 USB-C 的通用性,让开发者无需重复造轮子即可连接数据库、本地文件、第三方服务等资源。


一、MCP 的核心原理:从函数调用到协议层革新

1. 传统函数调用的局限性
  • 工作流程复杂:需预定义函数、解析自然语言指令、手动处理参数与返回结果。
  • 维护成本高:每新增一个工具需重新编码适配,难以动态扩展。
  • 示例:调用股票查询工具需逐步解析用户指令 → 匹配函数 → 传参 → 返回结果。
2. MCP 的突破性设计
  • 协议层标准化:工具功能通过 MCP Server 暴露,模型通过统一协议调用,无需感知底层实现。
  • 自解释性:工具的描述、参数格式、返回值结构均以标准化 JSON Schema 定义,模型可零样本理解。
  • 动态发现:客户端(如 ChatGPT)可自动加载已注册的 MCP 工具列表,用户即选即用。

MCP vs. 传统 API 集成对比

维度传统函数调用MCP 协议
工具接入成本高(需代码适配)低(声明式描述)
动态扩展性强(服务热注册)
跨模型兼容性依赖模型适配协议统一,通用性强
典型应用场景简单工具调用复杂 Agent 工作流

二、MCP 提示词撰写的核心技巧

MCP 的效能高度依赖提示词设计。以下是关键实践原则:

1. 结构化提示词模板(MCP Prompts)
  • 定义清晰组件
    {"name": "股票查询工具","description": "获取指定股票代码的实时价格","arguments": [{ "name": "ticker", "description": "股票代码", "required": true }]
    }
    
    通过标准化字段声明工具功能,模型可自动生成调用逻辑。
  • 动态参数注入:支持从上下文(如用户输入、前置工具输出)自动填充参数。
2. 上下文优化四要素
  • 目标清晰化:明确任务目标(如“生成三条徒步路线”而非“推荐路线”)。
  • 格式约束:指定输出结构(如表格、Markdown),提升结果可读性。
  • 错误规避:添加验证逻辑(如“仅返回 AllTrails 可验证的路线”)。
  • 背景信息:注入用户偏好(如“避免热门路线”“沿海步道优先”)。
3. 安全边界设计
  • 风险提示:在工具描述中声明潜在风险(如“此操作将删除文件”)。
  • 权限分级:敏感工具(如数据库写入)需显式用户授权。

三、MCP 提示词实战案例:徒步路线生成工具

场景需求

用户输入:“推荐旧金山周边 3 条中等难度徒步路线,车程<2小时,偏好冷门路线。”

优化后的 MCP 提示词设计
{"name": "hiking_route_recommend","description": "基于位置和偏好生成徒步路线","arguments": [{ "name": "location", "description": "中心位置(如城市名)" },{ "name": "max_drive_time", "description": "最大车程(分钟)" },{ "name": "difficulty", "description": "难度等级(easy/medium/hard)" },{ "name": "preference_tags", "description": "偏好标签(如 coastal, historic)" }],"output_format": "表格(路线名称、起点、距离、特色)","constraints": ["路线需在 AllTrails 可验证","避开用户近期已访问路线(见上下文)"]
}

效果对比

  • 传统调用:模型可能返回模糊描述(“尝试 Mission Peak 步道”)。
  • MCP 调用:返回结构化表格,含可验证路线详情。

四、MCP 的局限性与应对策略

1. 当前挑战
  • 安全风险:恶意提示词注入可能操控工具行为(如篡改数据库)。
  • 性能瓶颈:复杂工具链可能导致响应延迟。
  • 工具生态碎片化:不同 MCP Server 实现质量参差。
2. 最佳实践建议
  • 工具分级:区分“查询类”与“执行类”工具,后者强制人工审核。
  • 测试沙盒:使用 mcp-chat 等工具模拟调用流程。
  • 生态整合:优先选择 smithery.aiMCP Market 等认证工具库。

五、未来展望:MCP 与提示词工程的融合演进

  1. 自然语言工具生成:模型根据用户描述自动创建 MCP 工具模板。
  2. 安全协议强化:预计 2025 年推出 MCP 安全扩展标准(如 OAuth 集成)。
  3. 操作系统级支持:苹果、微软等巨头正探索系统原生 MCP 框架,降低用户使用门槛。

相关文章:

MCP(Model Context Protocol)与提示词撰写

随着大模型&#xff08;LLM&#xff09;在复杂任务中的普及&#xff0c;如何让模型高效调用外部工具和数据成为关键挑战。传统函数调用&#xff08;Function Calling&#xff09;依赖开发者手动封装 API&#xff0c;而 MCP&#xff08;Model Context Protocol&#xff09; 通过…...

每日一令:Linux 极简通关指南 - 汇总

专栏列表 &#x1f4bb; 每日一令&#xff1a;Linux 极简通关指南 (25篇) 【基础】每天掌握一个Linux命令 - nsenter&#xff1a;深入容器与命名空间的利器 发布于 2025-06-08 22:27:04【基础】 每天掌握一个Linux命令 - journalctl&#xff1a;系统日志管理的得力助手 发布于…...

项目-- Json-Rpc框架

目录 项目简介环境搭建Ubuntu-22.04 第三方库使用JsonCppMuduo基础类EventLoop类TcpConnection类Buffer类TcpClient类TcpServer类 服务端基本搭建客户端基本搭建 future 项目设计通用模块设计Rpc功能模块设计发现者设计提供者设计服务注册中心设计 Topic功夫模块设计主题管理中…...

因泰立科技H1X激光雷达:因泰立科技为智慧工业注入新动力

在当今工业领域&#xff0c;精准测量与高效作业是推动产业升级的关键因素。因泰立科技推出的H1X三维轮廓扫描激光雷达&#xff0c;凭借其卓越的性能和广泛的应用场景&#xff0c;正成为智慧工业中不可或缺的高科技装备。 产品简介 H1X三维轮廓扫描激光雷达是因泰立科技基于二维…...

day50 随机函数与广播机制

目录 一、随机张量的生成 1.1 torch.randn() 函数 1.2 其他随机函数 1.3 输出维度测试 二、广播机制 2.1 广播机制的规则 2.2 加法的广播机制 二维张量与一维向量相加 三维张量与二维张量相加 二维张量与标量相加 高维张量与低维张量相加 2.3 乘法的广播机制 批量…...

Codeforces Educational 179(ABCDE)

前言 byd这组题纯靠感觉是吧…^_^ b题赛时举了无数个例子都没想明白&#xff0c;然后一直卡到结束&#xff0c;后面题都没看到&#xff0c;结果补题的时候c题d题直接秒了…-_-|| A. Energy Crystals #include <bits/stdc.h> using namespace std;typedef long long …...

基于 actix-web 框架的简单 demo

以下是一个基于 actix-web 框架的简单 demo&#xff0c; 如果你还没有 Rust&#xff0c;我们建议你使用 rustup 来管理你的 Rust 安装。官方 Rust 指南有一个很棒的入门部分。 Actix Web 目前支持的最低 Rust 版本 &#xff08;MSRV&#xff09; 为 1.72。运行 rustup update…...

python:Tkinter 开发邮件客户端,能编写邮件,发送邮件带附件

Python Tkinter 邮件客户端 下面是一个使用 Python Tkinter 开发的简单邮件客户端&#xff0c;支持编写邮件和发送邮件功能&#xff1a; 功能说明 这个邮件客户端包含以下功能&#xff1a; 邮件编写功能&#xff1a; 收件人地址输入抄送地址输入邮件主题输入邮件正文编辑区&…...

CMake基础:gcc/g++编译选项详解

目录 1.编译步骤 2.gcc 与 g 区别 3.gcc 命令的常用选项 3.1.基础编译选项 3.2.优化选项 3.3.调试与分析选项 3.4.链接选项 3.5.语言特性选项&#xff08;C 特化&#xff09; 3.6.安全增强选项 3.7.架构与指令集优化 3.8.其他常用选项 4.常见编译组合示例 5.常用环…...

深入解析Java21核心新特性(虚拟线程,分代 ZGC,记录模式模式匹配增强)

文章目录 前言一、虚拟线程 (Virtual Threads - JEP 444) - 并发的革命1.1 解决的核心问题&#x1f3af;1.2 工作原理与核心机制⚙️1.3 使用详解与最佳实践&#x1f6e0;️1.4 注意事项⚠️1.5 总结 &#x1f4da; 二、分代 ZGC (Generational ZGC - JEP 439) - 低延迟新高度2…...

免费批量去水印工具 - 针对文心一言生成图片

免费批量去水印工具 - 针对文心一言生成图片 工具介绍 这是一款免费的批量去水印工具&#xff0c;专门针对文心一言生成的图片进行处理。通过简单的操作&#xff0c;您可以快速去除图片中的水印。 下载链接 您可以通过以下网盘链接下载工具&#xff1a; 链接: https://pa…...

android 之 MediaExtractor

MediaExtractor 是Android多媒体处理的基础组件&#xff0c;解封装是其核心价值。 一、功能与定位 MediaExtractor 是Android多媒体框架中的媒体解封装工具&#xff0c;主要作用是从媒体文件&#xff08;如MP4、MKV、MP3&#xff09;中分离音视频轨道数据&#xff0c;为后续解…...

行业案例 | ASOS 借助 Azure AI Foundry(国际版)为年轻时尚爱好者打造惊喜体验

英国潮流电商ASOS借力微软Azure OpenAI&#xff0c;打造生成式AI购物新体验。平台整合大语言模型与推荐引擎&#xff0c;通过智能聊天交互帮年轻用户探索穿搭灵感&#xff0c;精准匹配近900个品牌的潮流单品&#xff0c;实现技术升级与个性化需求的双重突破。 使用 Azure Open…...

在WPS中如何启用宏VBA wps.vba.exe下载和安装

首先我们点击导航栏中的【工具】&#xff0c;点击左侧 运行宏&#xff0c;根据提示 点击 立即加载。加载卡在50%时间比较长&#xff0c;耐心等待。 关闭wps重新打开后&#xff0c; word和xls表格都可以使用了。 如果电脑无法联网&#xff0c;需要提前下载 WPS VBA插件 WPS VB…...

12.7Swing控件5 JProgressBar

Swing 进度条&#xff08;JProgressBar&#xff09;是用于可视化展示任务完成进度的组件&#xff0c;通常用于显示长时间运行任务的完成百分比。以下是关于 Swing 进度条的详细介绍&#xff1a; 1. 基本概念与用途 作用&#xff1a;直观展示任务完成进度&#xff0c;避免用户…...

Hardware-Efficient Attention for Fast Decoding

TL;DR 2025 年普林斯顿大学提出的硬件友好 attention 设计&#xff0c;在 MQA/GQA 与 deepseek 提出的 MLA 基础之上继续优化&#xff0c;提出 Grouped-Tied Attention (GTA) 和 Grouped Latent Attention (GLA)&#xff0c;实现更高推理效率的同时也能保持较好的模型效果。 …...

LLMs 系列科普文(13)

十三、AlphaGO 提到强化学习的历史&#xff0c;不得不提到 alphago&#xff0c;如果你不记得这是什么了&#xff0c;那你是否还曾记得&#xff0c;早些年 AI 已经可以在围棋中击败人类选手了。 AlphaGO 系统又 DeepMind 公司开发&#xff0c;你可以在网络上找到当初人机大战的…...

kubernetes jenkins pipeline优化拉取大仓库性能指定分支+深度

有时候我们历史的git仓库&#xff0c;提交了某个比较大的文件如果不限制 depth &#xff0c;就会拉取所有的历史提交记录&#xff0c;这样在历史仓库比较大的时候 clone 非常之慢&#xff0c;而实际上我们只需要最新的代码来构建就行了&#xff0c;为了优化性能&#xff0c;我们…...

element-plus 单选组件 el-radio,选不上,又没报错,直接复制官网也不行解决方案

在使用 Vue 框架开发项目时&#xff0c;Element UI 是常用的组件库。最近在开发中遇到了 Element 单选框组件el-radio的双向绑定问题&#xff0c;直接复制element官网上的的案例下来也是不得&#xff0c;经过调试和探索&#xff0c;终于找到了解决方案&#xff0c;特此记录分享…...

UDP:简洁高效的报文结构解析与关键注意事项

UDP&#xff08;User Datagram Protocol&#xff09;以其无连接、低开销的特性&#xff0c;成为实时应用&#xff08;如视频、游戏、DNS&#xff09;的首选传输协议。深入理解其报文结构和注意事项&#xff0c;是高效利用UDP的基础。 一、UDP报文结构&#xff1a;简洁的四段式 …...

idea 启动jar程序并调试

添加一个JAR 应用程序&#xff0c;填写以下内容&#xff1a; JAR路径&#xff1a;填写你要启动的jar程序的绝对路径 虚拟机选项&#xff1a;-Xmx1G -Xms1G -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 程序实参&#xff08;可选&#xff0c;minecraft专用…...

CSS 轮廓(Outline)与边框(Border)的深度解析

在 CSS 中&#xff0c;轮廓&#xff08;outline&#xff09;和边框&#xff08;border&#xff09;是两个用于装饰元素的重要属性&#xff0c;但它们在功能、渲染机制和应用场景上存在显著差异。下面从多个维度进行详细对比&#xff1a; 一、基础定义与语法差异 边框&#xf…...

Spring Boot 2 中 default-autowire 的使用

Spring Boot 2 中 default-autowire 的使用 在 Spring Boot 2 中&#xff0c;default-autowire 这个来自传统 XML 配置的概念仍然存在&#xff0c;但它的使用已经大大减少&#xff0c;因为现代 Spring Boot 应用主要使用注解驱动的配置方式。 default-autowire 在 Spring Boo…...

Docker 部署 Python 的 Flask项目

文章目录 一、构建运行 Docker 容器1. 查找合适镜像2.本地docker 拉取镜像3.项目配置1. python项目下生成 requirements.txt 依赖文件2. 生成Dockerfile文件3.忽略不必要文件4. 构建镜像 4. 运行容器5.测试 二、常见问题与解决方案 一、构建运行 Docker 容器 1. 查找合适镜像 …...

12.vite,webpack构建工具

&#x1f63a;&#x1f63a; &#x1f63a;1.vite 介绍和对比 &#x1f3f7;️ Vite 是什么&#xff1f; &#x1f449; Vite 是一个 前端构建工具 开发服务器&#xff0c; 可以帮你&#xff1a; • 开发阶段&#xff1a;秒开项目&#xff0c;改代码能瞬间热更新&#xff08;…...

Vue入门到实战之第一篇【超基础】

Vue入门到实战之第一篇 学习路线1. Vue 概念1.1 Vue 是什么 2. 创建Vue实例&#xff0c;初始化渲染3. 插值表达式 {{ }}4. Vue响应式特性5. 开发者工具 学习路线 1. Vue 概念 1.1 Vue 是什么 概念&#xff1a; Vue是一个用于 构建用户界面1 的 渐进式2 框架3 1&#xff1a;基…...

Selenium自动化操作

1、跳转页面播放视频 我们以b站为例&#xff0c;测试是否可以点击模块进行播放视频 //点击页面看是否视频正常播放public void turn() throws InterruptedException {driver.findElement(By.cssSelector("#i_cecream > div.bili-feed4 > main > div.feed2 >…...

实时数据分析的技术架构:Lambda vs Kappa架构选择

文章目录 引言:实时数据分析架构的重要性Lambda架构深度解析Kappa架构技术特性架构对比分析维度性能与可扩展性评估技术栈选型指南实际应用场景分析成本效益对比模型混合架构与演进策略企业级决策框架最佳实践与案例研究技术趋势与未来展望引言:实时数据分析架构的重要性 在…...

MongoDB慢查询临时开启方法讲解

1、首先连接数据库 mongosh "mongodb://localhost:27017" 2、选择目标数据库 show databases;#显示所有数据库 use lidb;#使用某数据库 3、查看当前分析级别 db.getProfilingStatus() 输出 { was: 0, slowms: 100, sampleRate: 1, ok: 1 } #was0表示关闭&…...

springboot2.x升级springboot3.x

springboot2.x升级springboot3.x 背景升级jdk版本为17以上springboot版本修改javax包更新mybatis-plus升级swagger升级springdocspringdoc配置 背景 当前项目是springboot2.5.9版本的springbootmybatis-plus项目&#xff0c;需要升级到springboot3.5.0项目。 升级jdk版本为17…...