[MCP] Register Prompt

news/2025/10/6 2:57:03/文章来源:https://www.cnblogs.com/Answer1215/p/19127223

Prompts

MCP 支持 3 种上下文能力:

  1. tools:工具
  2. resources:资源
  3. prompts:提示词

在 MCP 中,prompts 表示服务端内置的提示词模板(prompt templates)集合,通过 prompt 模板机制,客户端无需硬编码 prompt,而是复用服务端定义的标准提示词,实现统一、版本化、模块化的调用方式。

Prompt相关方法

1. 获取提示词列表

{jsonrpc: "2.0",id: 1,method: "prompts/list", // 工具:tools/list、资源:resources/listparams: {}
}

返回:

{jsonrpc: "2.0",id: 1,// prompts对应是一个数组,因为可能有多个提示词模板prompts: [{name: "analyze-code", // 提示词模板的名称description: "Analyze code for potential improvements",// 提示词模板需要接收的参数arguments: [{name: "language",description: "Programming language",required: true,},],},];
}

2. 使用提示词

{jsonrpc: "2.0",id: 2,method: "prompts/get", // 固定的,工具:tools/call、资源:resources/readparams: {name: "analyze-code", // 要使用的提示词模板arguments: {language: "python" // 传递给提示词模板的参数}}
}

返回:

{jsonrpc: "2.0",id: 2,description: "Analyze Python code for potential improvements",// 返回具体的提示词信息messages: [{role: "user",content: {type: "text",text: "Please analyze the following Python code for potential improvements:\n\n```python\ndef calculate_sum(numbers):\n    total = 0\n    for num in numbers:\n        total = total + num\n    return total\n\nresult = calculate_sum([1, 2, 3, 4, 5])\nprint(result)\n```"}}]
}

课堂练习

为 MCP Server 注册提示词

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";const server = new McpServer({name: "resources-server",version: "0.1.0",
});server.registerPrompt("总结代码", // 提示词模板的名称{description: "生成代码总结的prompt模板",arguments: [{name: "code",description: "需要总结的代码",required: false,},{name: "language",description: "代码对应的编程语言",required: false,},],},async (request) => {const args = request.arguments || {}; // 拿到对应的参数const { code, language } = args;// 因为 inspector 调试工具不支持传参,这里我们给一个默认值const codeContent =code ||`function calculateTotal(items) {let total = 0;for (const item of items) {total += item.price * item.quantity;}return total;`;const codeLanguage = language || "javascript";return {messages: [{role: "user",content: {type: "text",text: `请帮我总结以下${codeLanguage}代码的功能和主要逻辑:\`\`\`${codeLanguage.toLowerCase()}${codeContent}\`\`\`请用中文回答,包括:1. 代码的主要功能2. 关键的逻辑流程  3. 使用的主要技术或库4. 可能的改进建议${!code? "\n*注意:由于未提供代码参数,这里使用了示例代码进行演示。*": ""}`,},},],};}
);server.registerPrompt("生成测试的提示词模板", // 第一个参数:提示词模板的名称{// 第二个参数:配置对象description: "为指定函数生成测试用例的prompt模板",arguments: [{name: "function_name",description: "要测试的函数名称",required: false,},{name: "function_code",description: "函数的完整代码",required: false,},{name: "test_framework",description: "使用的测试框架 (例如: Jest, Mocha, Vitest)",required: false,},],},async (request) => {// 第三个参数:处理函数const args = request.arguments || {};const { function_name, function_code, test_framework } = args;// 提供默认值const functionName = function_name || "calculateTotal";const functionCode =function_code ||`function calculateTotal(items) {if (!Array.isArray(items)) {throw new Error('参数必须是数组');}let total = 0;for (const item of items) {if (!item.price || !item.quantity) {throw new Error('每个商品必须有价格和数量');}total += item.price * item.quantity;}return total;
}`;const testFramework = test_framework || "Jest";return {messages: [{role: "user",content: {type: "text",text: `请为以下函数生成${testFramework}测试用例:函数名:${functionName}函数代码:
\`\`\`javascript
${functionCode}
\`\`\`请生成包括以下场景的测试用例:
1. 正常情况的测试
2. 边界情况的测试
3. 错误情况的测试
4. 输入验证的测试请用中文注释说明每个测试用例的目的。${!function_name && !function_code? "\n*注意:由于未提供函数参数,这里使用了示例函数进行演示。*": ""
}`,},},],};}
);const transport = new StdioServerTransport();
await server.connect(transport);

重新认识MCP

MCP,全称 Model Context Protocol, 模型上下文协议。 其旨在为AI 应用与外部程序之间建立通信标准,从而使得外部程序可以被部署到任意AI(满足MCP协议), 也使得AI应用可以使用任意的外部程序(MCP Server)。

🤔为什么称之为模型上下文?

无论是工具、资源、提示词,这些信息最终都会作为上下文的一部分,提供给大模型。也就是说,大模型是最终信息的消费者。

MCP 资源聚合平台

官方组织推出了一些 MCP Server

除了官方以外,也有一些第三方的 MCP Server 的平台,例如:

  1. MCP.So
  2. Awesome MCP Servers

[!tip]

不过目前第三方平台的 MCP Server 的质量参差不齐,推荐优先使用官方推出的 MCP Server。


-EOF-

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

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

相关文章

[Node.js] Server-Sent Events

远程通信方式 通信方式:Stdio: 推荐,高效、简洁、本地 Streamable HTTP: 远程前置知识 SSE 全称 Server-Sent Events,中文是“服务器发送事件”。是一种基于 HTTP 的单向通信协议,由浏览器发起连接,服务器可以持…

途途外贸企业网站管理系统asp网站后台产品管理中增加一个功能怎样修改

