关于 Literature Clock
Literature Clock 是一个按当前分钟提供文学句子的时钟服务,供 MCP 客户端和浏览器使用。内容来自文学精选、版权免费的书籍或原创风格文本,并支持设置、定时推送和多种传输方式。
主要功能
- 01按分钟获取句子
- 02选择文学、书籍或原创声音
- 03配置时钟与访问控制
- 04定时或即时推送句子
- 05提供设置、日志和模式工具
- 06支持 stdio、HTTP 与 SSE
适用场景
- 01为当前时间获取一句文学文本
- 02按指定来源和时间浏览句子
- 03向事件流客户端推送定时句子
- 04管理服务器设置、用户和 API 密钥
MCP 相关
MCP 服务提供获取句子、查询来源与设置、管理访问控制等工具,并提供来源及句子资源和工作流提示词。支持 stdio、Streamable HTTP 与 legacy SSE。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y literature-clock-mcpADMIN_PASSWORD密钥Password for the Settings and Log pages. Required when HOST is 0.0.0.0 or the process runs in a container. Laptop default is demo until this is set.ADMIN_USERSign-in name for Settings. Default demo.MCP_API_KEY密钥API key for tool calls when AUTH_MODE is write or all. Issue one on /admin.AUTH_MODE密钥off (default), write, or all. describe_server stays open in every mode.RATE_LIMITMax tool calls per window per caller. Default 60.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
8收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Literature Clock MCP
献给当下这一分钟的一句话,选自文学作品、无版权图书,或原创声音。
mcp
model-context-protocol
mcp-server
literature-clock
ink-clock
quotes
books
voices
stdio
streamable-http
cursor
vscode
claude
客户端页面
clients/ 是一组 HTML 页面,适用于 Cursor、VS Code、Claude Desktop、调用 get_quote 的浏览器、订阅 GET /events 引文推送的页面,以及读取和更改设置的页面。打开 clients/index.html,或在 localhost 上提供该文件夹,以便这些页面访问服务。
添加服务
Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"literature-clock-mcp": {
"command": "npx",
"args": ["-y", "literature-clock-mcp"]
}
}
}
VS Code — 用户或工作区的 mcp.json
{
"servers": {
"literature-clock-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "literature-clock-mcp"]
}
}
}
Claude Desktop — macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上的 %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"literature-clock-mcp": {
"command": "npx",
"args": ["-y", "literature-clock-mcp"]
}
}
}
此仓库是项目主页,不包含服务源代码。请使用上面的 npx 配置块安装已发布的软件包。
添加托管服务
相同的配置也适用于 Render、IBM Code Engine,或任何通过 HTTPS 提供此应用的主机。MCP URL 是网站地址加上 /mcp。Render 上的在线服务地址为 https://literature-clock-mcp.onrender.com/mcp。Code Engine 应用的地址格式为 https://<app>.<region>.codeengine.appdomain.cloud/mcp。
主机必须运行 MCP_MODE=http HOST=0.0.0.0 npx -y [email protected],并将 PORT 留给平台使用。Render 的部署步骤见Render。
当身份验证模式为 write 或 all 时,请添加请求头 Authorization: Bearer <key>。新服务的身份验证默认为 off,因此下面的配置块无需密钥。
Cursor — 此项目:.cursor/mcp.json。所有项目:~/.cursor/mcp.json。
{
"mcpServers": {
"literature-clock-mcp": {
"url": "https://literature-clock-mcp.onrender.com/mcp"
}
}
}
保存文件。打开 Cursor Settings → MCP,并启用 literature-clock-mcp。绿色圆点表示握手成功。在 Agent 聊天中询问:ask literature-clock-mcp for the current quote。
VS Code — 工作区 .vscode/mcp.json,或通过命令面板 → MCP: Open User Configuration。
{
"servers": {
"literature-clock-mcp": {
"type": "http",
"url": "https://literature-clock-mcp.onrender.com/mcp"
}
}
}
命令面板 → MCP: List Servers → 启动 literature-clock-mcp。在 Copilot Chat 中确认已在工具列表中选中该服务,然后询问当前的引文。
Claude Desktop — 桌面配置文件只会启动本地进程。mcp-remote 会连接托管 URL。配置路径:macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上的 %APPDATA%\Claude\claude_desktop_config.json。保存后退出并重新打开 Claude。
{
"mcpServers": {
"literature-clock-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://literature-clock-mcp.onrender.com/mcp"]
}
}
}
免费的 Render 实例空闲后,首次调用可能需要等待片刻,让进程唤醒。服务使用的时钟是所在机器的时钟。Render 使用 UTC,因此“现在”的时间比多伦多快 4 小时。
一个像文学时钟那样报时的 MCP 服务:用一句话点明精确到分钟的时间。
默认来源是 Literature,即 Johannes Enevoldsen 的 literature-clock 文集(CC BY-NC-SA 2.5)。Books 是随服务打包的无版权限制语句。其他来源是为此时钟创作的原创文字,不是电影台词或在世作者的引文。
无需账户,也没有分析追踪。书籍和文风都保存在本机。Literature 会先尝试随附的精确到分钟的语句,再查询公共文集;如果文库没有响应,则回退到无版权限制的书籍。
| npm | literature-clock-mcp |
| MCP 名称 | io.github.markusvankempen/literature-clock-mcp |
| 名称 | Literature Clock · 软件包 literature-clock-mcp |
| 版本 | npm 上的版本为 1.6.5。此 git 工作树不包含 src/。 |
| 传输方式 | stdio、Streamable HTTP(/mcp)、旧版 SSE(/sse)。每种方式都可在 Settings 中关闭,但必须至少保留一种。 |
| 源代码 | literature-clock-mcp · Chrome 版 chrome-ext-ink-clock |
截图
HTTP 时钟,选择 Literature,时间为 11:11。

