C#实现自己的MCP Client

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 -
文章首发于公众号【编程乐趣】,欢迎大家关注。
image

推荐阅读

盘点11个.Net比较流行的开源的ORM框架

盘点6个WebAPI+Vue前后端分离的.Net开源项目

Duplicati:一款跨平台的备份客户端,支持加密、增量、压缩的备份存储在云存储服务和远程文件服务器

一个简单又好用的.Net版本.env文件读写操作库

盘点4个浏览器插件相关的.Net开源项目

原创作者: chingho 转载于: https://www.cnblogs.com/chingho/p/18888423
### 使用和调用MCP客户端的API或接口 MCP(Model Context Protocol)是一种标准化模型-服务交互协议,它通过解耦模型和服务端实现跨平台通用性[^1]。在实际开发中,调用MCP客户端通常涉及以下几个方面: #### 1. 配置MCP客户端 在使用MCP客户端之前,需要先进行配置。以C#为例,可以创建一个`McpClientOptions`对象,并定义客户端的基本信息,例如名称和版本: ```csharp McpClientOptions options = new() { ClientInfo = new() { Name = "SimpleToolsConsole", Version = "1.0.0" } }; ``` 同时还需要定义服务器的配置信息,包括其ID、名称、传输类型以及相关参数: ```csharp var config = new McpServerConfig { Id = "test", Name = "Test", TransportType = TransportTypes.StdIo, TransportOptions = new Dictionary<string, string> { ["command"] = envVars["MCPCommand"], ["arguments"] = envVars["MCPArguments"], } }; ``` #### 2. 创建MCP客户端实例 通过`McpClientFactory`类可以基于上述配置创建一个MCP客户端实例: ```csharp var factory = new McpClientFactory(new[] { config }, options, NullLoggerFactory.Instance); return await factory.GetClientAsync("test"); ``` 这一步将建立与指定MCP服务器的连接。 #### 3. 调用MCP客户端的功能 一旦客户端成功初始化并连接到服务器,就可以通过调用其提供的方法来执行操作。具体的方法依赖于MCP服务器暴露的接口,但一般会涉及发送请求和接收响应的逻辑。例如,可以通过客户端发送异步任务请求或查询特定数据源的信息。 #### 4. 处理错误和日志记录 在实际应用中,建议集成日志记录工具(如`NullLoggerFactory`),以便跟踪和调试客户端的行为。此外,确保处理可能发生的异常情况,比如网络中断或无效响应。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值