Pyre MCP Server
Pyre — горящие заметки на рабочем столе
Безрамная, прозрачная, всегда поверх окон панель из квадратных бумажных заметок на краю монитора. Заметка с дедлайном сгорает снизу в течение последних двух часов. Перетаскивайте заметки куда угодно; горящие занимают верхний левый угол, если вы не переместили их сами. Всё читаемо и записываемо ИИ-агентом. Один портативный Pyre.exe.
Контракт сборки: CLAUDE.md. Файлы дизайна: reference/.
Запуск
Портативный: поместите Pyre.exe куда угодно и дважды щёлкните. Никакой установки, никаких прав администратора. Чтобы данные хранились рядом с exe (USB-флешка, синхронизированная папка), создайте пустой файл с именем 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
Использование
Введите в поле ввода: topic / comment / due затем 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 | введите |
Разговор с агентом | кнопка | введите |
Правило размещения. Автоматические заметки сортируются по нагреву (самые горячие сверху слева), затем датированные выше недатированных, затем новые. Заметка, которую вы перетащили, занимает свою ячейку навсегда — огонь будет обтекать её, никогда не вытесняя. Если закреплённая заметка загорится ниже сгиба, в правом нижнем углу появляется точка-уголёк; нажмите на неё, чтобы прокрутить туда.
Состояния. холодная · прогревается (срок установлен, > 2ч; свечение разгорается за последние 24ч) · срок · горит · критическое · просрочено · погасшая (> 7 дней просрочки) · отложенная.
Где находятся данные
Один JSON-файл, разрешаемый в таком порядке (первый совпавший выигрывает):
Переменная окружения
PYRE_DATA→ эта папкаМаркер
pyre.portableрядом с exe →.\pyre-data\.\pyre-data\рядом с exe уже существует и доступно для записи → портативный%USERPROFILE%\.stickyburn\→ установленный
notes.json и settings.json находятся вместе там. Настройки → Данные показывает точный разрешённый путь (и предупреждает, если портативное расположение не было доступно для записи и произошёл откат). Доступность для записи проверяется реальной записью временного файла, потому что USB-флешки и заблокированные корпоративные папки могут врать.
Формат файла — это контракт (см. 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 никогда не сохраняются — они вычисляются из due и часов каждый тик.
Доступ ИИ
Два пути, один файл, один наблюдатель.
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 (канал разговора).
Канал разговора работает по принципу pull. Когда пользователь вводит > …, это записывается в файл и отображается как ожидающее, но ничего не отправляется вам — агент видит это, когда вызывает list_messages. Опрашивайте это в начале сеанса или всякий раз, когда пользователь упоминает Pyre. Приложение и MCP-сервер используют общий src/shared/heat.ts, поэтому burn агента в точности соответствует тому, что на экране.
Настройки → Доступ ИИ показывает обе конфигурации с правильным путём/портом и кнопками КОПИРОВАТЬ.
(а) Локальная HTTP-конечная точка — работает из любой сборки, пока панель открыта, Node не требуется
Запущенное приложение предоставляет streamable-HTTP MCP по адресу http://127.0.0.1:41777/mcp (порт в Настройках; 0 = выкл; только loopback).
{ "mcpServers": { "pyre": { "url": "http://127.0.0.1:41777/mcp" } } }Клиент | Как |
Cursor | вставьте в |
Claude Code |
|
Claude Desktop | только stdio на сегодня — используйте (б), или мост с |
(б) 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. Send BEP to Powell. Due in 6 minutes. Pinned to column 1, row 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открывает DevTools.PYRE_DEBUG_DRIVER=<dir>включает файловый отладочный драйвер (scripts/drive.mjs), который может делать снимки экрана и скриптовать активное окно.Запуск рендерера вне Electron (
npx vite --config vite.config.mts) устанавливает в памяти мост-заглушку с примерами заметок во всех состояниях — удобно для визуальной проверки поreference/note-example.html.Решения по открытым пунктам спецификации: 9A погасшая (не 9B застопоренная); 24-часовое фоновое тепло сохранено; закреплённая заметка никогда не освобождается автоматически; без подтверждения тушения; один дисплей через настройки.
reserveScreenSpaceрегистрирует панель как Windows AppBar (через koffi →SHAppBarMessage), поэтому развёрнутые окна останавливаются у её края. Две вещи делают это сложным и стоит знать, если вы с этим работаете: резервирование должно вычисляться из прямоугольника монитора, а не рабочей области (которая уже исключает вашу собственную панель, так что она смещается по экрану), и оно должно быть в физических пикселях, а не в DIP-ах Electron. Весь путь обёрнут, так что неудача FFI означает только то, что настройка ничего не делает.Сообщения канала разговора живут в том же
notes.jsonв необязательном массивеmessages, поэтому один наблюдатель доставляет оба. Файл без ключа остаётся валидным и получает его только при первом использовании канала.Одно исправление к shipped-спецификации:
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