时间服务服务器

Time MCP Server 是一个基于 Docker 的时间感知和时区操作服务,提供多架构支持和多种传输协议。

  • by MekayelAnik
  • Shell
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MekayelAnik/time-mcp-docker

使用说明

时间MCP服务器

用于时间感知和时区操作的多架构Docker镜像


📋 目录


😎 给我买杯咖啡☕︎

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。

概述

时间MCP服务器通过模型上下文协议提供时间感知和时区操作功能。基于Alpine Linux构建,占用空间最小,安全性最高。

主要特点

✨ 多架构支持 -原生支持x86-64和ARM64
🚀 多种传输协议 -通过mcp代理流式传输HTTP和SSE
🔒 设计安全 -基于阿尔卑斯山,攻击面最小
⚡ 高性能 -ZSTD压缩可实现更快的部署
🎯 生产就绪 -经过全面测试的稳定版本
🔧 易于配置 -简单的环境变量设置


支持的体系结构

架构 标签前缀 状态
x86-64 amd64-<version> ✅ 稳定
ARM64 arm64v8-<version> ✅ 稳定

💡 多拱形图像会自动为您的系统选择正确的架构。


可用标签

标签 稳定性 描述 用例
stable ⭐⭐⭐ 最稳定的版本 推荐用于生产
latest ⭐⭐⭐ 最新稳定版本 保持最新稳定功能
1.0.6 ⭐⭐⭐ 特定版本 版本固定以保持一致性
beta ⚠️ Beta版本 仅测试

系统要求

  • Docker引擎: 23.0+
  • 猛撞: 最小512MB
  • CPU: 单芯足够

🔒 关键: 在没有适当的安全措施(反向代理、SSL/TLS、身份验证、防火墙规则)的情况下,不要将此容器直接暴露在互联网上。


快速开始

Docker Compose(推荐)

services:
  time-mcp:
    image: mekayelanik/time-mcp:stable
    container_name: time-mcp
    restart: unless-stopped
    ports:
      - "8060:8060"
    environment:
      - PORT=8060
      - INTERNAL_PORT=38011
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Dhaka
      - NODE_ENV=production
      - PROTOCOL=HTTP
      - ENABLE_HTTPS=false
      - HTTP_VERSION_MODE=auto
      # Optional: require Bearer token auth at HAProxy layer
      # - API_KEY=replace-with-strong-secret
    hostname: time-mcp
    domainname: local

部署:

docker compose up -d
docker compose logs -f time-mcp

Docker命令行界面

docker run -d \
  --name=time-mcp \
  --restart=unless-stopped \
  -p 8060:8060 \
  -e PORT=8060 \
  -e INTERNAL_PORT=38011 \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Dhaka \
  -e NODE_ENV=production \
  -e PROTOCOL=HTTP \
  -e ENABLE_HTTPS=false \
  -e HTTP_VERSION_MODE=auto \
  mekayelanik/time-mcp:stable

访问端点

协议 端点 用例
超文本传输协议 http://host-ip:8060/mcp 最佳兼容性(推荐)
上海证券交易所 http://host-ip:8060/sse 实时流媒体

启用HTTPS时(ENABLE_HTTPS=true),使用TLS端点:

协议 端点
安全超文本传输协议 https://host-ip:8060/mcp
上海证券交易所 https://host-ip:8060/sse

⚠️ 安全警告: 容器现在默认为HTTP(ENABLE_HTTPS=false)以便于本地设置。使用 ENABLE_HTTPS=true 用于生产、公共网络或任何不受信任的环境。

⏱️ ARM设备: 在访问端点之前,请允许30-60秒进行初始化。


配置

环境变量

