mcpField
L
Literature Clock

Literature Clock

本地服务
github.com游戏娱乐04 周前更新

关于 Literature Clock

Literature Clock 是一个按当前分钟提供文学句子的时钟服务,供 MCP 客户端和浏览器使用。内容来自文学精选、版权免费的书籍或原创风格文本,并支持设置、定时推送和多种传输方式。

主要功能

  1. 01按分钟获取句子
  2. 02选择文学、书籍或原创声音
  3. 03配置时钟与访问控制
  4. 04定时或即时推送句子
  5. 05提供设置、日志和模式工具
  6. 06支持 stdio、HTTP 与 SSE

适用场景

  1. 01为当前时间获取一句文学文本
  2. 02按指定来源和时间浏览句子
  3. 03向事件流客户端推送定时句子
  4. 04管理服务器设置、用户和 API 密钥

MCP 相关

MCP 服务提供获取句子、查询来源与设置、管理访问控制等工具,并提供来源及句子资源和工作流提示词。支持 stdio、Streamable HTTP 与 legacy SSE。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"markusvankempen-literature-clock": {
"command": "npx",
"args": [
"-y",
"literature-clock-mcp"
],
"env": {
"ADMIN_PASSWORD": "<ADMIN_PASSWORD>",
"ADMIN_USER": "<ADMIN_USER>",
"MCP_API_KEY": "<MCP_API_KEY>",
"AUTH_MODE": "<AUTH_MODE>",
"RATE_LIMIT": "<RATE_LIMIT>"
}
}
}
}
启动命令npx -y literature-clock-mcp
需要配置的环境变量
ADMIN_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmliterature-clock-mcp1.6.2

工具

8

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

Literature Clock,奶油色与墨色的时钟标志

Literature Clock MCP

献给当下这一分钟的一句话,选自文学作品、无版权图书,或原创声音。

版本 1.6.5 Apache-2.0 Node.js 20 或更高版本 MCP stdio 和 HTTP 文学作品集 CC BY-NC-SA 2.5

npm literature-clock-mcp GitHub literature-clock-mcp Cursor VS Code Claude Desktop

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 会先尝试随附的精确到分钟的语句,再查询公共文集;如果文库没有响应,则回退到无版权限制的书籍。

npmliterature-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。

Literature Clock 页面:11:11 的一句话,来源设为 Literature

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

09:05 的海盗语音

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

设置:默认来源 Literature,身份验证已关闭,速率限制为 60

设置:工具控制和 API 密钥

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

设置登录

功能

功能位置
时钟页面/ — 显示、再来一句、随机、朗读。?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
/mcpStreamable 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_MODEhttp
HOST0.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 仍需要凭据。也可以在“设置” →“工具访问控制”中单独锁定某个工具。
writeupdate_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 ClockAlexa 技能 Ink O'Clock。朗读对应分钟的一行文字。
Chrome Ink Clock新标签页和工具栏时钟。Literature 会读取公开的 literature-clock。书籍和原始声音保留在设备上。
Stanza ClockChrome 新标签页文字时钟。提供七种语言的 8×8 和 16×16 字母板。
ESP-WordClock8x8适用于 ESP32-S3 和 ESP8266 的英文 8×8 WS2812 文字时钟。Stanza Clock 与其硬件表盘相匹配。

作者

Markus van Kempen · github.com/markusvankempen

再小的 Bug 也值得修,再奇怪的语法也不在话下。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。