这是一个基于 .NET 平台实现的 Model Context Protocol (MCP) 服务器示例项目,旨在演示如何构建一个后端服务,通过标准化的 MCP 工具向 LLM 客户端提供业务能力。该示例聚焦于员工假期管理功能。

项目简介

项目包含一个 MCP 服务器和相应的客户端实现,用于管理和查询员工的剩余年假。服务器通过 MCP 协议对外暴露管理假期相关的“工具”,LLM 客户端可以调用这些工具来执行具体操作。项目提供了基于标准输入/输出 (Stdio) 和服务器发送事件 (SSE) 两种传输协议的实现。

主要功能点

该MCP服务器示例通过其定义的工具提供以下功能:

  • 获取员工剩余年假: 查询特定员工还剩余多少天年假。
  • 扣除员工年假: 为特定员工扣除指定天数的年假,并更新记录。
  • 获取所有员工假期列表: 获取当前系统中所有员工及其剩余年假天数的列表。

安装步骤

  1. 确保已安装 .NET SDK 9.0 或更高版本。
  2. 确保已安装 Visual Studio Code。
  3. 在 Visual Studio Code 中安装 Azurite 扩展 (用于模拟 Azure Table Storage)。
  4. 克隆 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 模拟器。

基本使用方法

  1. 启动 Azurite 模拟器: 在 VS Code 中打开命令面板 (Ctrl+Shift+P),选择 'Azurite: Start Table Service'。
  2. 启动 MCP 服务器: 使用上述相应的 'dotnet run' 命令启动您选择的服务器项目(Stdio 或 SSE)。
  3. 连接 MCP 客户端: 配置您的 MCP 客户端(如 AI Toolkit 或其他支持 MCP 的代理应用)使用上述相应的启动命令和参数连接到服务器。
  4. 与服务器交互: LLM 客户端通过 MCP 协议向服务器发送请求。例如,LLM 代理可以调用服务器暴露的工具,如请求 "GetVacationDaysLeftAsync" 工具来查询年假,或调用 "ChargeVacationDaysAsync" 工具来扣除年假。

信息

分类

生产力应用