原创语音,而非书籍引文。

设置(笔记本登录名 demo / demo)。默认来源、时区、12 或 24 小时制、用户和密码、身份验证以及速率限制。


新会话中,进入设置前需要先登录。

功能
| 功能 | 位置 |
|---|---|
| 时钟页面 | / — 显示、再来一句、随机、朗读。?source=literature&time=09:05 |
| Literature、books、mix、surprise、voices | 默认来源为 literature。list_sources |
| 时钟、设置、密钥、用户、日志 | 每个设置表单都是一个工具:set_clock、set_auth_mode、set_audit、set_rate_limit、set_protocols、set_ui_auth、set_tool_gate、set_tool_lock、set_push。备份方式为先运行 export_settings,再运行 import_settings。日志的操作顺序为 set_audit、generate_traffic,再运行 export_log。即使身份验证模式已关闭,这些操作也需要管理员权限范围。 |
| JSON Schema | 先运行 list_schemas,再运行 get_schema;也可以在 Tools 页面使用 tools/list |
| 运行工具 | Tools 页面。复制 JSON,或在新标签页中打开结果 |
| 资源 | sources://list、quote://{source}/{hhmm} |
| 提示词 | diagnose-server、quote-for-now、another-line、mix-the-minute、voice-at-nine、books-for-a-minute、read-settings |
| 协议 | stdio、Streamable HTTP(/mcp)、旧版 SSE(/sse)。Settings → Protocols。至少保留一个启用 |
| 登录前隐藏页面 | Settings → Protocols。JSON 和 MCP 仍可访问 |
| 健康状态、冒烟测试、流量 | /health、/test。流量测试需要登录或 API 密钥。它会在日志中填入读取记录、错误时间、未知 schema 和被拒绝的密钥 |
| 设置 | 时钟、安全、协议、推送、工具控制、API 密钥、用户、备份 |
| 引文推送 | 每隔 5、10、15、30 或 60 分钟推送一次,或使用 push_quote 立即推送一句 |
| 事件流 | GET /events。Events 客户端可以订阅并推送一句 |
| 日志 | 计数器、错误、调用追踪、审计记录。导出内容会标明调用方(用户、API 密钥或匿名) |
| 身份验证 | off、write 或 all。在 Settings 中管理密钥和用户。describe_server 始终开放 |
| 客户端页面 | clients/,包含 Cursor、VS Code、Claude Desktop、浏览器、事件流和设置 |
引文来源
| 来源 | 内容 |
|---|---|
| literature(默认) | Johannes Enevoldsen 的合集。优先使用捆绑的、无版权限制的整分钟文本。若该分钟没有内容,则使用公共 JSON 信息流(更安全的段落)。若信息流无响应,则使用一条无版权限制的文本,并标记为备用藏书内容。 |
| books | 仅使用捆绑的无版权限制语料。若某分钟没有内容,则使用最近的较早可读文本,并说明这一点。 |
| mix | 使用 books 和所有语音中的整分钟文本。 |
| surprise | 随机选择一个来源,再从中取一句。 |
| voices | 原创文本:Yoda、Teacher、Pirate、Aussie、Canadian、Cat、Chef、Comedian、Cowboy、Detective、English、French、Hitchhiker、Hockey、Librarian、New Yorker、Pilot、Robot、Scottish、Soccer、Sports、Star Trek、Star Wars、Vampire。 |
list_sources 会返回实时目录,其中包含每种语音的 ID。
工具
| 工具 | 范围 | 使用时机 |
|---|---|---|
describe_server | 读取 | 首次调用,以及每次被拒绝后再次调用。查看版本、认证模式、工具,以及时间和来源的工作方式。 |
list_sources | 读取 | 查看 literature、books、mix、surprise 和各个语音 ID。 |
get_quote | 读取 | 获取 HH:MM 或 now 对应的一行或多行。省略 source 可使用已保存的默认来源。 |
count_lines | 读取 | 查看每个来源在某一分钟有多少条本地内容 |
get_settings | 读取 | 查看时钟默认值、认证、速率限制、协议、工具门控和引用推送计划,包括 clientPush。 |
update_settings | 写入 | 更新与 Settings 相同的值,包括 clientPush、一个工具门控和一个工具锁。 |
list_schemas | 读取 | 查看行、来源、设置和工具架构的名称。 |
get_schema | 读取 | 获取其中一个名称对应的 JSON Schema。工具名称包含 inputSchema 和 outputSchema。 |
push_quote | 写入 | 立即向打开的 GET /events 客户端发送当前引用。仅在启用 clientPush 后可用。仅限 HTTP。 |
list_users | 管理员 | Settings → Users。查看名称和权限范围。不返回密码。 |
create_user | 管理员 | Settings → Users → Save user。 |
delete_user | 管理员 | Settings → Users → Remove。内置管理员会保留。 |
list_api_keys | 管理员 | Settings → API keys。不返回密钥。 |
issue_api_key | 管理员 | Settings → API keys → Issue key。密钥只返回一次。 |
revoke_api_key | 管理员 | Settings → API keys → Revoke。传入 list_api_keys 返回的 ID。 |
export_settings | 管理员 | Settings → Backup → Export。包含已保存用户的密码哈希。不包含 API 密钥和 MQTT 密码。 |
import_settings | 管理员 | Settings → Backup → Import。传入导出对象。 |
export_log | 管理员 | Log → Export log and trace。 |
push_quote_now | 管理员 | Settings → Push → Push a quote now。使用已保存的目标。 |
generate_traffic | 读取 | Test → Generate traffic。需要任意凭据,即使认证模式已关闭也一样。然后调用 export_log。 |
set_clock | 管理员 | Settings → Clock。然后在不指定来源的情况下调用 get_quote。 |
set_auth_mode | 管理员 | Settings → Security → Apply mode。然后调用 describe_server。 |
set_audit | 管理员 | Settings → Security → Call trace。然后调用 generate_traffic 和 export_log。 |
set_rate_limit | 管理员 | Settings → Security → Rate limit。然后调用 describe_server。 |
set_protocols | 管理员 | Settings → Protocols。发送全部三项;至少保留一项启用。然后调用 describe_server。 |
set_ui_auth | 管理员 | 要求先登录才能查看 HTML 页面。然后调用 get_settings。 |
set_tool_gate | 管理员 | 启用或禁用一个工具。describe_server 始终可用。然后调用 describe_server。 |
set_tool_lock | 管理员 | 锁定一个工具,使其在认证模式关闭时仍需要凭据。然后调用 describe_server。 |
set_push | 管理员 | Settings → Push → Save schedule。然后调用 push_quote_now,或在启用客户端推送时调用 push_quote。 |
工具的 get_schema 会包含 inputSchema、outputSchema 和下一次调用。按要求调用一次 next 字段。describe_server 会返回 server.version 和 server.description。相同的版本也会显示在页面标题、Health、get_settings 和 server 架构中。
get_quote 为只读操作。传入上一行文本作为 avoid,即可获取同一分钟的另一行内容。count 的取值范围是 1–8。失败时会设置 isError: true。空的 lines 数组表示该分钟没有对应条目;请尝试 literature、books 或 mix。不要编造引文。
示例:
{ "time": "09:05", "source": "literature" }
引文推送
保存间隔和目标之前,计划不会运行。HTTP 进程会根据已保存的来源和时区发送当前引文。匹配的分钟为 :00、:05、:10 等。stdio 不会运行计划。聊天客户端不会打印推送内容。调用 get_quote 可在回复中获取一行引文。
| 目标 | 接收内容 |
|---|---|
| 事件流 | GET /events。SSE 事件名称为 quote。连接后的首个帧为 event: ready。 |
| 旧版 SSE | 打开 GET /sse 会话。通知为 notifications/literature-clock/quote。 |
| Streamable HTTP | 打开 POST /mcp 会话。使用相同的通知。 |
| MQTT | 已保存的代理和主题。密码会被保存,且不会由 get_settings 返回。 |
clientPush 允许客户端调用 push_quote,无需等待整分钟。该调用始终包含事件流,以及其他任何已保存的目标。前往 Settings → Push 开启,或使用 update_settings 并设置 "clientPush": true。事件页面上有 立即推送一条引文,会调用 push_quote。请先订阅,再按下该按钮。
Settings → Push → 立即推送一条引文仅使用已保存的目标。请先保存计划,再使用该按钮。此操作不会开启 clientPush。
主机上的时钟使用该机器的时区设置。timeZone device 表示进程时区。在 Render 上,该时区为 UTC。
资源和提示词
| 类型 | 名称 |
|---|---|
| 资源 | sources://list |
| 资源 | quote://{source}/{hhmm} — quote://literature/09-05、quote://pirate/14-30 或 quote://books/now |
| 提示词 | diagnose-server |
| 提示词 | quote-for-now |
| 提示词 | another-line |
| 提示词 | mix-the-minute |
| 提示词 | voice-at-nine |
| 提示词 | books-for-a-minute |
| 提示词 | read-settings |
运行
已发布的软件包:
npx literature-clock-mcp # stdio
MCP_MODE=http npx literature-clock-mcp # http://127.0.0.1:8080/health
| URL | 功能 |
|---|---|
/ | 时钟。?source=literature&time=09:05。再来一行会跳过屏幕上的引文。随机会选择其他来源。朗读会朗读这行引文。 |
/admin | 设置。除非设置了 ADMIN_USER 和 ADMIN_PASSWORD,否则笔记本登录凭据为 demo / demo。在公共绑定地址上,设置 ADMIN_PASSWORD 前,笔记本密码处于关闭状态。备份功能可导出和导入设置。 |
/health | 进程正在运行。仅在 localhost 上显示 cwd。 |
/test | 只读冒烟测试;登录后或提供 Authorization: Bearer 密钥后,还可使用 生成流量(读取、无效时间、未知架构、拒绝的密钥)。 |
/tools | 工具列表。运行 list_schemas 和 get_schema,或加载 tools/list。 |
/help | 功能列表、作者、页面和工具。 |
/sse | 旧版 SSE |
/mcp | Streamable HTTP |
/events | 纯 SSE。连接时发送事件 ready,推送运行时发送 quote |
/log | 启用审计后,登录即可查看调用追踪 |
相同的设置可通过 get_settings / update_settings 以及 GET 或 POST /api/settings 操作。
浏览器界面仅支持 HTTP。stdio 不会打开页面。MCP_MODE=http npx [email protected] 会提供时钟服务。开发环境中的本地桌面端口为 http://127.0.0.1:8788/。
Render
render.yaml 会启动已发布的 npm 软件包。此仓库不包含服务端源代码。请将 PORT 留空,以便 Render 设置该值。绑定到 0.0.0.0。
启动命令
MCP_MODE=http HOST=0.0.0.0 npx -y [email protected]
| 键 | 值 |
|---|---|
MCP_MODE | http |
HOST | 0.0.0.0 |
ADMIN_PASSWORD | 自行选择的密码。在此公共地址上为必填项 |
健康检查路径:/health。
时钟地址为 https://<your-service>.onrender.com/。MCP URL 为该主机加上 /mcp。设置登录使用 ADMIN_USER(默认值为 demo)和 ADMIN_PASSWORD。在该公共地址上,笔记本密码 demo 处于关闭状态。该 URL 和 Code Engine 的 IDE 设置位于添加托管服务下。
示例
在 Cursor 中连接 literature-clock-mcp.onrender.com 后:
向 literature-clock-mcp 询问当前引文
Render 上的 Literature Clock 返回了 16:01 的引文,这是该服务器上的时间。此时多伦多时间为 12:01 PM。
四点刚过,Pippa 漫步去了 Dot 家,手里拿着一瓶她一直留着的葡萄酒,还在想,尽管子宫里仍嵌着一枚残留的线圈,像被遗弃在月球上的宇航员垃圾一样,她是否有可能怀孕。
The Private Lives of Pippa Lee,作者 Rebecca Miller。时间短语是“四点刚过”。来源是 Literature。
身份验证
身份验证默认设为 off。设置和日志会显示锁图标,因为它们需要登录。
| 模式 | 行为 |
|---|---|
off | 引文工具无需凭据。管理工具和 generate_traffic 仍需要凭据。也可以在“设置” →“工具访问控制”中单独锁定某个工具。 |
write | update_settings 和 push_quote 需要密钥。读取工具保持开放。管理工具需要 admin 作用域。 |
all | 除 describe_server 外,每个工具都需要 Authorization: Bearer <key> 或 MCP_API_KEY。管理工具需要 admin 作用域。 |
| 变量 | 作用 |
|---|---|
ADMIN_USER | 设置页面的登录用户名。默认值为 demo。 |
ADMIN_PASSWORD | 设置页面的登录密码。在这台笔记本电脑上,默认值为 demo。在公开绑定(HOST=0.0.0.0、Render 或容器)时没有默认值:在进程启动前设置此项,然后重启。它不会存储在“设置”中,也不会包含在导出文件中。 |
RATE_LIMIT | 每分钟最多调用工具的次数。默认值为 60。 |
在 /admin 上签发和撤销密钥。/health 仅表示进程正在运行;/test 会运行引文检查。
“设置” →“备份”会下载时钟、身份验证、协议、日程安排(包括客户端推送)、工具访问控制和已保存用户(密码哈希)。导入会还原该文件。API 密钥和 MQTT 密码不包含在其中。“日志” →“导出日志和跟踪”会下载计数器、错误、调用跟踪和审计记录。
“设置” →“工具访问控制”可以禁用工具,也可以锁定工具,使其即使在身份验证为 off 时也需要凭据。describe_server 始终可用且保持开放。
“设置” →“用户”可以添加具有 read、write 或 admin 作用域的用户名和密码。内置管理员用户名来自 ADMIN_USER,无法在此处替换。“设置” →“API 密钥”可以签发 bearer 密钥。密钥只会显示一次。
“设置” →“协议”可以开启或关闭 stdio、Streamable HTTP 和 SSE。至少要保留一种协议开启。同一选项卡还可以设置为仅在登录后显示 HTML 页面。只要某个协议处于开启状态,describe_server 和 update_settings 就仍会响应,因此可以通过该协议重新开启已关闭的传输方式。
发布
请从包含 src/ 和 data/ 的软件包发布,而不是从此 git 树发布。请参阅 docs/PUBLISHING.md。npm 压缩包包含 src/、data/(书籍和声音)、README、docs/screenshots/、docs/icon.png、docs/icon.svg、server.json、clients/、LICENSE 和 NOTICE。
npm 关键词:mcp、model-context-protocol、mcp-server、literature-clock、ink-clock、quotes、books、voices、stdio、streamable-http、cursor、vscode、claude、clock。
相关时钟
| 时钟 | 介绍 |
|---|---|
| Alexa Ink Clock | Alexa 技能 Ink O'Clock。朗读对应分钟的一行文字。 |
| Chrome Ink Clock | 新标签页和工具栏时钟。Literature 会读取公开的 literature-clock。书籍和原始声音保留在设备上。 |
| Stanza Clock | Chrome 新标签页文字时钟。提供七种语言的 8×8 和 16×16 字母板。 |
| ESP-WordClock8x8 | 适用于 ESP32-S3 和 ESP8266 的英文 8×8 WS2812 文字时钟。Stanza Clock 与其硬件表盘相匹配。 |
作者
Markus van Kempen · github.com/markusvankempen
再小的 Bug 也值得修,再奇怪的语法也不在话下。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。