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

MCP Tool 实现进度通知

本文档使用C#语言,引用类库ModelContextProtocol 1.1.0。

首先了解一下怎么通知。mcp可使用Json-RPC协议进行通信,在通信时,需要带上唯一的Id。在ModelContextProtocol类库中提供SendNotificationAsync进行实现。

ModelContextProtocol官方实例:

using ModelContextProtocol; using ModelContextProtocol.Protocol; using ModelContextProtocol.Server; using System.ComponentModel; namespace EverythingServer.Tools; [McpServerToolType] public class LongRunningTool { [McpServerTool(Name = "longRunningOperation"), Description("Demonstrates a long running operation with progress updates")] public static async Task<string> LongRunningOperation( McpServer server, RequestContext<CallToolRequestParams> context, int duration = 10, int steps = 5) { var progressToken = context.Params?.ProgressToken; var stepDuration = duration / steps; for (int i = 1; i <= steps + 1; i++) { await Task.Delay(stepDuration * 1000); if (progressToken is not null) { //参数1:可以自定义,根据业务进行调整; //参数2:通知的主要内容。 await server.SendNotificationAsync("notifications/progress", new { DataTime=DateTime.Now, Progress = i, Total = steps, progressToken }); } } return $"Long running operation completed. Duration: {duration} seconds. Steps: {steps}."; } }

测试结果

首先初始化获取SessionId参数

//请求内容 { "id": 1, "jsonrpc": "2.0", "method": "initialize" } //注:返回的SessionId在结果的Header中。

请求方式:Post,Header中添加Mcp-Session-Id

{ "id": 5, "jsonrpc": "2.0", "method": "tools/call", "params": { "arguments": { "duration": 10, "steps": 5 }, "name": "longRunningOperation", "_meta": { "progressToken": "5", } } }

返回结果

event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:02.0650511\u002B08:00","progress":1,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-12481cb00442bda3-01"}},"jsonrpc":"2.0"} event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:04.1063487\u002B08:00","progress":2,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-8fb8fe66e322a794-01"}},"jsonrpc":"2.0"} event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:06.1136731\u002B08:00","progress":3,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-c8d9c44f655556b5-01"}},"jsonrpc":"2.0"} event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:08.117121\u002B08:00","progress":4,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-d13d9d41491839e7-01"}},"jsonrpc":"2.0"} event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:10.129892\u002B08:00","progress":5,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-5ae4e347dddb7722-01"}},"jsonrpc":"2.0"} event: message data: {"method":"notifications/progress","params":{"dataTime":"2026-03-12T11:24:12.1450282\u002B08:00","progress":6,"total":5,"progressToken":"5","_meta":{"traceparent":"00-42c8e08ad79e37e2994a3281d4dd4f40-c43f7141197de3cd-01"}},"jsonrpc":"2.0"} event: message data: {"result":{"content":[{"type":"text","text":"Long running operation completed. Duration: 10 seconds. Steps: 5."}]},"id":5,"jsonrpc":"2.0"}
http://www.jsqmd.com/news/500140/

相关文章:

  • 【设计模式】依赖注入控制反转
  • 体验完阿里「悟空」,我想把电脑里的龙虾换掉了,是真NB!
  • 基于SpringBoot的汽车美容保养系统
  • 主机管理---windows2012配置ftp服务器20240813
  • Ansys Zemax | 什么是Sobol取样?
  • 词嵌入(Word Embedding)和位置编码(Positional Encoding)
  • 常用的AIGC 检测工具有哪几种?
  • 被查出AI率不要慌!2026免费毕业论文去痕神器盘点
  • Cesium 中基于 1.19.11 实现自定义影像与哈密地形加载
  • 素材分类即搜即用:视频数字资产管理让制作周期缩短 70%,效率翻倍
  • [Win11家庭中文版]如何关闭基于虚拟化的安全性VBS(为了解决VBS启用状态下 VMware性能很差 频繁闪退或有各种不一样的崩溃报错)
  • 【小白说】【论文拆解】Neural-Pull: Learning Signed Distance Functions from Point Clouds by Learning to Pull Sp
  • Window(10/11)QQ多开
  • 嘎嘎降AI9大平台验证怎么用?上传到出结果完整操作录屏
  • SEO_2024年最新的SEO策略与方法详解
  • SEO_持续提升网站SEO排名的长期维护方案
  • shell脚本语言知识点总结
  • PDF转Word工具2026深度评测:5款主流工具权威评分体系与案例解析
  • 跨境电商合规智能化:版权检测能力与 Agent Skill 的技术融合与落地实现
  • 刚刚!GPT-5.4 mini/nano正式发布,轻量编程模型性能逼近满血版
  • 2026盘点:毕业论文AIGC降重怎么破?这款工具免费用!
  • SEO_中小企业必备的低成本SEO推广方法
  • 二十、kubernetes基础-30-kubernetes-ha-binary-deployment-07-dns-operations
  • 什么是Skill
  • 3月18日打卡
  • 告别AI Agent学习焦虑!6个GitHub项目带你从入门到精通,附可执行路线图
  • RPC核心原理:组件与调用流程
  • 2025年10款降AI率工具深度测评:论文降ai率,谁是真能手?
  • 智破纸质壁垒 赋能医药合规——旗讯数字医药注册批件纸质文档智能识别与结构化提取对接解决方案
  • 2026年本科毕业论文查AI率用什么工具预检?这3个又快又准