使用说明
时间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 429Retry-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撰写最佳实践
- 🌐 Docker网络
- 🛡️ Docker安全
监控
- 📊 Diun-更新通知器
- ⚡ 瞭望塔
😎 给我买杯咖啡☕︎
您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。
支持和许可
获取帮助
Docker镜像问题:
- github: 时间mcp docker/问题
时间MCP问题:
- github: 尼古拉斯·格里芬/时代媒体/issues
- 网站: npmjs.com/package/time-mcp
贡献
我们欢迎捐款:
- 通过GitHub Issues报告错误
- 建议功能
- 改进文档
- 测试版发布
许可证
GPL许可证。看 许可证 了解详情。
时间MCP服务器有自己的许可证-请参阅 主NPM回购.
重大变化
- Initial Release: Full CI/CD pipeline with HAProxy, HTTPS/TLS, QUIC/HTTP3, API key auth