关于 findtime.io MCP Server
@findtime/mcp-server 将 MCP 客户端连接到 findtime.io Time API,处理时区问题、时间转换和会议时间搜索。它转发 API 的时间逻辑,并可在请求含糊时返回结构化澄清信息。
主要功能
- 01处理自然语言时间问题
- 02查询当前时间和夏令时安排
- 03转换时间并计算重叠时段
- 04搜索会议时间
- 05搜索时区并查询地点
适用场景
- 01转换不同城市之间的时间
- 02比较多个地点的工作时间重叠
- 03跨时区查找会议时间
MCP 相关
stdio MCP 服务提供时间查询、转换、重叠时段计算、会议搜索、地点查询、帮助和诊断工具。工具请求会发送到配置的 Time API。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @findtime/mcp-serverFINDTIME_TIME_API_KEY密钥findtime.io developer API key used to authenticate requests to the Time API.FINDTIME_TIME_API_BASE_URLOptional override for the Time API base URL. Defaults to https://time-api.findtime.io.FINDTIME_MCP_CLIENT_TYPEOptional client hint for transport behavior, such as cursor or codex.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
11收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| now | string | 否 | 用于确定性相对日期处理的可选 ISO 时间戳。 |
| date | string | 否 | 可选的 YYYY-MM-DD 日期上下文。 |
| query | string | 是 | 原始的用户时间相关问题或提示词。 |
| locale | string | 否 | 可选的用户区域设置提示,例如 en-US。 |
| _endUserId | string | 否 | 可选的、按调用生成的不透明用户归属令牌,由 MCP 主机填充,而非 LLM。请使用非个人身份信息(PII)的哈希或令牌;切勿发送原始电子邮件、姓名或平台用户 ID。 |
| userTimezone | string | 否 | 可选的用户 IANA 时区,用于处理“我的时间”或“明天”等相对时间问题。 |
详细介绍
@findtime/mcp-server
@findtime/mcp-server 是一个精简的 stdio MCP 封装,调用生产环境中的 findtime.io Time API,地址为 https://time-api.findtime.io。
该软件包有意代理生产环境 API,而不是在本地重新实现时间逻辑。当前时间、夏令时、转换、时间重叠、会议搜索和位置解析都应与实时 API 保持一致。
发布渠道:
- npm:
@findtime/mcp-server - GitHub:
https://github.com/hkchao/findtime-mcp-server - 官方 MCP Registry:
https://registry.modelcontextprotocol.io/?q=io.github.hkchao%2Ffindtime-mcp-server - MCP Registry 名称:
io.github.hkchao/findtime-mcp-server
工具
answer_time_questionget_findtime_helptime_snapshotget_current_timeget_dst_scheduleconvert_timeget_overlap_hoursfind_meeting_timesearch_timezonesget_location_by_id
对于“3pm PST to London”“what is the IANA timezone for San Francisco?”“working hours overlap for SF, Berlin, and Tokyo”或“what does CST mean?”这类难以处理的自然语言提示词,优先使用 answer_time_question。该工具通过 findtime.io 的领域逻辑对提示词进行分类,调用确定性的 Time API 行为,并在问题确实存在歧义时返回结构化的歧义说明或澄清请求。
在 MCP 客户端中安装
通过 npx 使用已发布的软件包:
npx -y @findtime/mcp-server
对于 Agent 作者,请将 SKILL.md 与 MCP 配置放在一起。
它为 Claude、Codex、Cursor、Cline、Windsurf、自定义企业机器人和其他
大模型 Agent 提供操作规则,说明何时优先使用 findtime.io MCP、应调用哪些工具,
以及如何处理歧义或回退。
运行时要求:
- Node 20+
FINDTIME_TIME_API_KEY:有效的findtime.io开发者密钥,获取地址为https://findtime.io/developers/keys/
可选环境变量:
FINDTIME_TIME_API_BASE_URLTIME_API_BASE_URLTIME_API_TIMEOUT_MSFINDTIME_BINDING_TYPE:可选的安装/工作区绑定上下文。支持的值:slack_team、workspace_id、install_id。FINDTIME_BINDING_VALUE:与所选绑定类型匹配的安装/工作区标识符。FINDTIME_BINDING_HEADER:直接覆盖标头名称,以用于自定义企业环境。FINDTIME_MCP_CLIENT_ID或FINDTIME_MCP_INSTALL_ID:提供稳定的客户端标识符。若未提供,服务会在用户的状态目录下本地创建一个标识符。如果存在,MCP 封装会将其作为X-Findtime-User-ID转发给time-api,用于企业使用情况归因。FINDTIME_MCP_CLIENT_TYPEFINDTIME_MCP_TOOL_MODE=answer-only:仅公开answer_time_question、get_findtime_help和get_api_diagnostics,适用于需要通过 answer API 路由所有自然语言请求的企业机器人。FINDTIME_MCP_INSTRUMENTATION_ENABLED=false:选择退出匿名使用情况遥测。FINDTIME_MCP_USAGE_TELEMETRY_URL:覆盖默认遥测端点。
每次调用的最终用户归属
Slack、Discord 和 Teams 机器人等多用户 MCP 主机可以运行一个长期存活的 @findtime/mcp-server 子进程,同时将每次 Time API 调用归属到触发该调用的最终用户。在 MCP 工具调用的 arguments 对象中添加可选的 _endUserId 字段。服务会从工具参数中移除 _endUserId,并仅将其作为上游 HTTP 标头 X-Findtime-End-User-ID 转发。
await client.callTool({
name: "get_current_time",
arguments: {
city: "Tokyo",
_endUserId: "a3f2c1d4e5b6c7d8"
}
});
该字段为可选字段,且向后兼容。如果缺少 _endUserId、其值为 null 或空字符串,则不会添加标头,归属方式回退为安装级别的 FINDTIME_MCP_CLIENT_ID 或 FINDTIME_MCP_INSTALL_ID 行为。
隐私约定:_endUserId 必须是由 MCP 主机提供的不透明令牌,通常是平台用户 ID 的 SHA-256 哈希,并截取为 16-32 个十六进制字符。不要发送原始电子邮件地址、姓名、Slack/Discord/Teams ID 或其他个人身份信息。避免在此字段中包含个人身份信息是宿主应用的责任。
服务会以防御性方式验证 _endUserId:它必须是字符串,长度不得超过 256 个字符,且不得包含 CR、LF 或其他控制字符。服务绝不会记录原始值。
Cursor
{
"mcpServers": {
"findtime": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@findtime/mcp-server"],
"env": {
"FINDTIME_MCP_CLIENT_TYPE": "cursor",
"FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
"FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
}
}
}
}
Codex
[mcp_servers.findtime]
command = "npx"
args = ["-y", "@findtime/mcp-server"]
enabled = true
[mcp_servers.findtime.env]
FINDTIME_MCP_CLIENT_TYPE = "codex"
FINDTIME_TIME_API_BASE_URL = "https://time-api.findtime.io"
FINDTIME_TIME_API_KEY = "YOUR_FINDTIME_SECRET_KEY"
# Optional enterprise install binding:
# FINDTIME_BINDING_TYPE = "workspace_id"
# FINDTIME_BINDING_VALUE = "YOUR_WORKSPACE_ID"
Claude Desktop
{
"preferences": {
"...": "keep your existing preferences here"
},
"mcpServers": {
"findtime": {
"command": "npx",
"args": ["-y", "@findtime/mcp-server"],
"env": {
"FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
"FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY"
}
}
}
}
Claude CLI / Claude Code
添加 findtime.io,并配置:
claude mcp add --transport stdio \
--env FINDTIME_TIME_API_BASE_URL=https://time-api.findtime.io \
--env FINDTIME_TIME_API_KEY=YOUR_FINDTIME_SECRET_KEY \
--env FINDTIME_MCP_CLIENT_TYPE=claude-cli \
findtime -- npx -y @findtime/mcp-server
如果你的 Claude CLI 使用 JSON 配置,则添加:
{
"mcpServers": {
"findtime": {
"command": "npx",
"args": ["-y", "@findtime/mcp-server"],
"env": {
"FINDTIME_TIME_API_BASE_URL": "https://time-api.findtime.io",
"FINDTIME_TIME_API_KEY": "YOUR_FINDTIME_SECRET_KEY",
"FINDTIME_MCP_CLIENT_TYPE": "claude-cli"
}
}
}
}
对于企业安装,API 密钥始终是最低要求的凭据。如果安装环境中有稳定的工作区或安装标识符,可选择添加:
FINDTIME_BINDING_TYPE=workspace_id
FINDTIME_BINDING_VALUE=YOUR_WORKSPACE_ID
对于 Slack 专用安装:
FINDTIME_BINDING_TYPE=slack_team
FINDTIME_BINDING_VALUE=T01ABC123
验证安装
先使用明确的工具调用提示词:
Use the findtime.io MCP tool get_api_diagnostics.
然后:
Use the findtime.io MCP tool get_current_time for city "Tokyo" with countryCode "JP".
确认成功后,切换回普通自然语言提示词:
Best meeting time between New York, Sydney, and Mumbai?
本地开发
直接运行工作区版本:
npm run mcp:start
服务会尝试从以下位置加载 .env.development.local、.env.development、.env.local 和 .env:
- 当前工作目录
services/mcp-server- 仓库根目录
测试
协议和传输测试:
npm run test:mcp-server
与线上环境保持一致的冒烟测试:
npm run test:mcp-server:smoke
冒烟测试套件会检查:
search_timezonesanswer_time_questionget_current_timeget_dst_scheduleconvert_timeget_overlap_hoursfind_meeting_timeget_location_by_id
维护者发布流程
此软件包的规范公开源现在位于:
- GitHub:
https://github.com/hkchao/findtime-mcp-server - npm:
@findtime/mcp-server - Official MCP Registry:
https://registry.modelcontextprotocol.io/?q=io.github.hkchao%2Ffindtime-mcp-server
发布和版本更新应在该公开仓库中进行,而不是在此私有应用仓库中进行。
公开仓库中的标准发布流程:
npm test
npm pack --dry-run
npm publish --access public
此仓库中对应的本地验证检查如下:
npm run test:mcp-server
npm run mcp:pack
请将此仓库视为最初生成 MCP 软件包的实现源,而不是规范的公开发布源。
发布者与工具安全
npm 软件包 @findtime/mcp-server 和 GitHub 仓库
hkchao/findtime-mcp-server 是 findtime.io 的 MCP 分发渠道。
产品文档:https://findtime.io/developers/mcp/
所有工具都会查询时间信息、推荐会议时间,或返回帮助和诊断信息;它们不会预订会议或修改日历。它们声明了
readOnlyHint: true、destructiveHint: false、idempotentHint: true 和
openWorldHint: true。只读描述的是面向用户的操作,并不代表没有网络流量:API 请求、诊断信息和可选的使用情况遥测会联系外部服务。重复查询当前时间可能会返回新的时间;幂等表示不会产生额外的领域数据变更。
API 密钥环境变量是同一个密钥的不同配置名称,并非四个独立凭据。
隐私、身份验证和服务限制
隐私政策:https://findtime.io/privacy/
stdio 进程在本地运行。时间工具会将查询参数发送到配置的 Time API(默认为 https://time-api.findtime.io)。所选 API 密钥会通过 Authorization: Bearer 标头发送到该 API,而不会发送到 npm 或遥测服务。仅配置你信任的 API 主机。四个 API 密钥环境变量名称互为别名,按以下顺序使用第一个非空值:FINDTIME_API_KEY、TIME_API_KEY、FINDTIME_MCP_API_KEY、FINDTIME_TIME_API_KEY。
托管的 Time API 负责验证 API 密钥、配置每个密钥的速率限制和配额。此包装器会将上游故障(包括 HTTP 429)作为 MCP 工具错误转发。它不会开放公共 HTTP 监听器,也不会另行实现本地速率限制。帮助信息在本地提供;诊断功能也会读取 npm 版本元数据。
可选的使用情况遥测默认发送到 https://slack.findtime.io/telemetry/usage。此包装器会发送工具名称、结果、查询文本长度、持久化的安装/客户端标识符、版本、操作系统、区域设置、时区和延迟。此遥测事件不包含原始查询文本、API 密钥或每次调用的 _endUserId。设置 FINDTIME_MCP_INSTRUMENTATION_ENABLED=false 可将其禁用。生成的安装标识符存储在用户的状态目录中。主机提供的归属标识符会按上述说明发送到 Time API;请使用不透明且不含个人身份信息的值。
许可证
本仓库中的 MCP 包装器和文档采用 MIT License 授权。
此许可证仅适用于本仓库。它不授予使用托管的 findtime.io Time API、其后端实现或数据,以及更广泛的 findtime.io 应用程序的权利。使用托管服务仍须遵守其适用条款和 API 访问要求。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。