时间MCP服务器
用于时间感知和时区操作的多架构Docker镜像
📋 目录
- 概述
- 支持的架构
- 可用标签
- 快速开始
- 配置
- MCP客户端配置
- 网络配置
- 更新
- 故障排除
- 附加资源
- 支持和许可
- 重大变化
😎 请我喝杯咖啡☕︎
您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。
概述
时间MCP服务器通过模型上下文协议提供时间感知和时区操作功能。基于Alpine Linux构建,占用空间最小,安全性最高。
主要特点
✨ 多架构支持 -原生支持x86-64和ARM64\
🚀 多种传输协议 -HTTP、SSE和WebSocket支持\
🔒 设计安全 -基于阿尔卑斯山,攻击面最小\
⚡ 高性能 -ZSTD压缩可实现更快的部署\
🎯 生产就绪 -经过全面测试的稳定版本\
🔧 易于配置 -简单的环境变量设置
支持的架构
| 架构 | 标签前缀 | 状态 |
|---|---|---|
| x86-64 | amd64- |
✅ 稳定 |
| ARM64 | arm64v8- |
✅ 稳定 |
> 💡 多拱形图像会自动为您的系统选择正确的架构。
可用标签
| 标签 | 稳定性 | 描述 | 用例 |
|---|---|---|---|
stable |
⭐⭐⭐ | 最稳定的版本 | 推荐用于生产 |
latest |
⭐⭐⭐ | 最新稳定版本 | 保持最新稳定功能 |
1.0.6 |
⭐⭐⭐ | 特定版本 | 版本固定以保持一致性 |
beta |
⚠️ | Beta版本 | 仅测试 |
系统要求
- Docker引擎: 23.0+
- 猛撞: 最小512MB
- CPU: 单芯足够
> 🔒 关键: 在没有适当的安全措施(反向代理、SSL/TLS、身份验证、防火墙规则)的情况下,不要将此容器直接暴露在互联网上。
快速开始
Docker Compose(推荐)```yaml
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
**部署:**```bash
docker compose up -d
docker compose logs -f time-mcp
Docker命令行界面```bash
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` |实时流媒体|
| **WebSocket** | `ws://host-ip:8060/message` |双向沟通|
启用HTTPS时(`ENABLE_HTTPS=true`),使用TLS端点:
|协议|端点|
|:---------|:---------|
| **安全超文本传输协议** | `https://host-ip:8060/mcp` |
| **上海证券交易所** | `https://host-ip:8060/sse` |
| **WebSocket** | `wss://host-ip:8060/message` |
> ⚠️ **安全警告:** 容器现在默认为HTTP(`ENABLE_HTTPS=false`)以便于本地设置。使用 `ENABLE_HTTPS=true` 用于生产、公共网络或任何不受信任的环境。
>
> ⏱️ **ARM设备:** 在访问端点之前,请允许30-60秒进行初始化。
______________________________________________________________________
## 配置
### 环境变量
|变量|默认值|描述|
|:---------|:-------:|:------------|
| `PORT` | `8060` |内部服务器端口|
| `INTERNAL_PORT` | `38011` |超级网关使用的内部MCP服务器端口|
| `PUID` | `1000` |文件权限的用户ID|
| `PGID` | `1000` |文件权限的组ID|
| `TZ` | `Asia/Dhaka` |集装箱时区(TZ数据库) |
| `NODE_ENV` | `production` |Node.js环境|
| `PROTOCOL` | `SHTTP` |默认传输协议|
| `API_KEY` | *(空)* |启用承载令牌身份验证(`Authorization: Bearer `) |
| `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:` |用于自动生成证书的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 `.
- 本地主机健康检查仍然可以访问活动/准备状态。
### 速率限制和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并设置它们以避免权限问题:```bash
id username
# uid=1000(user) gid=1000(group)
时区示例```yaml
- TZ=Asia/Dhaka # Bangladesh
- TZ=America/New_York # US Eastern
- TZ=Europe/London # UK
- TZ=UTC # Universal Time
______________________________________________________________________
## MCP客户端配置
### 运输支持
|客户端|HTTP|SSE|WebSocket |推荐|
|:-------|:----:|:---:|:---------:|:------------|
| **VS代码(Cline/Roo-Cline)** | ✅ | ✅ | ❌ | HTTP|
| **克劳德桌面版** | ✅ | ✅ | ⚠️\* | HTTP|
| **Claude 命令行界面** | ✅ | ✅ | ⚠️\* | HTTP|
| **Codex CLI** | ✅ | ✅ | ⚠️\* | HTTP|
| **Codeium(风帆)** | ✅ | ✅ | ⚠️\* | HTTP|
| **光标** | ✅ | ✅ | ⚠️\* | HTTP|
> ⚠️ \*WebSocket是实验性的(第1288期)
______________________________________________________________________
### VS代码(Cline/Roo-Cline)
在中配置 `.vscode/settings.json`:```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 "}}'
### **不带API_KEY**```
claude mcp add-json github '{"type":"http","url":"http://localhost:8045/mcp"}'
Codex CLI
在中配置 ~/.codex/config.json:```json
{
"mcpServers": {
"time-mcp": {
"transport": "http",
"url": "http://host-ip:8060/mcp"
}
}
}
______________________________________________________________________
### Codeium(风帆)
在中配置 `.codeium/mcp_settings.json`:```json
{
"mcpServers": {
"time-mcp": {
"transport": "http",
"url": "http://host-ip:8060/mcp"
}
}
}
光标
在中配置 ~/.cursor/mcp.json:```json
{
"mcpServers": {
"time-mcp": {
"transport": "http",
"url": "http://host-ip:8060/mcp"
}
}
}
______________________________________________________________________
### 测试配置
证实 MCP检查员:```bash
npm install -g @modelcontextprotocol/inspector
mcp-inspector http://host-ip:8060/mcp
网络配置
比较
| 网络模式 | 复杂性 | 性能 | 用例 |
|---|---|---|---|
| 桥 | ⭐ 简单 | ⭐⭐⭐ 良好 | 默认,隔离 |
| 主机 | ⭐⭐ 中等 | ⭐⭐⭐⭐ 优秀 | 直接访问主机 |
| MACVLAN | ⭐⭐⭐ 高级 | ⭐⭐⭐⭐ 优秀 | 专用IP |
网桥网络(默认)```yaml
services:
time-mcp:
image: mekayelanik/time-mcp:stable
ports:
- "8060:8060"
**优点:** 容器隔离,易于设置,适用于任何地方
**访问权限:** `http://localhost:8060/mcp`
______________________________________________________________________
### 主机网络(仅限Linux)```yaml
services:
time-mcp:
image: mekayelanik/time-mcp:stable
network_mode: host
优点: 最高性能,无NAT开销,无需端口映射
注意事项: 仅限Linux,共享主机网络命名空间
访问权限: http://localhost:8060/mcp
MACVLAN网络(高级)```yaml
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```bash
docker compose pull
docker compose up -d
docker image prune -f
Docker命令行界面```bash
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的一次性更新```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once \
time-mcp
故障排除
飞行前检查表
- ✅ Docker引擎23.0+
- ✅ 端口8060可用
- ✅ 充足的启动时间(ARM设备)
- ✅ 最新稳定图像
- ✅ 配置正确
常见问题
容器无法启动```bash
Check Docker version
docker --version
Verify port availability
sudo netstat -tulpn | grep 8060
Check logs
docker logs time-mcp
#### 权限错误```bash
# Get your IDs
id $USER
# Update configuration with correct PUID/PGID
# Fix volume permissions if needed
sudo chown -R 1000:1000 /path/to/volume
客户端无法连接```bash
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卡)
### 调试信息
报告问题时,包括:```bash
# System info
docker --version && uname -a
# Container logs
docker logs time-mcp --tail 200 > logs.txt
# Container config
docker inspect time-mcp > inspect.json
附加资源
文档
- 📚 时间官方文件
- 📦 NPM包
- 🔧 MCP检查员
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
⬆ 返回顶部
