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
### 如何使用 Python 实现 MCP 客户端 以下是基于提供的引用以及相关背景知识,关于如何通过 Python 实现 MCP 客户端的信息。 #### 使用 `asyncio` 和自定义模块实现 MCP 客户端 在引用[1]中展示了一个完整的 Python 脚本示例,该脚本利用了异步编程库 `asyncio` 来处理标准输入输出流中的数据通信。此代码片段展示了如何初始化一个 MCP 客户端并与其服务器交互: ```python import asyncio from mcp.types import AnyUrl from mcp.client.session import ClientSession from mcp.client.stdio import StdioServerParameters, stdio_client async def main(): async with stdio_client( StdioServerParameters(command="python", args=["/root/domcp/server2.py"]) ) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # 列举可用资源 resources = await session.list_resources() print(resources) print("----------------------") # 获取特定资源的内容 resource = await session.read_resource(AnyUrl("file:///greeting.txt")) print(resource) asyncio.run(main()) ``` 这段代码实现了以下几个功能[^1]: - 初始化与 MCP 服务的标准 IO 流连接。 - 枚举远程服务器上的可访问资源列表。 - 请求指定路径下的文件内容作为资源读取操作的一部分。 #### 关于 Spring AI 的集成支持 如果考虑将 MCP 客户端的功能嵌入到更大的应用程序框架之中,则可以参考 spring.ai 提供的支持工具包——即 **spring-ai-starter-mcp-client**。这个 starter 帮助开发者更方便地把 MCP 功能加入聊天机器人或其他类型的客户端应用里[^2]。不过需要注意的是,这部分文档主要面向 Java 生态系统的开发人员,因此对于希望采用纯 Python 解决方案的人来说可能并不完全适用。 #### 对 MCP 协议的理解 最后值得一提的是,MCP 是一种开放式的协议,旨在标准化应用程序向大语言模型提供上下文的方式[^3]。就像 USB-C 接口统一了许多电子设备之间的物理接口一样,MCP 协议也试图成为人工智能领域内的通用桥梁,使得不同的数据源和服务能够无缝对接各种机器学习算法或者预训练好的神经网络结构之上运行的任务流程自动化平台等等场景下发挥重要作用。 综上所述,在实际项目当中可以根据具体需求选择合适的实现方法论来完成相应的业务逻辑编码工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值