Skip to main content
Glama
MothBlight-Git

Pyre MCP Server

Pyre — 燃烧的桌面便签

一个无边框、透明、始终置顶的方形纸笔记轨道,位于显示器边缘。有截止日期的笔记在最后两小时会从底部边缘燃烧掉。可将笔记拖到任何位置;燃烧的笔记会占据左上角,除非你手动移动过它们。所有内容均可由AI代理读写。一个便携式 Pyre.exe 文件。

构建契约:CLAUDE.md。设计文件:reference/.


运行它

便携版: 将 Pyre.exe 放在任何位置并双击运行。无需安装,无需管理员权限。若要将数据保留在 exe 旁边(如 U 盘、同步文件夹),请在 exe 旁创建一个名为 pyre.portable 的空文件,或者直接创建一个 pyre-data/ 文件夹。

安装版: Pyre-Setup-x.y.z.exe 会添加一个开始菜单项。数据存储在 %USERPROFILE%\.stickyburn\。

从源码运行:

npm install
npm test          # 63 tests: burn curve, grid, parser, talk lane, store, MCP stdio + HTTP end-to-end
npm start         # build + launch
npm run dist      # release/Pyre.exe (single-file portable) · Pyre-Setup-*.exe (installer) · Pyre-*-win.zip (portable folder)

Related MCP server: Bruin

使用它

在输入框中输入:主题 / 备注 / 截止时间 然后按 Enter。

  • winwater / send BEP to Powell / fri 9am

  • / just a thought → 归入 UNSORTED 文件夹

  • 截止时间格式:today tonight tomorrow fri 3d 2w 4h 8/21 2026-08-21 8/21 3pm fri 9am 3pm。默认时间 17:00(可在设置中修改)。

  • 三个芯片实时预览解析结果。截止时间芯片始终显示解析后的日期,而非你输入的内容。如果最后一段不是日期,则它仍属于备注部分。

  • 对话栏。 以 > 开头的行是发送给连接代理的消息,而非便签:> move winwater to friday。该消息会出现在编辑器下方的栏中,代理通过 list_messages 读取,并通过 send_message 回复。> 优先级高于一切,因此消息中可以自由包含斜杠。

  • 导航栏命令。 没有 / 且内容为 quit(或 exit)的行会关闭应用——芯片行会切换为单个 QUIT PYRE 芯片,以便在提交前预览 Enter 的效果。任何包含 / 的内容都是便签,因此 / quit 仍然归档为便签。

操作

鼠标

键盘(笔记聚焦时)

标记完成(熄灭)

悬停 → ✓

Ctrl+Enter

原地编辑

悬停 → ✎

Enter

暂存2小时/当天剩余时间(暂停——绝不更改截止日期)

悬停 → ◐ / Shift+点击

B / Shift+B(再次取消暂存)

释放已固定的笔记回到自动模式

悬停 → ⇱

R

删除

悬停 → ✕

Delete

移动(固定)

拖拽

—

取消拖拽

Esc

从任何位置新建笔记

Ctrl+Alt+N(全局)

完成归档/设置

输入框下方的 DONE / SETTINGS

Ctrl+, 打开设置

调整轨道宽度(280–420)

拖拽其内边缘,或通过设置中的滑块

移动窗口

拖拽顶部不可见的 28px 条

退出

托盘图标 → 退出 Pyre

在导航栏中输入 quit 或 exit → Enter

与代理对话

TALK 按钮打开对话栏

在导航栏中输入 > 你的消息 → Enter

放置规则。 自动笔记按热度排序(最热的在左上角),然后是有日期的优先于无日期的,最后是最新的。你拖拽过的笔记会永远占据其单元格——火焰会绕过它,而不会将其驱逐。如果固定的笔记在下方着火,右下角会出现一个余烬指示器;点击可滚动到那里。

状态。 冷 · 预热 · 到期 · 燃烧 · 危急 · 逾期 · 燃尽 · 暂存。

数据存储位置

一个 JSON 文件,按以下顺序解析(第一个匹配项生效):

  1. PYRE_DATA 环境变量 → 该文件夹

  2. 可执行文件旁的 pyre.portable 标记 → .\pyre-data\

  3. 可执行文件旁的 .\pyre-data\ 已存在且可写 → 便携模式

  4. %USERPROFILE%\.stickyburn\ → 安装模式

notes.json 和 settings.json 存储在同一目录。设置 → 数据 会显示实际解析的路径(如果便携位置不可写并回退,则会显示警告)。可写性通过实际的临时文件写入测试,因为 U 盘和锁定的公司文件夹可能会谎报。

文件格式即为契约(参见 src/shared/types.ts):

{
  "version": 2,
  "notes": [{
    "id": "n_8f2k4a", "topic": "WINWATER", "comment": "Send BEP to Powell",
    "due": "2026-08-21T22:00:00.000Z",          // ISO UTC or null
    "created": "…", "updated": "…", "done": false, "doneAt": null,
    "bankedUntil": null, "bankedAt": null,      // snooze; never touches due
    "placement": { "mode": "auto" },            // or { "mode":"manual", "col":0, "row":2, "pinnedAt":"…" }
    "source": "user"                            // "agent" draws a 2px tick on the left edge
  }],
  "messages": [{                                // optional; the talk lane
    "id": "m_4k2p9a", "role": "user",           // "user" | "agent"
    "text": "move winwater to friday",
    "created": "…", "read": false               // read = the OTHER side has seen it
  }]
}

burn、warmth 和 state 从不存储——它们每 tick 由 due 和时钟推导得出。

AI 访问

两条路径,一个文件,一个监视器。

1. 直接编辑文件

