这是一个使用 .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 传输: 服务器通过标准输入/输出来与客户端进行通信。
安装步骤
- 安装 .NET SDK: 确保您的系统已安装 .NET 9 或更高版本的 SDK。可以从 Microsoft 官方网站 下载。
- 克隆仓库: 使用 Git 克隆此 GitHub 仓库到您的本地机器。
git clone https://github.com/AdelinoBard/ABM_08_McpTimeServer.git - 进入项目目录: 切换到克隆下来的项目文件夹。
cd ABM_08_McpTimeServer/McpTimeServer - 运行服务器: 在项目目录下,使用 .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与计算