时间服务服务器

Chronos MCP Server 是一个基于 Model Context Protocol (MCP) 的时间服务器,提供时区感知的日期和时间信息。

  • by aadversteeg
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 aadversteeg/chronos-mcp-server

使用说明

Chronos MCP服务器

实现模型上下文协议(MCP)的时间相关服务器。该服务器通过一个简单的MCP接口提供时区感知的日期和时间信息。

概述

Chronos MCP服务器是用构建的。NET Core使用模型上下文协议C#SDK(github/modelcontextprotocol/sharp-sdk).它提供了访问不同时区的日期和时间信息的工具。该服务器设计为轻量级,并演示了如何创建具有实用功能和正确错误处理的自定义MCP服务器。它可以直接部署在机器上,也可以作为Docker容器部署。

特性

  • 获取任何支持时区的当前日期和时间
  • 通过apps.json和环境变量进行可选的默认时区配置
  • 对无效时区请求和缺少默认时区进行适当的错误处理
  • 使用结果模式处理功能错误

入门指南

先决条件

  • .NET 10 SDK(用于本地开发或.NET工具安装)
  • Docker(用于容器部署)

构建说明(用于开发)

如果要从源代码构建项目:

  1. 克隆此存储库:

    git clone https://github.com/aadversteeg/chronos-mcp-server.git
    
  2. 导航到项目根目录:

    cd chronos-mcp-server
    
  3. 使用以下方式构建项目:

    dotnet build src/chronos.sln
    
  4. 运行测试:

    dotnet test src/chronos.sln
    

Docker支持

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。

要触发新的构建,请执行以下操作:

  1. 创建并推送具有语义版本的标签:

    git tag 1.0.0
    git push origin 1.0.0
    
  2. 工作流将自动构建并推送带有标签的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服务器:

  1. 使用模型上下文协议C#SDK或任何兼容MCP的客户端
  2. 配置您的客户端以连接到服务器的端点
  3. 调用下面描述的可用工具

可用工具

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:

  1. 应用程序参数 文件(用于本地部署):
{
  "DefaultTimeZoneId": "America/New_York"
}
  1. 环境变量 (适用于集装箱化部署):
# 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许可证获得许可-请参阅 许可证 文件以获取详细信息。