时间服务器

一个用于时间跟踪和时区转换的模型上下文协议(MCP)服务器,提供当前时间和时区转换功能。

  • by samwang0723
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 samwang0723/mcp-time

使用说明

MCP时间服务器

用于时间跟踪和时区转换实用程序的模型上下文协议(MCP)服务器。该服务器为AI助手提供了在任何时区获取当前时间并在不同时区之间转换时间的能力。

特性

  • 当前时间:获取任何IANA时区的当前时间
  • 时间转换:将时间从一个时区转换为另一个时区
  • 夏令时支持:自动检测和处理DST
  • 快速HTTP服务器:带有运行状况检查的REST API
  • Docker支持:已准备好进行集装箱化部署
  • TypeScript:完全支持TypeScript,具有类型安全性

先决条件

  • Node.js 20或更高版本
  • npm或纱线
  • Docker(可选,用于容器化部署)

安装

地方发展

  1. 克隆存储库:
git clone <repository-url>
cd mcp-time
  1. 安装依赖项:
npm install
  1. 创建环境文件(可选):
cp .env.example .env
# Edit .env with your configuration

环境变量

  • PORT:服务器端口(默认值:3000)
  • NODE_ENV:环境模式(开发/生产)
  • TZ:服务器的时区(默认值:亚洲/香港)

用法

发展

使用热重载启动开发服务器:

npm run dev

生产

构建并启动生产服务器:

npm run build
npm start

可用脚本

  • npm run build -将TypeScript构建为JavaScript
  • npm run dev -使用热重新加载启动开发服务器
  • npm start -启动生产服务器
  • npm run lint -运行ESLint
  • npm run lint:fix -自动修复ESLint问题
  • npm test -运行测试

MCP工具

服务器提供两个MCP工具:

1.get_current_time

获取指定时区的当前时间。

参数:

  • timezone (string):IANA时区名称(例如,“美国/纽约”、“欧洲/伦敦”)

示例响应:

{
  "timezone": "America/New_York",
  "datetime": "2024-01-15T10:30:00-05:00",
  "is_dst": false
}

2.转换时间

将时间从一个时区转换为另一个时区。

参数:

  • source_timezone (string):源IANA时区名称
  • time (字符串):24小时格式的时间(HH:MM)
  • target_timezone (string):目标IANA时区名称

示例响应:

{
  "source": {
    "timezone": "America/New_York",
    "datetime": "2024-01-15T10:30:00-05:00",
    "is_dst": false
  },
  "target": {
    "timezone": "Asia/Tokyo",
    "datetime": "2024-01-16T00:30:00+09:00",
    "is_dst": false
  },
  "time_difference": "+14h"
}

API终点

健康检查

GET /health

返回服务器状态和基本信息。

MCP端点

POST /mcp
GET /mcp (for SSE notifications)
DELETE /mcp (for session termination)

主MCP通信端点。需要 mcp-session-id 有状态连接的标头。

Docker部署

构建Docker镜像

docker build -t mcp/time .

运行容器

docker run -p 3002:3002 -e PORT=3002 mcp/time

Docker Compose

version: '3.8'
services:
  mcp-time-server:
    build: .
    ports:
      - "3002:3002"
    environment:
      - PORT=3002
      - NODE_ENV=production
      - TZ=Asia/Hong_Kong
    restart: unless-stopped

支持的时区

此服务器支持所有IANA时区名称。常见的例子包括:

美洲:

  • America/New_York (东部时间)
  • America/Chicago (中部时间)
  • America/Denver (山地时间)
  • America/Los_Angeles (太平洋时间)
  • America/Sao_Paulo (巴西)

欧洲:

  • Europe/London (GMT/BST)
  • Europe/Paris (CET/CEST)
  • Europe/Berlin (CET/CEST)
  • Europe/Moscow (MSK)

亚洲:

  • Asia/Tokyo (JST)
  • Asia/Shanghai (CST)
  • Asia/Hong_Kong (香港电讯)
  • Asia/Singapore (SGT)
  • Asia/Kolkata (IST)

其他:

  • UTC (协调世界时)
  • Australia/Sydney (AEDT/AEST)

错误处理

该服务器包括全面的错误处理功能,用于:

  • 时区名称无效
  • 时间格式无效
  • 网络连接问题
  • 会话管理错误

贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/new-feature
  3. 进行更改并添加测试
  4. 运行linting: npm run lint:fix
  5. 提交您的更改: git commit -am 'Add new feature'
  6. 推到分支: git push origin feature/new-feature
  7. 提交拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

支持

对于问题和疑问:

  1. 检查 问题 章节
  2. 创建包含详细信息的新问题
  3. 包括错误日志和系统信息

建筑

服务器由以下组件构建:

  • Express.js:HTTP服务器框架
  • MCP-SDK:模型上下文协议实现
  • 日期-fns:日期操作和格式化
  • 萨德:架构验证
  • TypeScript:类型安全和开发经验

服务器使用会话ID维护有状态的连接,并通过服务器发送事件(SSE)提供同步工具调用和异步通知。