这是一个使用 .NET 构建的 Model Context Protocol (MCP) 服务器示例,旨在演示如何创建并集成一个简单的 MCP 服务来扩展大型语言模型 (LLM) 的能力。该服务专注于提供准确的时间信息。

项目简介

该仓库包含一个功能完整的 MCP 服务器实现,它通过 MCP 协议向连接的 LLM 客户端提供两个工具:获取当前世界时和获取指定时区的时间。项目结构清晰,使用了官方的 .NET SDK 来简化 MCP 服务器的构建过程,并通过标准输入输出 (Stdio) 作为传输协议。

主要功能点

  • 提供当前时间: 通过 MCP 工具接口,LLM 客户端可以调用该服务获取当前的精确时间(世界时)。
  • 提供指定时区时间: 允许 LLM 客户端指定一个时区名称(如 "Pacific Standard Time" 或 "Asia/Shanghai"),服务将返回对应时区的当前时间。
  • 基于 MCP 协议: 实现遵循 Model Context Protocol 规范,确保与兼容 MCP 的 LLM 客户端进行标准化通信。
  • 使用 .NET SDK: 利用官方 C# SDK 简化服务器端开发。
  • 支持 Stdio 传输: 服务器通过标准输入/输出来与客户端进行通信。

安装步骤

  1. 安装 .NET SDK: 确保您的系统已安装 .NET 9 或更高版本的 SDK。可以从 Microsoft 官方网站 下载。
  2. 克隆仓库: 使用 Git 克隆此 GitHub 仓库到您的本地机器。
    git clone https://github.com/AdelinoBard/ABM_08_McpTimeServer.git
  3. 进入项目目录: 切换到克隆下来的项目文件夹。
    cd ABM_08_McpTimeServer/McpTimeServer
  4. 运行服务器: 在项目目录下,使用 .NET CLI 运行服务器。服务器将通过 Stdio 启动并等待 MCP 客户端连接。
    dotnet run

服务器配置 (面向 MCP 客户端)

MCP 服务器通常由 MCP 客户端(如支持 MCP 的 IDE 或应用程序)启动和管理。客户端需要在其配置文件中指定如何启动这个服务器。以下是配置此时间服务作为客户端工具的示例信息:

  • 服务器名称 (Server Name): 用户自定义,用于在客户端中标识此服务,例如 'timeServer'。
  • 启动命令 (Command): 启动服务器所需的可执行文件或命令,对于此 .NET 应用,通常是 'dotnet'。
  • 命令参数 (Args): 传递给启动命令的参数。对于此项目,是运行指定项目的命令及其路径。例如 '["run", "--project", "path/to/your/McpTimeServer"]'。您需要将 '"path/to/your/McpTimeServer"' 替换为您实际克隆的项目文件 '.csproj' 所在的路径。

MCP 客户端会使用这些信息来启动一个进程,并通过标准输入输出与服务器建立连接。

基本使用方法

服务器启动后,它会监听来自客户端的 MCP 请求。LLM 客户端(例如 Cursor IDE 或其他支持 MCP 的应用)可以通过发送 'tool_call' 请求来调用服务器提供的工具。

  • 调用获取当前时间工具: 客户端发送请求调用名为 'GetCurrentTime' 的工具。
  • 调用获取指定时区时间工具: 客户端发送请求调用名为 'GetTimeInTimezone' 的工具,并在参数中提供时区名称字符串(例如 '"Asia/Shanghai"')。

服务器接收到请求后,会执行相应的 C# 方法,并将结果通过 MCP 协议返回给客户端。

信息

分类

AI与计算