时间控制协议服务器

一个提供时间和时区转换工具的简单模型控制协议(MCP)服务器。

  • by chew-z
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 chew-z/TimeMCP

使用说明

TimeMCP

一个简单的模型控制协议(MCP)服务器,提供时间和时区转换工具。

特性

服务器提供以下工具:

1. get_current_time

获取特定时区或系统时区的当前时间。

论据:

  • timezone (string,可选):获取当前时间的时区。如果没有提供,则使用系统时区。

示例响应:

Current time in Europe/Warsaw: 2025-04-09 15:30:45

2. convert_time

在不同时区之间转换时间。

论据:

  • source_timezone (字符串,可选):源时区。如果未提供,则默认为系统时区。
  • time (字符串,可选):24小时格式的时间(HH:MM)。如果未提供,则默认为当前时间。
  • target_timezone (string,必填):将时间转换为的目标时区。

示例响应:

Time conversion: 15:30 in Europe/Warsaw → 09:30 in America/New_York

用法

构建

go build -o ./bin/mcp-time .

添加到claude_desktop_config json

{                                                                                 "mcpServers": {
  "time": {
        "command": "/Path/To/Your/Bin/mcp-time"
      }
  }
}

与MCP兼容的客户端一起使用

服务器实现了模型控制协议,这意味着它可以与任何兼容MCP的客户端一起使用。客户将能够:

  1. 发现可用的工具
  2. 使用适当的参数调用工具
  3. 接收格式化的响应

依赖项

  • github.com/mark3labs/mcp-go:模型控制协议的实施
  • github.com/araddon/dateparse:灵活的日期解析库

支持的时区

服务器支持所有IANA时区数据库条目,如:

  • Europe/Warsaw
  • America/New_York
  • Asia/Tokyo
  • Australia/Sydney
  • Africa/Cairo
  • 等等

例子

获取东京当前时间

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_current_time",
    "arguments": {
      "timezone": "Asia/Tokyo"
    }
  }
}

转换时间

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "convert_time",
    "arguments": {
      "source_timezone": "Europe/Warsaw",
      "time": "14:30",
      "target_timezone": "America/Los_Angeles"
    }
  }
}

HTTP传输和CORS

  • 运行HTTP传输: go run . --transport=http [--auth-enabled]
  • 健康: GET /health,功能: GET /capabilities,MCP: POST {TIME_HTTP_PATH}/* (默认值 "/mcp")

CORS 行为

  • 默认值:CORS已禁用(TIME_HTTP_CORS_ENABLED=false).
  • 启用后,除非在中明确列出,否则不允许有任何来源 TIME_HTTP_CORS_ORIGINS.
  • TIME_HTTP_CORS_ORIGINS 接受逗号分隔的满列表。支持的表单:
    • 主机名: example.com
    • 主机:端口: localhost:3000, 127.0.0.1:8080
    • 完整URL: https://app.example.com (已标准化为其宿主)
    • 通配符子域: *.example.com (比赛 example.com 以及任何子域)
  • 随着 TIME_AUTH_ENABLED=true,使用 * 在……里面 TIME_HTTP_CORS_ORIGINS 启动时被拒绝。
  • 仅返回允许来源的预检和响应标头。

配置示例

  • 发展:
    • TIME_HTTP_CORS_ENABLED=true
    • TIME_HTTP_CORS_ORIGINS="http://localhost:3000,http://127.0.0.1:5173"
  • 生产:
    • TIME_HTTP_CORS_ENABLED=true
    • TIME_HTTP_CORS_ORIGINS="https://yourdomain.com,https://app.yourdomain.com,*.trusted-partner.com"
    • 避免 *;如果可能,请禁用服务器到服务器使用的CORS。

环境变量

  • TIME_HTTP_CORS_ENABLED (默认值: false)
  • TIME_HTTP_CORS_ORIGINS (默认值:空,表示没有允许的来源)
  • TIME_AUTH_ENABLED (默认值: false)
  • TIME_AUTH_SECRET_KEY (如果启用了身份验证,则需要;≥32个字符)
  • TIME_HTTP_ADDRESS (默认值: ":8080")
  • TIME_HTTP_PATH (默认值: "/mcp")

快速HTTP检查

  • curl -i http://localhost:8080/health
  • JWT: curl -i -H "Authorization: Bearer $TOKEN" http://localhost:8080/capabilities