这是一个基于 .NET 平台实现的 Model Context Protocol (MCP) 服务器示例项目,旨在演示如何构建一个后端服务,通过标准化的 MCP 工具向 LLM 客户端提供业务能力。该示例聚焦于员工假期管理功能。
项目简介
项目包含一个 MCP 服务器和相应的客户端实现,用于管理和查询员工的剩余年假。服务器通过 MCP 协议对外暴露管理假期相关的“工具”,LLM 客户端可以调用这些工具来执行具体操作。项目提供了基于标准输入/输出 (Stdio) 和服务器发送事件 (SSE) 两种传输协议的实现。
主要功能点
该MCP服务器示例通过其定义的工具提供以下功能:
- 获取员工剩余年假: 查询特定员工还剩余多少天年假。
- 扣除员工年假: 为特定员工扣除指定天数的年假,并更新记录。
- 获取所有员工假期列表: 获取当前系统中所有员工及其剩余年假天数的列表。
安装步骤
- 确保已安装 .NET SDK 9.0 或更高版本。
- 确保已安装 Visual Studio Code。
- 在 Visual Studio Code 中安装 Azurite 扩展 (用于模拟 Azure Table Storage)。
- 克隆 GitHub 仓库到本地。
服务器配置
MCP 客户端需要配置服务器的启动信息才能建立连接。根据您选择运行的服务器类型(Stdio 或 SSE),您需要提供以下启动命令及参数。
-
Stdio 服务器启动配置:
- 'server name': 例如 "StdioServer"
- 'command': dotnet
- 'args': run --project Stdio/MCP.Stdio.Server/MCP.Stdio.Server.csproj
-
SSE 服务器启动配置:
- 'server name': 例如 "SseServer"
- 'command': dotnet
- 'args': run --project SSE/MCP.SSE.AppHost/MCP.SSE.AppHost.csproj
- 注意: 运行 SSE 服务器前,您需要在 'SSE/MCP.SSE.AppHost/appsettings.json' 文件中配置 Azure OpenAI 连接字符串 ('openAiConnectionName')。虽然这是客户端(Blazor应用)的需求,但 'AppHost' 项目负责启动整个SSE环境。SSE 服务器端与客户端通过 HTTP/SSE 进行通信,默认可能运行在 'http://localhost:5291'。
在运行服务器前,请先通过 VS Code 的 Azurite 扩展启动 Table Service 模拟器。
基本使用方法
- 启动 Azurite 模拟器: 在 VS Code 中打开命令面板 (Ctrl+Shift+P),选择 'Azurite: Start Table Service'。
- 启动 MCP 服务器: 使用上述相应的 'dotnet run' 命令启动您选择的服务器项目(Stdio 或 SSE)。
- 连接 MCP 客户端: 配置您的 MCP 客户端(如 AI Toolkit 或其他支持 MCP 的代理应用)使用上述相应的启动命令和参数连接到服务器。
- 与服务器交互: LLM 客户端通过 MCP 协议向服务器发送请求。例如,LLM 代理可以调用服务器暴露的工具,如请求 "GetVacationDaysLeftAsync" 工具来查询年假,或调用 "ChargeVacationDaysAsync" 工具来扣除年假。
信息
分类
生产力应用