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)Использование
Введите в поле ввода: 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 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