项目简介
'.NET AI Workshop' 仓库是微软为开发者提供的 AI 应用构建指南,其中包含了 Model Context Protocol (MCP) 服务器的实现示例和开发教程。这些 MCP 服务器通过标准化方式向大型语言模型(LLM)客户端提供上下文信息和外部功能调用,支持资源托管、工具执行和 Prompt 模板定义。本项目展示了如何使用 .NET 框架构建基于 Stdio 传输协议的 MCP 服务器,并注册可供 LLM 调用的工具,如天气查询、随机数生成和模拟业务订单管理等。
主要功能点
- 工具注册与执行:服务器能够注册并托管多种工具,LLM 客户端可以通过 JSON-RPC 协议调用这些工具以执行特定功能,例如:
- 获取当前天气或未来天气预报。
- 生成指定范围内的随机数。
- 查询模拟的 Contoso 业务订单详情、按客户搜索订单或检查产品库存。
- 上下文信息提供:通过执行工具,服务器能够向 LLM 提供动态生成的、与特定查询相关的上下文数据。
- JSON-RPC 通信:服务器通过 JSON-RPC 协议与 LLM 客户端进行通信,接收请求并返回结构化响应。
- Stdio 传输协议:默认使用标准输入/输出(Stdio)作为通信通道,易于集成和调试。
- 可扩展的 .NET 框架:基于 .NET Host Application Builder 构建,便于扩展和添加新的工具及服务。
安装步骤
- 克隆仓库:
git clone https://github.com/dotnet-presentations/ai-workshop.git cd ai-workshop - 安装 .NET SDK:确保您已安装 .NET 10.0 SDK(preview 6 或更高版本),这是 MCP 服务器开发所必需的。 可以通过访问 dotnet.microsoft.com/download 获取最新版本。
- 安装所需的 .NET AI 模板:
这些模板包含了 MCP 服务器开发所需的基础结构和依赖。dotnet new install Microsoft.Extensions.AI.Templates
服务器配置(针对 MCP 客户端)
MCP 服务器本身是可执行的应用程序。MCP 客户端需要知道如何启动这些服务器。以下是两个示例 MCP 服务器的配置信息,您的 MCP 客户端可以使用这些信息来启动并连接到它们:
1. 天气工具 MCP 服务器 ('MyMcpServer')
- 服务器名称: MyMcpServer
- 描述: 提供天气查询和随机数生成功能的 MCP 服务器。
- MCP 客户端配置:
- 'command': 'dotnet' (用于执行 .NET 应用程序)
- 'args': 'run --project "Part 7 - MCP Server Basics/MyMcpServer/MyMcpServer.csproj"' (指定要运行的项目路径)
2. 业务订单 MCP 服务器 ('ContosoOrdersMcpServer')
- 服务器名称: ContosoOrdersMcpServer
- 描述: 提供模拟 Contoso 业务订单查询和库存管理功能的 MCP 服务器。
- MCP 客户端配置:
- 'command': 'dotnet'
- 'args': 'run --project "Part 8 - Enhanced MCP Server/ContosoOrdersMcpServer/ContosoOrdersMcpServer.csproj"'
请注意: 上述 'args' 中的项目路径是相对于 'ai-workshop' 仓库根目录的。在实际使用时,请确保客户端能够正确解析并执行这些命令。
基本使用方法
一旦 MCP 客户端配置并启动了服务器,LLM 客户端即可通过 JSON-RPC 调用服务器注册的工具。
例如,对于 'MyMcpServer':
- LLM 可能会调用名为 'GetCurrentWeather' 的工具,并提供 'city' 参数(例如,'"London"'),服务器将返回模拟的当前天气信息。
- LLM 也可以调用 'GetRandomNumber' 工具,提供 'min' 和 'max' 参数,获取一个随机数。
对于 'ContosoOrdersMcpServer':
- LLM 可以调用 'GetOrderDetails' 工具,提供 'orderId' 参数(例如,'"12345"'),服务器将返回订单的详细信息。
- 调用 'SearchOrdersByCustomer' 工具,提供 'customerName' 参数,获取该客户的所有订单列表。
- 调用 'GetProductInventory' 工具,提供 'productName' 参数,查询产品的库存状态。
这些服务器作为独立的进程运行,与 LLM 客户端通过标准 I/O 进行通信,实现 AI 应用的上下文扩展和功能增强。
信息
分类
AI与计算