项目简介
MCP Toolkit for .NET 是一个用于在 .NET 中构建 MCP(Model Context Protocol)服务器和客户端的框架。它旨在提供一个轻量、高性能且易于使用的开发体验,特别支持 .NET 的 NativeAOT 编译,以减小部署体积和提高启动速度。通过利用 Source Generators 技术,该框架能够大幅减少开发者需要手动编写的 boilerplate 代码。
主要功能点
- MCP 服务器开发: 轻松定义和托管 LLM 应用所需的上下文信息和服务。
- 工具 (Tools): 注册和管理可由 LLM 调用的外部函数或操作,为 LLM 提供执行特定任务的能力。
- 资源 (Resources): 托管和提供结构化或非结构化的数据,允许 LLM 访问和理解外部信息。
- Prompt 模板 (Prompts): 定义可复用的 Prompt 结构和内容,帮助 LLM 进行有针对性的交互。
- 标准协议支持: 完全基于 MCP 标准的 JSON-RPC 协议实现通信,确保与符合 MCP 规范的客户端互操作。
- 多种传输方式: 支持标准输入输出 (Stdio) 等传输协议,未来计划支持更多(如 SSE, WebSocket)。
- 简化的开发体验: 利用 Source Generators 自动生成大量底层协议处理代码,开发者只需关注业务逻辑。
- 高性能与轻量: 依赖项少,避免不必要的开销,兼容 NativeAOT 编译,适用于对性能和体积有要求的场景。
- MCP 客户端功能: 除了服务器,也提供用于构建 MCP 客户端的 API,方便与其他 MCP 服务器进行交互。
安装步骤
要在你的 .NET 项目中使用 MCP Toolkit,你需要通过 NuGet 包管理器或 .NET CLI 添加相应的库。
- 如果你要开发 MCP 服务器,请安装 'McpToolkit.Server' 包。
- 如果你要开发 MCP 客户端,请安装 'McpToolkit.Client' 包。
使用 .NET CLI 安装示例:
# 安装 MCP 服务器包 dotnet add package McpToolkit.Server # 安装 MCP 客户端包 (如果需要) dotnet add package McpToolkit.Client
服务器配置 (供 MCP 客户端参考)
一个 MCP 客户端在连接 MCP 服务器时,需要知道如何定位和启动该服务器进程,并与其建立通信。这些配置信息通常由客户端负责管理。以下是 MCP 客户端连接基于 MCP Toolkit 构建的 MCP 服务器时可能需要配置的关键信息:
- 服务器名称 ('serverName'): 一个标识 MCP 服务器的字符串名称(例如:"我的本地服务")。
- 启动命令 ('command'): 用于启动 MCP 服务器进程的可执行文件或命令(例如:'"dotnet"')。
- 命令参数 ('args'): 传递给启动命令的参数列表(一个字符串数组)。这通常包括指向服务器项目文件(如 '.csproj')或已发布的可执行文件的路径,以及任何必要的命令行参数(例如:'["run", "--project", "/path/to/your/ServerProject.csproj"]')。
- 传输协议 ('transport'): 指明客户端应使用哪种方式与服务器通信,例如 '"stdio"' 表示标准输入输出。
具体的配置格式和加载方式取决于你使用的 MCP 客户端实现。
基本使用方法 (服务器端)
使用 MCP Toolkit 构建 MCP 服务器通常包含以下步骤:
- 在你的应用程序中创建一个 MCP 服务器的核心实例。
- 通过服务器实例提供的 API,注册你希望暴露给 LLM 客户端的功能:
- 调用方法添加 工具 (Tools):提供工具名称、描述以及对应的处理函数(可以是 lambda 或特定特性的方法),框架会自动生成必要的协议适配代码。
- 调用方法添加 资源 (Resources):提供资源的 URI、名称和处理函数,该函数负责在客户端请求时读取资源内容。
- 调用方法添加 Prompt 模板 (Prompts):提供 Prompt 的名称、描述和处理函数,用于根据需要生成对话消息列表。
- 实例化一个实现了 'IMcpTransport' 接口的传输对象,例如 'StdioServerTransport' 用于标准输入输出通信。
- 调用服务器实例的 'ConnectAsync' 方法,传入配置好的传输对象,启动服务器的监听和消息处理循环。
- 保持服务器进程运行,它将通过选定的传输方式接收并响应来自 MCP 客户端的 JSON-RPC 请求。
MCP Toolkit 的 Source Generators 会在编译时分析你注册工具的方式,并生成相应的代码,极大地简化了工具的定义和注册过程。
信息
分类
开发者工具