Pyre MCP Server
Pyre — brennende Desktop-Notizen
Eine rahmenlose, transparente, immer im Vordergrund liegende Leiste aus quadratischen Papiernotizen am Rand Ihres Monitors. Eine Notiz mit einem Fälligkeitsdatum brennt in den letzten zwei Stunden von unten weg. Ziehen Sie Notizen überall hin; brennende beanspruchen die obere linke Ecke, es sei denn, Sie haben sie selbst verschoben. Alles ist von einem KI-Agenten lesbar und beschreibbar. Ein tragbares Pyre.exe.
Bauvertrag: CLAUDE.md. Designdateien: reference/.
Ausführen
Portabel: Legen Sie Pyre.exe irgendwo hin und doppelklicken Sie darauf. Keine Installation, kein Administrator. Um die Daten neben der EXE zu behalten (USB-Stick, synchronisierter Ordner), erstellen Sie eine leere Datei namens pyre.portable daneben — oder erstellen Sie einfach einen pyre-data/-Ordner daneben.
Installiert: Pyre-Setup-x.y.z.exe fügt einen Startmenüeintrag hinzu. Daten befinden sich in %USERPROFILE%\.stickyburn\.
Aus dem Quellcode:
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)Verwendung
Geben Sie in das Eingabefeld ein: topic / comment / due dann Enter.
winwater / send BEP to Powell / fri 9am/ just a thought→ wird unter UNSORTED abgelegtFälligkeitsformate:
todaytonighttomorrowfri3d2w4h8/212026-08-218/21 3pmfri 9am3pm. Standardzeit 17:00 (Einstellungen).Drei Chips zeigen die Analyse live an. Der Fälligkeits-Chip zeigt immer das aufgelöste Datum, nie das, was Sie eingegeben haben. Wenn das letzte Segment kein Datum ist, bleibt es Teil des Kommentars.
Talk-Leiste. Eine Zeile, die mit
>beginnt, ist eine Nachricht an den verbundenen Agenten und keine Notiz:> move winwater to friday. Sie erscheint in einer Leiste unter dem Composer, der Agent liest sie mitlist_messagesund antwortet mitsend_message.>hat Vorrang vor allem, sodass eine Nachricht frei Schrägstriche enthalten darf.Befehlszeile. Eine Zeile ohne
/, diequit(oderexit) lautet, schließt die App – die Chip-Reihe wechselt zu einem einzelnenQUIT PYRE-Chip, damit Sie sehen, was Enter tun wird, bevor Sie sich festlegen. Alles, was ein/enthält, ist immer eine Notiz, also wird/ quittrotzdem als Notiz abgelegt.
Aktion | Maus | Tastatur (Notiz fokussiert) |
Als erledigt markieren (snuff) | hover → ✓ |
|
Direkt bearbeiten | hover → ✎ |
|
Zurückstellen 2h / Rest des Tages (Snooze – ändert nie das Fälligkeitsdatum) | hover → ◐ / |
|
Eine gepinnte Notiz wieder auf automatisch setzen | hover → ⇱ |
|
Löschen | hover → ✕ |
|
Verschieben (anheften) | drag it | — |
Ziehen abbrechen |
| |
Neue Notiz von überall |
| |
Erledigt-Archiv / Einstellungen |
|
|
Leiste in der Größe ändern (280–420) | drag its inner edge, or the slider in Settings | |
Fenster verschieben | drag the invisible 28px strip along its top | |
Beenden | tray icon → Pyre beenden | type |
Mit dem Agenten sprechen |
| type |
Platzierungsregel. Automatische Notizen werden nach Hitze sortiert (heißeste oben links), dann datierte über undatierte, dann neueste. Eine Notiz, die Sie gezogen haben, behält ihre Zelle für immer – ein Feuer fließt um sie herum, vertreibt sie nie. Wenn eine gepinnte Notiz unterhalb der Falte Feuer fängt, erscheint unten rechts ein Glutpunkt; klicken Sie darauf, um dorthin zu scrollen.
Zustände. cold · warming (Fälligkeit gesetzt, > 2h entfernt; das Feuerlicht steigt über die letzten 24h) · due · burning · critical · overdue · gone-out (> 7 Tage überfällig) · banked.
Wo die Daten sind
Eine JSON-Datei, die in dieser Reihenfolge aufgelöst wird (erster Treffer gewinnt):
PYRE_DATA-Umgebungsvariable → dieser Ordnerpyre.portable-Markierung neben der EXE →.\pyre-data\.\pyre-data\neben der EXE existiert bereits und ist beschreibbar → portabel%USERPROFILE%\.stickyburn\→ installiert
notes.json und settings.json leben dort zusammen. Settings → Data zeigt den genauen aufgelösten Pfad (und warnt, wenn ein portabler Speicherort nicht beschreibbar war und zurückgefallen wurde). Die Beschreibbarkeit wird mit einem echten Temp-Datei-Schreibvorgang getestet, weil USB-Sticks und gesperrte Unternehmensordner lügen.
Das Dateiformat ist der Vertrag (siehe 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 und state werden nie gespeichert – sie werden aus due und der Uhr bei jedem Takt abgeleitet.
KI-Zugriff
Zwei Wege, eine Datei, ein Beobachter.
1. Einfach die Datei bearbeiten
Richten Sie Claude Code (oder ein beliebiges Skript) auf notes.json. Schreibvorgänge werden innerhalb von ~300 ms erkannt und animieren an die Wand; die eigenen Schreibvorgänge der App sind atomar (.tmp → fsync → umbenennen), sodass eine halb geschriebene Datei nie gelesen wird. Geben Sie dem Agenten src/shared/types.ts als Schema.
2. Integrierter MCP-Server – zwei Transporte, gleiche Werkzeuge
Werkzeuge: list_notes (mit berechnetem burn/state/slot) · add_note · update_note · move_note · release_note · bank_note · snuff_note · restore_note · delete_note · parse_line (Probelauf der Grammatik) · get_grid (Belegungskarte + erste freie Zelle) · list_messages und send_message (die Talk-Leiste).
Die Talk-Leiste ist pull-basiert. Wenn der Benutzer > … eingibt, wird es in die Datei geschrieben und als wartend angezeigt, aber nichts schiebt es zu Ihnen – ein Agent sieht es, wenn er list_messages aufruft. Fragen Sie das zu Beginn einer Sitzung ab, oder immer wenn der Benutzer Pyre erwähnt. Die App und der MCP-Server teilen sich src/shared/heat.ts, sodass der burn eines Agenten genau das ist, was auf dem Bildschirm zu sehen ist.
Settings → KI-Zugriff zeigt beide Konfigurationen mit dem korrekten Pfad/Port und COPY-Schaltflächen.
(a) Lokaler HTTP-Endpunkt – funktioniert aus jedem Build, während die Leiste geöffnet ist, kein Node erforderlich
Die laufende App bietet streamable-HTTP MCP unter http://127.0.0.1:41777/mcp (Port in Settings; 0 = aus; nur Loopback).
{ "mcpServers": { "pyre": { "url": "http://127.0.0.1:41777/mcp" } } }Client | Wie |
Cursor | einfügen in |
Claude Code |
|
Claude Desktop | stdio nur heute – verwenden Sie (b), oder überbrücken Sie mit |
(b) stdio — Pyre.exe --mcp, funktioniert auch bei geschlossener Leiste
{ "mcpServers": { "pyre": { "command": "C:\\path\\to\\Pyre.exe", "args": ["--mcp"] } } }Client | Wo |
Claude Desktop |
|
Cursor |
|
Claude Code |
|
Welches Pyre.exe? Die Installations-Build und die Portable-Ordner-Build (
Pyre-x.y.z-win.zip, überall entpacken) sind die echte Binärdatei und antworten auf stdio MCP. Das einzelne tragbarePyre.exeist ein NSIS-Launcher, der die echte App extrahiert und startet, ohne stdio durchzuleiten, daher kann--mcpnicht darüber funktionieren – Settings erkennt dies und zeigt nur die HTTP-Konfiguration. Ausführung aus dem Quellcode:command=node_modules\electron\dist\electron.exe,args=["<repo path>", "--mcp"].
Barrierefreiheit
prefers-reduced-motion bietet eine vollständig alternative Darstellung (keine Übergänge, keine Glut, kein Flackern – vordere Position, Leuchten und der Countdown tragen die Lesbarkeit). Jede Notiz ist per Tab erreichbar mit allen Aktionen über Tasten; der zugängliche Name lautet etwa "WINWATER. Send BEP to Powell. Due in 6 minutes. Pinned to column 1, row 3."
Layout des Repositorys
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)Entwicklerhinweise
PYRE_DEBUG=1protokolliert Store/Watcher-Aktivität.PYRE_DEVTOOLS=1öffnet DevTools.PYRE_DEBUG_DRIVER=<dir>aktiviert einen dateigesteuerten Debug-Treiber (scripts/drive.mjs), der Screenshots machen und das Live-Fenster skripten kann.Das Ausführen des Renderers außerhalb von Electron (
npx vite --config vite.config.mts) installiert eine In-Memory-Mock-Bridge mit Beispielnotizen in jedem Zustand – praktisch für visuelle Überprüfungen mitreference/note-example.html.Entscheidungen zu den offenen Punkten der Spezifikation: 9A gone-out (nicht 9B stalled); 24h ambient warmth beibehalten; eine gepinnte Notiz wird nie automatisch freigegeben; keine Snuff-Bestätigung; einzelne Anzeige über Einstellungen.
reserveScreenSpaceregistriert die Leiste als Windows AppBar (über koffi →SHAppBarMessage), sodass maximierte Fenster an ihrer Kante stoppen. Zwei Dinge machen es knifflig und sind wissenswert, wenn Sie es anfassen: Die Reservierung muss vom Monitor-Rechteck berechnet werden, nicht vom Arbeitsbereich (der Ihre eigene Leiste bereits ausschließt, sodass sie über den Bildschirm wandert), und sie muss in physikalischen Pixeln erfolgen, nicht in Electrons DIPs. Der gesamte Pfad ist umschlossen, sodass ein FFI-Fehler nur bedeutet, dass die Einstellung nichts bewirkt.Talk-Leiste-Nachrichten leben in derselben
notes.jsonunter einem optionalenmessages-Array, sodass der eine Watcher beides liefert. Eine Datei ohne den Schlüssel bleibt gültig und erhält ihn nur, wenn die Leiste zum ersten Mal verwendet wird.Eine Korrektur zur ausgelieferten Spezifikation:
spec/heat.tsfrierte den Burn einer zurückgestellten Notiz abbankedUntil(der Zukunft) ein und bestand seinen eigenen Test nicht; der Datensatz trägt jetztbankedAtund die Front friert bei dem Burn ein, den sie beim Beginn der Zurückstellung hatte.
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