Chronos MCP服务器
实现模型上下文协议(MCP)的时间相关服务器。该服务器通过一个简单的MCP接口提供时区感知的日期和时间信息。
概述
Chronos MCP服务器是用构建的。NET Core使用模型上下文协议C#SDK().它提供了访问不同时区的日期和时间信息的工具。该服务器设计为轻量级,并演示了如何创建具有实用功能和正确错误处理的自定义MCP服务器。它可以直接部署在机器上,也可以作为Docker容器部署。
特性
- 获取任何支持时区的当前日期和时间
- 通过apps.json和环境变量进行可选的默认时区配置
- 对无效时区请求和缺少默认时区进行适当的错误处理
- 使用结果模式处理功能错误
入门指南
先决条件
- .NET 10 SDK(用于本地开发或.NET工具安装)
- Docker(用于容器部署)
构建说明(用于开发)
如果要从源代码构建项目:
- 克隆此存储库:
git clone https://github.com/aadversteeg/chronos-mcp-server.git- 导航到项目根目录:
cd chronos-mcp-server- 使用以下方式构建项目:
dotnet build src/chronos.sln- 运行测试:
dotnet test src/chronos.slnDocker支持
DockerHub镜像
Chronos MCP服务器可在DockerHub上获得,网址为 aadversteeg/chronos-mcp-server.
# Pull the latest version
docker pull aadversteeg/chronos-mcp-server:latest
# Or pull a specific version
docker pull aadversteeg/chronos-mcp-server:0.0.1手动Docker构建
如果你需要自己构建Docker镜像:
# Navigate to the repository root
cd chronos-mcp-server
# Build the Docker image
docker build -f src/Core.Infrastructure.McpServer/Dockerfile -t chronos-mcp-server:latest src/
# Run the locally built image (with optional DefaultTimeZoneId)
docker run -d --name chronos-mcp -e "DefaultTimeZoneId=Europe/Amsterdam" chronos-mcp-server:latest使用GitHub操作自动构建
此存储库包含一个GitHub Actions工作流,当创建版本标记时,该工作流会自动构建Docker映像并将其推送到DockerHub。
要触发新的构建,请执行以下操作:
- 创建并推送具有语义版本的标签:
git tag 1.0.0
git push origin 1.0.0- 工作流将自动构建并推送带有标签的Docker镜像:
- aadversteeg/chronos-mcp-server:latest - aadversteeg/chronos-mcp-server:1.0.0
.NET工具
Chronos MCP服务器可作为。NET全局工具。
安装
dotnet tool install --global Ave.McpServer.Chronos跑步
ave-mcpserver-chronos一次性执行(无需永久安装)
和。NET 10 SDK,您可以使用以下命令运行该工具,而无需全局安装 dotnet tool exec:
dotnet tool exec -y ave.mcpserver.chronos这 -y 标志自动接受提示。该工具在本地缓存,但不会添加到PATH中。
MCP协议使用
客户端集成
要从您的应用程序连接到Chronos MCP服务器:
- 使用模型上下文协议C#SDK或任何兼容MCP的客户端
- 配置您的客户端以连接到服务器的端点
- 调用下面描述的可用工具
可用工具
get_current日期和时间
获取指定时区或默认时区(如果已配置)中的当前日期和时间。
参数:
timezoneId(如果配置了DefaultTimeZoneId,则可选):时区标识符(例如,“美国/纽约”、“东部标准时间”)。如果未配置DefaultTimeZoneId,则需要此参数。
请求示例:
{
"name": "get_current_date_and_time",
"parameters": {
"timezoneId": "Europe/London"
}
}示例响应:
{
"date": "2023-12-25",
"time": "12:00:00",
"timezone": "Europe/London"
}get_default_timezone_id
获取为服务器配置的默认时区标识符。如果未配置默认时区,则返回错误。
请求示例:
{
"name": "get_default_timezone_id",
"parameters": {}
}示例响应(如果已配置):
Europe/Amsterdam错误响应示例(如果未配置):
{
"error": {
"message": "DefaultTimeZoneId is not set.",
"code": "NoDefaultTimeZoneId"
}
}配置
默认时区Id
这 DefaultTimeZoneId 设置决定了当没有请求特定时区时使用哪个时区。此值必须是操作系统识别的有效时区标识符。此设置是可选的-如果没有提供,服务器仍将运行,但每个请求都需要一个时区ID参数。
您可以通过两种方式设置DefaultTimeZoneId:
- 应用程序参数 文件(用于本地部署):
{
"DefaultTimeZoneId": "America/New_York"
}- 环境变量 (适用于集装箱化部署):
# When running the Docker container
docker run -e "DefaultTimeZoneId=Europe/Amsterdam" aadversteeg/chronos-mcp-server:latest有效的时区标识符包括:
- 标准IANA时区名称(例如,“美洲/纽约”、“欧洲/伦敦”、“亚洲/东京”)
- Windows时区ID(例如,“东部标准时间”、“西欧标准时间”)
如果未指定DefaultTimeZoneId设置,则不会使用默认时区,并且请求必须明确提供时区ID参数。
配置克劳德桌面/Claude代码
将服务器配置添加到 mcpServers 配置文件中的部分。
使用。NET工具
要求。NET 10 SDK。这种方法在首次使用时自动下载工具,并在后续运行时更新到最新版本。
"chronos": {
"command": "dotnet",
"args": [
"tool",
"exec",
"-y",
"ave.mcpserver.chronos"
],
"env": {
"DefaultTimeZoneId": "Europe/Amsterdam"
}
}使用全局安装
要求。NET 10 SDK。安装一次工具,然后直接使用。
dotnet tool install --global Ave.McpServer.Chronos"chronos": {
"command": "ave-mcpserver-chronos",
"env": {
"DefaultTimeZoneId": "Europe/Amsterdam"
}
}要更新,请执行以下操作: dotnet tool update --global Ave.McpServer.Chronos
使用Docker
不需要。NET 10 SDK。
"chronos": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "DefaultTimeZoneId=Europe/Amsterdam",
"aadversteeg/chronos-mcp-server:latest"
]
}许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
