C#实现自己的MCP Client
市面上,有很多免费Client客户端。
虽然说,这些Client客户端可以满足我们大部分的需求,但是在实际企业业务场景中,免费的Client无法全部满足我们的需求。
下面我们用C# 实现MCP Client。
一、新建控制台项目
新建项目

框架选择.Net 8

二、添加MCP SDK
添加依赖库:ModelContextProtocol,版本为:最新预发行版 0.1.0-preview.13,添加的时候记得勾选:包括预发行版。

这个是官方提供的C#版本的SDK,官网:https://modelcontextprotocol.io/introduction。
三、实现客户端
下面代码,创建一个SSE客户端实例,并获取工具列表。
using ModelContextProtocol.Client; // 包含 McpClientFactory 和 McpClient 相关定义
using ModelContextProtocol.Protocol.Transport; // 包含传输层相关类,如 SseClientTransport
// 创建一个 SSE(Server-Sent Events)客户端传输配置实例
var config = new SseClientTransport(
// 配置传输选项,指定服务端点(Endpoint)
new SseClientTransportOptions()
{
// 设置远程服务器的 URI 地址 (记得替换真实的地址,从魔搭MCP广场获取)
Endpoint = new Uri("https://mcp.api-inference.modelscope.cn/sse/215e9461d2xxxxx")
}
);
// 使用配置创建 MCP 客户端实例
var client = await McpClientFactory.CreateAsync(config);
// 调用客户端的 ListToolsAsync 方法,获取可用工具列表
var listToolsResult = await client.ListToolsAsync();
Console.WriteLine("功能列表:");
// 遍历工具列表,并逐个输出到控制台
foreach (var tool in listToolsResult)
{
Console.WriteLine($" 名称:{tool.Name},说明:{tool.Description}" );
}
运行效果如下,Fetch网页内容抓取,提供的工具列表。

这里MCP Server用的协议是Sse,Stdio协议实现,等后续文章自定义MCP Server会讲到。
官方也有提供C# 实现客户端的例子:
https://modelcontextprotocol.io/quickstart/client#c。
- End -
文章首发于公众号【编程乐趣】,欢迎大家关注。

推荐阅读
Duplicati:一款跨平台的备份客户端,支持加密、增量、压缩的备份存储在云存储服务和远程文件服务器
C#实现自己的MCP Client的更多相关文章
- vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...
- Apache2.4:AH01630 client denied by server configuration
问题说明:Apache服务总共有4个,是为了防止单点故障和负载均衡,负载均衡控制由局方的F5提供. 访问的内容在NAS存储上,现象是直接访问每个apache的服务内容都是没有问题,但是从负载地址过来的 ...
- [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一
1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有 ...
- xamarin IOS 报错处理: an error occurred on client Build420719 while
xamarin IOS 开发时如果报错如下: an error occurred on client Build420719 while...... 出现如下问题时,可能是1.丢失文件2.没有包括在项 ...
- ASP.NET OAuth:access token的加密解密,client secret与refresh token的生成
在 ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默认加密方法是: 1) System.Security.Crypt ...
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token
OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮 ...
- [OAuth]基于DotNetOpenAuth实现Client Credentials Grant
Client Credentials Grant是指直接由Client向Authorization Server请求access token,无需用户(Resource Owner)的授权.比如我们提 ...
- OData Client Code Generator
转发. [Tutorial & Sample] How to use OData Client Code Generator to generate client-side proxy cla ...
- offset、client、scroll开头的属性归纳总结
HTML元素有几个offset.client.scroll开头的属性,总是让人摸不着头脑.在书中看到记下来,分享给需要的小伙伴.主要是以下几个属性: 第一组:offsetWidth,offsetHei ...
- JavaScript学习笔记5 之 计时器 & scroll、offset、client系列属性 & 图片无缝滚动
一.计时器 setInterval ( 函数/名称 , 毫秒数 )表示每经过一定的毫秒后,执行一次相应的函数(重复) setTimeout ( 函数/名称 , 毫秒数 ) 表示经过一定的毫秒后,只执行 ...
随机推荐
- SpringCloud - [01] SpringCloud概述
题记部分 001 || 微服务概述 002 || 微服务技术栈 微服务条目 落地技术 服务开发 Spring.SpringMVC.SpringBoot 服务配置与管理 Netflix公司的Archai ...
- 5. Nginx 负载均衡配置案例(附有详细截图说明++)
5. Nginx 负载均衡配置案例(附有详细截图说明++) @ 目录 5. Nginx 负载均衡配置案例(附有详细截图说明++) 1. Nginx 负载均衡 配置实例 3. 注意事项和避免的坑 4. ...
- script 标签中 defer 和 async 的区别
https://www.cnblogs.com/huangtq/p/18422775 在 <script> 标签中,defer 和 async 是两个用于控制 JavaScript 脚本加 ...
- html5文本标签
标题文本 h1.h2.h3.h4.h5.h6 其中 h1.h2.h3是比较常用的.h3.h4.h5.h6相对来说用的会少一点,除非结构层次比较深才会使用. 段落文本 p <p>这是一个段落 ...
- abaqus建模时突发意外,软件闪退怎么才能找回操作?
abaqus/CAE 建模的时候可能经常由于各种各样的原因闪退(中断.卡住.未响应等等.) 这是很让人崩溃的时候,一个良好的习惯就是经常Ctrl+S,并且操作的时候不要太急,否则abaqus容易反应不 ...
- class com.ttsx.activity.item.dao.entity.RoleMenu ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. 报错解决办法
启动项目的时候,有几条WARN警告,如图: 引起原因: 是因为数据表实体类 没有di导致的. 例如: 解决办法: 增加实体id字段!或可以忽略!不影响程序!
- [Qt 基础内容-05] QDialogButtonBox
QDialogButtonBox 本文主要根据QT官方帮助文档以及日常使用,简单的介绍一下QDialogButtonBox的功能以及使用 文章目录 QDialogButtonBox 简介 信号和槽 基 ...
- uniapp 截屏扫码
最近开发功能遇到个需求,用户点击某个操作之后,需要截取当前屏幕内容,并扫码识别屏幕截图中的二维码,代码如下: 首先将代码抽离到外部文件中,以便复用: // 截图 export function tak ...
- 修改npm下载地址为淘宝镜像
修改 npm 下载地址 修改为国内淘宝镜像 # 修改为新淘宝镜像(推荐) npm config set registry https://registry.npmmirror.com/ # 旧 npm ...
- iframe高度自适应 完美解决
前言 一直被iframe的高度自适应的问题困扰着,今天终于找到完美解决方案,加上以下css即可. css iframe { display: block; border: none; height: ...