变量 默认值 描述
PORT 8060 内部服务器端口
INTERNAL_PORT 38011 MCP代理使用的内部MCP服务器端口
PUID 1000 文件权限的用户ID
PGID 1000 文件权限的组ID
TZ Asia/Dhaka 集装箱时区(TZ数据库)
NODE_ENV production Node.js环境
PROTOCOL SHTTP 默认传输协议
API_KEY (空) 启用承载令牌身份验证(Authorization: Bearer <API_KEY>)
CORS (空) 逗号分隔的CORS源,支持 *
ENABLE_HTTPS false 在HAProxy中启用TLS终止
TLS_CERT_PATH /etc/haproxy/certs/server.crt TLS证书路径
TLS_KEY_PATH /etc/haproxy/certs/server.key TLS私钥路径
TLS_PEM_PATH /etc/haproxy/certs/server.pem HAProxy使用的组合PEM文件
TLS_CN localhost CN用于自动生成证书
TLS_SAN DNS:<TLS_CN> 用于自动生成证书的SAN
TLS_DAYS 365 自动生成的证书有效期
TLS_MIN_VERSION TLSv1.3 最低TLS协议(TLSv1.2 或 TLSv1.3)
HTTP_VERSION_MODE auto auto, all, h1, h2, h3, h1+h2
RATE_LIMIT 0 每台设备的最大请求数 RATE_LIMIT_PERIOD 按IP(0 =禁用)
RATE_LIMIT_PERIOD 10s 用于速率限制的滑动窗口(例如。, 10s, 1m, 1h)
MAX_CONNECTIONS_PER_IP 0 每个IP的最大并发连接数(0 =禁用)
IP_ALLOWLIST (空) 允许逗号分隔的IPs/CIDR(阻止所有其他IP/CIDR)
IP_BLOCKLIST (空) 要阻止的逗号分隔IP/CIDR
DEBUG_MODE (空) 设置为真时启用调试保持模式

HTTPS和HTTP版本说明

  • 如果 ENABLE_HTTPS=true 如果缺少证书文件,容器会自动生成自签名证书。
  • 如果 TLS_CERT_PATH 和 TLS_KEY_PATH 存在,它们被合并到 TLS_PEM_PATH 并直接使用。
  • HTTP_VERSION_MODE=h3 (或 auto)仅当HAProxy构建包含QUIC时才启用HTTP/3;否则,它会安全地回落。

API密钥验证说明

  • 集 API_KEY 以在反向代理级别强制执行身份验证。
  • 预期的标题格式: Authorization: Bearer <API_KEY>.
  • 本地主机健康检查仍然可以访问活动/准备状态。

速率限制和IP访问控制

  • 速率限制: 集 RATE_LIMIT=100 允许每100个请求 RATE_LIMIT_PERIOD (默认值 10s)每个IP。超过限制将返回HTTP 429 Retry-After 头球
  • 连接限制: 集 MAX_CONNECTIONS_PER_IP=50 限制每个IP的并发连接。超过此值将返回HTTP 429。
  • IP阻止列表: 集 IP_BLOCKLIST=192.0.2.0/24,198.51.100.5 以阻止特定IP/CIDR。被阻止的IP接收HTTP 403。
  • IP地址列表: 集 IP_ALLOWLIST=10.0.0.0/8,192.168.1.0/24 只允许列出的IP/CIDR。所有其他人都接收HTTP 403。始终允许本地主机。
  • 所有功能默认为禁用。根据需要进行组合——在分配列表之前检查块列表。

用户和组ID

找到您的ID并设置它们以避免权限问题:

id username
# uid=1000(user) gid=1000(group)

时区示例

- TZ=Asia/Dhaka        # Bangladesh
- TZ=America/New_York  # US Eastern
- TZ=Europe/London     # UK
- TZ=UTC               # Universal Time


内存和并发调优

此图像嵌入 mcp代理 (sparfenyuk/mcp代理)作为stdio↔HTTP网桥。按键旋钮:

  • MCP_PROXY_STATELESS=false (默认):一个stdio后端子项在多个平台上共享 所有 MCP会话,JSON RPC id多路复用。最小的内存,没有每次请求的分叉成本。
  • MCP_PROXY_STATELESS=true:按请求传输实例。仅在需要完全会话隔离时使用——内存会随着并发性而增长。
  • HAPROXY_FRONTEND_MAXCONN / HAPROXY_SERVER_MAXCONN:HAProxy级别上限。绑定爆裂,这样后端就不会被淹没。对于单个副本,默认值64/16是合理的。

