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 文件夹截止时间格式:
todaytonighttomorrowfri3d2w4h8/212026-08-218/21 3pmfri 9am3pm。默认时间 17:00(可在设置中修改)。三个芯片实时预览解析结果。截止时间芯片始终显示解析后的日期,而非你输入的内容。如果最后一段不是日期,则它仍属于备注部分。
对话栏。 以
>开头的行是发送给连接代理的消息,而非便签:> move winwater to friday。该消息会出现在编辑器下方的栏中,代理通过list_messages读取,并通过send_message回复。>优先级高于一切,因此消息中可以自由包含斜杠。导航栏命令。 没有
/且内容为quit(或exit)的行会关闭应用——芯片行会切换为单个QUIT PYRE芯片,以便在提交前预览 Enter 的效果。任何包含/的内容都是便签,因此/ quit仍然归档为便签。
操作 | 鼠标 | 键盘(笔记聚焦时) |
标记完成(熄灭) | 悬停 → ✓ |
|
原地编辑 | 悬停 → ✎ |
|
暂存2小时/当天剩余时间(暂停——绝不更改截止日期) | 悬停 → ◐ / |
|
释放已固定的笔记回到自动模式 | 悬停 → ⇱ |
|
删除 | 悬停 → ✕ |
|
移动(固定) | 拖拽 | — |
取消拖拽 |
| |
从任何位置新建笔记 |
| |
完成归档/设置 | 输入框下方的 |
|
调整轨道宽度(280–420) | 拖拽其内边缘,或通过设置中的滑块 | |
移动窗口 | 拖拽顶部不可见的 28px 条 | |
退出 | 托盘图标 → 退出 Pyre | 在导航栏中输入 |
与代理对话 |
| 在导航栏中输入 |
放置规则。 自动笔记按热度排序(最热的在左上角),然后是有日期的优先于无日期的,最后是最新的。你拖拽过的笔记会永远占据其单元格——火焰会绕过它,而不会将其驱逐。如果固定的笔记在下方着火,右下角会出现一个余烬指示器;点击可滚动到那里。
状态。 冷 · 预热 · 到期 · 燃烧 · 危急 · 逾期 · 燃尽 · 暂存。
数据存储位置
一个 JSON 文件,按以下顺序解析(第一个匹配项生效):
PYRE_DATA环境变量 → 该文件夹可执行文件旁的
pyre.portable标记 →.\pyre-data\可执行文件旁的
.\pyre-data\已存在且可写 → 便携模式%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 | 粘贴到 |
Claude Code |
|
Claude Desktop | 目前仅支持 stdio——使用 (b),或者如果你有 Node,可用 |
(b) stdio——Pyre.exe --mcp,即使轨道关闭也能工作
{ "mcpServers": { "pyre": { "command": "C:\\path\\to\\Pyre.exe", "args": ["--mcp"] } } }客户端 | 位置 |
Claude Desktop |
|
Cursor |
|
Claude Code |
|
哪个 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,前端冻结在暂存开始时的燃烧值。
This server cannot be deployed
Maintenance
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to create, read, and summarize sticky notes stored in a local text file through MCP tools, resources, and prompts.-
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.5 npm2MIT
- AlicenseAqualityDmaintenanceEnables creating, reading, updating, and deleting sticky notes with persistent text file storage through the MCP protocol.4MIT
- AlicenseAqualityBmaintenanceA 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.13MIT