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 文件夹截止时间格式:
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 installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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