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
### C#、DeepSeek 和 MCP 的集成使用或错误解决方案 在 C# 中集成 DeepSeek 和 MCP(Management Communication Protocol)时,需要考虑多个方面,包括 API 调用、数据处理以及错误处理。以下是关于如何实现集成的一些关键点和可能的解决方案。 #### 1. 深入了解 DeepSeek 和 MCP DeepSeek 是一种先进的大语言模型,能够生成高质量的文本[^2]。MCP 是一种通信协议,通常用于管理和控制设备或系统之间的交互。在 C# 中集成这两个技术,首先需要明确 DeepSeek 提供的 API 接口以及 MCP 的具体实现方式。 #### 2. 使用 C# 调用 DeepSeek API 为了调用 DeepSeek API,可以使用 `HttpClient` 类发送 HTTP 请求。以下是一个简单的代码示例: ```csharp using System; using System.Net.Http; using System.Text.Json; using System.Threading.Tasks; public class DeepSeekClient { private static readonly HttpClient client = new HttpClient(); public async Task<string> GetResponseAsync(string prompt) { var requestUri = "https://api.deepseek.com/v1/generate"; // 示例 URI,请替换为实际 API 地址 var content = new StringContent(JsonSerializer.Serialize(new { text = prompt }), System.Text.Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(requestUri, content); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); return responseBody; } } ``` 上述代码展示了如何通过 POST 请求向 DeepSeek API 发送提示并获取响应[^3]。 #### 3. 实现 MCP 协议 MCP实现取决于具体的协议规范。如果 MCP 是基于 TCP/IP 或其他网络协议,可以使用 `TcpClient` 或 `UdpClient` 类来实现通信。以下是一个简单的 TCP 客户端示例: ```csharp using System; using System.Net.Sockets; using System.Text; public class McpClient { public void SendMcpMessage(string server, int port, string message) { try { using (TcpClient client = new TcpClient(server, port)) using (NetworkStream stream = client.GetStream()) { byte[] data = Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); byte[] buffer = new byte[256]; int bytes = stream.Read(buffer, 0, buffer.Length); Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes)); } } catch (Exception e) { Console.WriteLine($"Error: {e.Message}"); } } } ``` 此代码片段展示了如何通过 TCP 连接发送和接收 MCP 消息[^4]。 #### 4. 错误处理与日志记录 在集成过程中,错误处理至关重要。可以使用 `try-catch` 块捕获异常,并结合日志记录工具(如 NLog 或 Serilog)记录错误信息。例如: ```csharp using NLog; public class ErrorLogger { private static readonly Logger logger = LogManager.GetCurrentClassLogger(); public void LogError(Exception ex) { logger.Error(ex, "An error occurred during integration."); } } ``` 通过记录详细的错误信息,可以更轻松地诊断问题并提供解决方案[^5]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值