项目简介
Chronos MCP Server 是一个基于 Model Context Protocol (MCP) 构建的轻量级时间服务后端,使用 .NET Core 开发。它通过 MCP 协议向客户端提供标准化的接口,用于查询不同时区的当前日期和时间。该服务器旨在演示如何构建具有实用功能的自定义 MCP 服务器。
主要功能点
- 获取当前日期和时间:支持查询任意 IANA 或 Windows 系统支持的时区的当前日期和时间。
- 默认时区配置:允许通过 'appsettings.json' 文件或环境变量配置服务器的默认时区。
- 错误处理:能够处理无效时区请求,并返回清晰的错误信息。
安装步骤
-
环境准备:
- .NET 环境:如果本地部署,需要安装 .NET 9.0 SDK。
- Docker:如果使用 Docker 部署,需要安装 Docker。
-
获取代码:
- 克隆 GitHub 仓库到本地:
git clone https://github.com/aadversteeg/chronos-mcp-server.git cd chronos-mcp-server
- 克隆 GitHub 仓库到本地:
-
构建(可选,如果使用本地部署):
- 在项目根目录下,使用 .NET CLI 构建项目:
dotnet build src/chronos.sln
- 在项目根目录下,使用 .NET CLI 构建项目:
-
运行服务器:
- 本地运行:
dotnet run --project src/Core.Infrastructure.McpServer/Core.Infrastructure.McpServer.csproj - Docker 运行:
- 拉取 Docker 镜像 (推荐):
docker pull aadversteeg/chronos-mcp-server:latest docker run -d --name chronos-mcp -e "DefaultTimeZoneId=UTC" aadversteeg/chronos-mcp-server:latest - 或者,本地构建 Docker 镜像:
docker build -f src/Core.Infrastructure.McpServer/Dockerfile -t chronos-mcp-server:latest src/ docker run -d --name chronos-mcp -e "DefaultTimeZoneId=UTC" chronos-mcp-server:latest
- 拉取 Docker 镜像 (推荐):
- 本地运行:
服务器配置
MCP 客户端需要配置服务器的启动命令才能连接 Chronos MCP Server。以下是针对不同部署方式的 Claude Desktop 客户端配置示例:
1. 本地安装配置
假设您已将项目 DLL 文件 'Core.Infrastructure.McpServer.dll' 构建在 'YOUR_PATH_TO_DLL' 目录。在 Claude Desktop 的 MCP 服务器配置中,添加以下 JSON 配置:
"chronos": { "command": "dotnet", "args": [ "YOUR_PATH_TO_DLL\\Core.Infrastructure.McpServer.dll" // 将YOUR_PATH_TO_DLL替换为实际的DLL路径 ], "env": { "DefaultTimeZoneId": "Europe/Amsterdam" // 可选,设置默认时区,默认为 UTC } }
2. Docker 容器配置
如果使用 Docker 容器运行 Chronos MCP Server,则在 Claude Desktop 中添加以下 JSON 配置:
"chronos": { "command": "docker", "args": [ "run", "--rm", "-i", "-e", "DefaultTimeZoneId=Europe/Amsterdam", // 可选,设置默认时区,默认为 UTC "aadversteeg/chronos-mcp-server:latest" ] }
配置说明:
- 'server name':服务器名称,例如 "chronos",用于在客户端中标识和调用。
- 'command':启动服务器的命令,本地部署为 'dotnet',Docker 部署为 'docker'。
- 'args':命令参数,
- 本地部署:指定 'dotnet' 命令运行的 DLL 文件路径。
- Docker 部署:包含 'docker run' 命令及其参数,例如容器运行时参数 '--rm'(容器退出后自动删除),'-i'(保持STDIN开放),'-e "DefaultTimeZoneId=..."'(设置环境变量)以及 Docker 镜像名称 'aadversteeg/chronos-mcp-server:latest'。
- 'env' (可选):环境变量配置,例如 'DefaultTimeZoneId' 用于设置服务器默认时区。
基本使用方法
配置完成后,在 MCP 客户端中,您可以使用以下工具与 Chronos MCP Server 交互:
-
'get_current_date_and_time': 获取指定时区或默认时区的当前日期和时间。
- 可选参数 'timezoneId':时区标识符,例如 "America/New_York" 或 "Europe/London"。
- 如果不提供 'timezoneId',则返回服务器默认时区的日期和时间。
-
'get_default_timezone_id': 获取服务器配置的默认时区标识符。
- 无需参数。
客户端通过 MCP 协议发送 JSON-RPC 请求调用这些工具,服务器返回 JSON-RPC 响应。具体请求和响应格式请参考仓库 README.md 中的 "MCP Protocol Usage" 章节。
信息
分类
网页与API