将 Claude Code(或任何脚本)指向 notes.json。写入内容约 300 毫秒内被拾取并动画显示到墙上;应用自身的写入是原子性的(.tmp → fsync → 重命名),因此永远不会读取到半写状态的文件。将 src/shared/types.ts 作为模式提供给代理。

2. 内置 MCP 服务器——两种传输方式,同一套工具

工具:list_notes(包含计算出的 burn/state/slot)· add_note · update_note · move_note · release_note · bank_note · snuff_note · restore_note · delete_note · parse_line(模拟测试语法)· get_grid(占用地图 + 首个空闲单元格)· list_messages 和 send_message(对话栏)。

对话栏采用拉取模式。 当用户输入 > … 时,内容会被写入文件并显示为等待状态,但没有任何推送机制——代理只有在调用 list_messages 时才能看到它。在会话开始时轮询,或每当用户提及 Pyre 时轮询。应用和 MCP 服务器共享 src/shared/heat.ts,因此代理的 burn 值与屏幕显示完全一致。

设置 → AI 访问 会显示两种配置,包含正确的路径/端口和复制按钮。

(a) 本地 HTTP 端点——在任何构建版本中,打开轨道即可使用,无需 Node

运行中的应用在 http://127.0.0.1:41777/mcp 提供可流式 HTTP MCP 服务(端口可在设置中调整;0 表示关闭;仅限回环地址)。

{ "mcpServers": { "pyre": { "url": "http://127.0.0.1:41777/mcp" } } }

客户端

方法

Cursor

粘贴到 .cursor/mcp.json(项目级)或 %USERPROFILE%\.cursor\mcp.json(全局)—— Cursor 设置 → MCP

Claude Code

claude mcp add --transport http pyre http://127.0.0.1:41777/mcp

Claude Desktop

目前仅支持 stdio——使用 (b),或者如果你有 Node,可用 npx mcp-remote http://127.0.0.1:41777/mcp 进行桥接

(b) stdio——Pyre.exe --mcp,即使轨道关闭也能工作

{ "mcpServers": { "pyre": { "command": "C:\\path\\to\\Pyre.exe", "args": ["--mcp"] } } }

客户端

位置

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json(设置 → 开发者 → 编辑配置)

Cursor

.cursor/mcp.json / ~/.cursor/mcp.json

Claude Code

claude mcp add pyre -- "C:\path\to\Pyre.exe" --mcp

哪个 Pyre.exe? 安装版和便携文件夹版(Pyre-x.y.z-win.zip,解压到任意位置)是真正的二进制文件,支持 stdio MCP。单文件便携版 Pyre.exe 是一个 NSIS 启动器,它解压并启动真实应用,但不传递 stdio,因此 --mcp 无法通过它工作——设置会检测到这一情况,仅显示 HTTP 配置。从源码运行:command = node_modules\electron\dist\electron.exe,args = ["<repo path>", "--mcp"]。

无障碍性

prefers-reduced-motion 提供一个完整的替代呈现方案(无过渡、无余烬、无闪烁——前置位置、光晕和倒计时负责阅读)。每个笔记均可通过 Tab 键访问,所有操作均可通过键盘完成;无障碍名称类似 “WINWATER。发送 BEP 给 Powell。6 分钟后到期。已固定到第 1 列第 3 行。”

仓库布局

src/main       Electron main: window, tray, hotkey, paths, store (atomic + watcher), IPC, --mcp branch
src/preload    contextBridge → window.pyre
src/renderer   plain TS + CSS: grid, drag, composer, sheets, embers  (styles/burn-system.css is verbatim, do not edit)
src/shared     heat.ts (THE burn curve) · grid.ts (THE placement rule) · parse.ts (THE grammar) · types · migrate
src/mcp        stdio MCP server (imports the shared modules + the store)
test           vitest: pyre (spec), parse, store, mcp
reference/     the approved design files, kept for comparison
scripts/       dev helpers (debug driver client, icon)

开发笔记

  • PYRE_DEBUG=1 记录存储/监视器活动。PYRE_DEVTOOLS=1 打开开发者工具。PYRE_DEBUG_DRIVER=<dir> 启用文件驱动的调试驱动程序(scripts/drive.mjs),可截图和脚本化实时窗口。

  • 在 Electron 外部运行渲染器(npx vite --config vite.config.mts)会安装一个内存中的模拟桥接器,包含各种状态的示例笔记——便于对照 reference/note-example.html 进行视觉检查。

  • 关于规范中未决项目的决定:采用 9A 燃尽(而非 9B 停滞);保留 24 小时环境温度;固定的笔记永不自动释放;无熄灭确认;通过设置进行单一显示。

  • reserveScreenSpace 将轨道注册为 Windows 应用栏(通过 koffi → SHAppBarMessage),因此最大化窗口会停在轨道边缘。有两件事比较麻烦,如果你接触它值得了解:预留区域必须从显示器矩形计算,而不是工作区(工作区已经排除了你自己的应用栏,所以会跨越屏幕),并且必须使用物理像素,而非 Electron 的 DIP。整个路径已被封装,因此 FFI 失败仅意味着该设置无效。

  • 对话栏消息存储在同一个 notes.json 的 messages 数组中(可选),因此同一个监视器可同时提供两者。没有该键的文件仍然有效,直到首次使用对话栏时才会添加该键。

  • 对已发布规范的一个修正:spec/heat.ts 将暂存笔记的燃烧值冻结在 bankedUntil(未来)时刻,并导致自身测试失败;现在记录携带 bankedAt,前端冻结在暂存开始时的燃烧值。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.
    5 npm
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables creating, reading, updating, and deleting sticky notes with persistent text file storage through the MCP protocol.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A local MCP server that provides AI agents with persistent sticky-note memory, storing Markdown notes on disk and offering tools for creating, reading, updating, deleting, searching, and listing notes across sessions.
    13
    MIT