迁移的根本原因:supergateway 3.4.3无状态模式(默认模式)每次POST都会生成一个子stdio进程,但从未收获过它(supercorp ai/supergeway#108)。mcp代理有状态默认在会话之间共享一个stdio后端,并在我们的车队测试中将RSS减少了4.6倍。

MCP客户端配置

运输支持

客户端 HTTP SSE 推荐
VS代码(Cline/Roo-Cline) ✅ ✅
克劳德桌面版 ✅ ✅
Claude CLI ✅ ✅
Codex CLI ✅ ✅
Codeium(风帆) ✅ ✅
光标 ✅ ✅

VS代码(Cline/Roo-Cline)

在中配置 .vscode/settings.json:

{
  "mcp.servers": {
    "time-mcp": {
      "url": "http://host-ip:8060/mcp",
      "transport": "http"
    }
  }
}

克劳德桌面应用程序/克劳德代码

配置:

带API_KEY

claude mcp add-json github '{"type":"http","url":"http://localhost:8045/mcp","headers":{"Authorization":"Bearer <YOUR_API_KEY>"}}'

不带API_KEY

claude mcp add-json github '{"type":"http","url":"http://localhost:8045/mcp"}'

Codex CLI

在中配置 ~/.codex/config.json:

{
  "mcpServers": {
    "time-mcp": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

Codeium(风帆)

在中配置 .codeium/mcp_settings.json:

{
  "mcpServers": {
    "time-mcp": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

光标

在中配置 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "time-mcp": {
      "transport": "http",
      "url": "http://host-ip:8060/mcp"
    }
  }
}

测试配置

证实 MCP检查员:

npm install -g @modelcontextprotocol/inspector
mcp-inspector http://host-ip:8060/mcp

网络配置

比较

网络模式 复杂性 性能 用例
桥 ⭐ 简单 ⭐⭐⭐ 良好 默认,隔离
主机 ⭐⭐ 中等 ⭐⭐⭐⭐ 优秀 直接访问主机
MACVLAN ⭐⭐⭐ 高级 ⭐⭐⭐⭐ 优秀 专用IP

网桥网络(默认)

services:
  time-mcp:
    image: mekayelanik/time-mcp:stable
    ports:
      - "8060:8060"

优点: 容器隔离,易于设置,适用于任何地方 访问权限: http://localhost:8060/mcp


主机网络(仅限Linux)

services:
  time-mcp:
    image: mekayelanik/time-mcp:stable
    network_mode: host

优点: 最高性能,无NAT开销,无需端口映射 注意事项: 仅限Linux,共享主机网络命名空间 访问权限: http://localhost:8060/mcp


MACVLAN网络(高级)

services:
  time-mcp:
    image: mekayelanik/time-mcp:stable
    mac_address: "AB:BC:CD:DE:EF:01"
    networks:
      macvlan-net:
        ipv4_address: 192.168.1.100

networks:
  macvlan-net:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.1.0/24
          gateway: 192.168.1.1

优点: 专用IP,直接局域网接入 注意事项: 仅限Linux,需要额外设置 访问权限: http://192.168.1.100:8060/mcp


更新

Docker Compose

docker compose pull
docker compose up -d
docker image prune -f

Docker命令行界面

docker pull mekayelanik/time-mcp:stable
docker stop time-mcp && docker rm time-mcp
# Run your original docker run command
docker image prune -f

Watchtower的一次性更新

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --run-once \
  time-mcp

故障排除

飞行前检查表

  • ✅ Docker引擎23.0+
  • ✅ 端口8060可用
  • ✅ 充足的启动时间(ARM设备)
  • ✅ 最新稳定图像
  • ✅ 配置正确

常见问题

容器无法启动

# Check Docker version
docker --version

# Verify port availability
sudo netstat -tulpn | grep 8060

# Check logs
docker logs time-mcp

权限错误

# Get your IDs
id $USER

# Update configuration with correct PUID/PGID
# Fix volume permissions if needed
sudo chown -R 1000:1000 /path/to/volume

客户端无法连接

# Test connectivity
curl http://localhost:8060/mcp
curl http://host-ip:8060/mcp
curl -k https://localhost:8060/mcp
curl -k https://host-ip:8060/mcp

# Check firewall
sudo ufw status

# Verify container
docker inspect time-mcp | grep IPAddress

ARM性能缓慢

  • 启动后等待30-60秒
  • 监视器: docker logs -f time-mcp
  • 检查资源: docker stats time-mcp
  • 使用更快的存储(SSD与SD卡)

调试信息

报告问题时,包括:

# System info
docker --version && uname -a

# Container logs
docker logs time-mcp --tail 200 > logs.txt

# Container config
docker inspect time-mcp > inspect.json

其他资源

文档

Docker资源

监控


😎 给我买杯咖啡☕︎

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。

支持和许可

获取帮助

Docker镜像问题:

时间MCP问题:

贡献

我们欢迎捐款:

  1. 通过GitHub Issues报告错误
  2. 建议功能
  3. 改进文档
  4. 测试版发布

许可证

GPL许可证。看 许可证 了解详情。

时间MCP服务器有自己的许可证-请参阅 主NPM回购.


重大变化

  • Initial Release: Full CI/CD pipeline with HAProxy, HTTPS/TLS, QUIC/HTTP3, API key auth

⬆ 返回顶部