2024.6.13 **每日一题** 2813.子序列最大优雅度,本题利用了贪心的思想,首先将items按照profit从大到小进行排序,当子序列为前k个项目时,子序列的利润总和最大,但是总优雅度不一定最大,所以此时我们向后遍历…

温州有没有专门的企业网站网站开发需要什么关键技术

大数据产业创新服务媒体 ——聚焦数据 改变商业 在数智化转型的浪潮中,数据管理领域正面临着前所未有的挑战和机遇。企业在数据管理过程中,普遍遭遇数据孤岛、数据质量不佳、存储和处理成本高昂、数据安全与隐私保护压力以及多源异构数据整合困难等诸多…

郴州做网站公司如何去掉wordpress底部版权

通过添加语言,你可以更改用于在 Windows、应用和 Web 中读取和写入的语言。添加语言若要更改你的 Windows 显示语言或者添加键盘以进行键入,首先要将一种语言添加到语言列表中。从屏幕右边缘向中间轻扫,点击“设置”,然后点击“更…

网站开发代码语言建站教程视频下载

背景 随着各大云厂商产品版图的扩大,基础计算设施,中间件服务,大数据/AI 服务,应用运维管理服务等都可以直接被企业和开发者拿来即用。我们注意到也有不少企业基于不同云厂商的服务作为基础来建设自己的企业基础设施中台。为了更…

打车网站开发阿里主机 wordpress

来源: AI科技评论一个跨学科的研究小组希望创建一个名为「机器行为」的新学科,以了解人工智能将如何对我们的社会、文化、经济与政治造成影响。在《自然》杂志的一篇评论文章中,作者认为人工智能算法的研究需要扩展到计算机科学以外的领域,纳…

别人做的网站怎么seo优化厦门建设局网站改到哪

Java 将PDF 转为图片 使用工具:Free Spire.PDF for Java(免费版) Jar文件获取及导入: 方法1:通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入Java程序。 方…

怎样搭建一个网站大型网站订单系统怎么设计

很多人总是这样认为:好好读书,考上好学校,将来可以找到一份不错的工作,这样的思想观念,可能会导致你一辈子都无法实现财富自由。 财富的多少,和你的努力程度没有直接关系。我们可以清楚看到那些每天辛苦劳动…

石家庄网站建设seo网站前期策划

在 Ubuntu 中添加新用户并给予 root 权限的步骤如下: 打开终端,以 root 身份登录。sudo su - 使用 adduser 命令添加新用户。 adduser username 为新用户设置密码 passwd username 将新用户添加到 sudo 组。 usermod -aG sudo username…

中国免费网站申请环球网最新国际新闻

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位…

网站建设 业务无忧建站

背景: gazebo 模型库里的模型在我需要完成的任务中不够用,还是得从 solidworks、3DMax, blender这种建模软件里面在手动画一些,或者去他们的库里面在挖一挖。 目录 1 blender 1-1 blender 相关links 1-2 install 2 gazebo导入模型 2-1 g…

厦门网站建设外贸装修估价网

城市内涝是多个城市广泛存在的问题,经常给城市的居民和基础设施带来一些安全威胁。暴雨引发的道路积水和交通中断、财产损失,甚至公共安全威胁都是城市管理者需要提前预防的问题。为了解决这些问题,内涝积水监测仪的应用是一大重要的举措&…

公司招聘网站排行榜中国电商平台排行榜前十

为什么不推荐使用外键与级联? 【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 说明: 以学生和成绩的关系为例,学生表中的 student_id 是主键,那么成绩表中的 student_id 则为外键。如果更新学生表中的 student_id&#xff0c…

广西旅游 网站建设青岛做网站排名

一.正则表达式概述 1.正则表达式定义 1.1 定义 使用字符串描述、匹配一系列符合某个规则的字符串 1.2 了解 普通字符: 大小写字母、数字、标点符号及一些其它符号元字符: 在正则表达式中具有特殊意义的专用字符 1.3 层次分类 基础正则表达式扩展正…

python和php网站开发wordpress虚线框

云上磨一剑,砥砺自生辉移动云开发者社区挥手2020,焕新2021迎来社区功能全新升级现已正式上线移动云开发者社区自2020年11月对外发布以来,依托移动云全面的云能力、丰富的产品体系、专业领域能力培训认证、优质双创服务体系等核心资源&#xf…

网站建设报价方案下载建设网站的价格分析

题一:利用装饰器来计算函数的执行时间 代码: import timedef decorated(fn):def inner():a time.time() # func开始的时间 time.time记录时间fn()b time.time() # func结束的时间print(f"{fn.__name__}程序运行的总数时间:{b - a}秒"…

安顺市建设局网站宽屏网站设计

前言: 鸿蒙系统的学习与记录。 1 、使用开发工具:deveco-studio 1)这个是工具的安装 2)这个是工具包,里面包含了 obpm,如果你装不上这个,可以使用工具包内部的 2、安装 官方安装教程&#xff…

直播做网站WordPress多站点开启多语言

TypeScript 中的未知类型是一种特殊的类型,它用于表示我们不知道变量的类型是什么。与 any 类型不同,未知类型不允许我们直接对其进行操作或调用其方法,除非我们先进行类型检查。这是为了提高代码的类型安全性。 我们可以使用类型断言、类型…

四大门户网站是哪些单位网站建设目的

1.MyBatis的CRUD 创建工程&#xff1a; 1.1.查询 1.1.1.单个参数绑定 //单个参数传递public User findUserById(Integer id);<!--parameterType:指定输入参数的类型resultType&#xff1a;指定数据结果封装的数据类型#{id}&#xff1a;它代表占位符&#xff0c;相当于原来…