Passage of Time MCP 是一个开源的 Model Context Protocol(MCP)服务器项目,旨在为大型语言模型(LLM)提供时间感知和时间计算能力。该项目由 Jérémie Lumbroso 和 Claude Opus 4.0(Anthropic)合作开发,灵感来源于一个哲学问题:“人工智能能否感知时间的流逝?”。通过为语言模型提供时间相关的工具,项目解决了语言模型在时间计算上的局限性,例如无法准确计算时间差。服务器通过简单的时间函数和指令,帮助模型理解时间背景,发现对话模式、工作节奏等信息。该项目使用 Mozilla Public License 2.0 授权,代码公开在 GitHub 上,鼓励开发者参与协作和部署。
功能列表
- 提供
current_datetime()
函数,返回当前时间戳,支持可选的时区参数。 - 支持 Server-Sent Events(SSE)模式,允许网页客户端通过 HTTP 连接访问时间数据。
- 提供时间计算工具,帮助语言模型计算时间差或转换时区。
- 支持与语言模型的直接集成,通过标准输入输出(stdio)模式与模型交互。
- 提供清晰的指令集(Context),指导语言模型如何使用时间相关功能。
使用帮助
安装与部署
要使用 Passage of Time MCP 服务器,需要在本地或云端部署代码。以下是详细的安装和使用步骤:
- 克隆项目代码
在 GitHub 上访问https://github.com/jlumbroso/passage-of-time-mcp
,使用以下命令克隆代码到本地:git clone https://github.com/jlumbroso/passage-of-time-mcp.git
确保本地已安装 Git。如果没有,请先安装 Git(在 macOS/Linux 上使用
sudo apt install git
或brew install git
)。 - 安装依赖
项目需要 Python 环境(推荐 Python 3.8 或更高版本)。进入项目目录后,安装依赖:cd passage-of-time-mcp pip install -r requirements.txt
确保已安装
pip
和 Python。如果需要,可以参考 Python 官方文档安装。 - 启动本地服务器
运行以下命令启动 MCP 服务器:python server.py
服务器默认在本地地址
http://0.0.0.0:8000/sse
启动,运行在 SSE 模式下。启动后,终端会显示服务器状态。 - 通过 ngrok 暴露服务器到公网(可选)
如果需要让网页客户端或远程语言模型访问服务器,可以使用 ngrok 暴露本地服务器。安装 ngrok 后,运行:ngrok http 8000
ngrok 会生成一个公网 URL,例如
https://.ngrok-free.app
。在配置客户端时,使用此 URL 并在末尾添加/sse
,如https://.ngrok-free.app/sse
。 - 云端部署(推荐生产环境)
为确保稳定性,建议将服务器部署到云平台,如 Render.com。登录 Render.com,创建一个新服务,选择 GitHub 仓库,连接jlumbroso/passage-of-time-mcp
,并按照平台指引配置环境变量和端口(默认 8000)。部署完成后,Render 会提供一个公网 URL。 - 与 Claude 桌面版集成
如果使用 Claude 桌面版,可以通过以下步骤添加 MCP 服务器:- 打开 Claude 桌面版的设置页面,找到“Add Integrations”选项。
- 输入服务器 URL(本地为
http://0.0.0.0:8000/sse
,或云端/公网 URL)。 - 保存配置并重启 Claude,服务器即可与 Claude 通信。
操作主要功能
- 获取当前时间
服务器提供current_datetime()
函数,语言模型可以通过调用该函数获取当前时间戳。函数支持可选的时区参数,例如America/New_York
或Asia/Shanghai
。在与 Claude 交互时,模型会在每次对话开始时调用此函数,确保时间信息的准确性。 - 时间计算
服务器支持时间差计算,例如计算两个时间点之间的分钟数或小时数。语言模型可以通过指令发送时间戳,服务器返回计算结果。例如,发送:{ "jsonrpc": "2.0", "id": 1, "method": "getTimeDifference", "params": { "timestamp": "2025-07-17 12:00:00", "interval": "minutes" } }
服务器会返回指定时间与当前时间之间的分钟差。
- SSE 模式与网页客户端
在 SSE 模式下,服务器通过 HTTP 提供实时时间数据。开发者可以使用 JavaScript 客户端连接到服务器,订阅时间更新。例如:const eventSource = new EventSource('https://your-server.ngrok-free.app/sse'); eventSource.onmessage = function(event) { console.log('Received time:', event.data); };
- 指令集(Context)使用
服务器提供了一个简单的指令集,存储在README.md
中,内容为:“你现在可以访问current_datetime()
函数,并可传入可选的时区参数。每次响应开始时调用此函数,以感知用户的时间流逝。” 语言模型会根据此指令自动调用时间函数,开发者无需手动干预。
注意事项
- 确保服务器运行时网络稳定,特别是在使用 ngrok 或云部署时。
- 如果语言模型未正确调用时间函数,可检查服务器日志(
server.log
)或指令集配置。 - 项目使用 Mozilla Public License 2.0,开发者可自由修改和分发代码,但需遵守开源协议。
应用场景
- 增强语言模型时间感知
在与用户对话时,语言模型可以通过服务器获取当前时间,动态调整回答。例如,模型可以根据用户所在时区提供更贴合的日程建议。 - 分析对话模式
开发者可以利用时间数据分析用户与模型的交互频率,发现对话高峰期或用户习惯。 - 时间敏感任务自动化
在自动化工作流中,服务器可为语言模型提供时间依据,用于任务调度或提醒生成。 - 教育与研究
研究人员可使用该服务器探索语言模型如何理解时间概念,验证其在时间相关任务中的表现。
QA
- 如何确保服务器与语言模型正确通信?
检查服务器是否在http://0.0.0.0:8000/sse
运行,并确保客户端配置了正确的 URL。使用 Claude 的开发者可参考 Anthropic 官方文档配置 MCP。 - 是否支持多时区时间转换?
是的,current_datetime()
函数支持传入 IANA 时区名称(如Europe/London
),服务器会返回对应时区的当前时间。 - 需要哪些技术背景来部署服务器?
基本的 Python 编程知识和 Git 操作经验即可。云部署需要了解基础的云服务配置,如 Render.com 的操作流程。 - 服务器是否支持高并发?
本地部署适合开发和测试,生产环境建议使用云部署以支持高并发。Render.com 等平台可自动扩展服务器资源。