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)

使用它

在输入框中输入:主题 / 备注 / 截止时间 然后按 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

在导航栏中输入 quitexit → Enter

与代理对话

TALK 按钮打开对话栏

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

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

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

数据存储位置

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

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

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

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

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

notes.jsonsettings.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
  }]
}

burnwarmthstate 从不存储——它们每 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_messagessend_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.exeargs = ["<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.jsonmessages 数组中(可选),因此同一个监视器可同时提供两者。没有该键的文件仍然有效,直到首次使用对话栏时才会添加该键。

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

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.

  • StremAI MCP: shared memory for AI coding agents. Connected agents can recall. OAuth + local stdio.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MothBlight-Git/pyre'

If you have feedback or need assistance with the MCP directory API, please join our Discord server