Pyre MCP Server
Pyre — 燃え尽きるデスクトップメモ
モニターの端に表示される、枠なし・透明・常に最前面の正方形の紙メモのレール。期限のあるメモは、残り2時間で下端から燃え尽きていきます。メモはどこにでもドラッグ可能。燃えているメモは、自分で移動しない限り左上に固定されます。すべてのメモはAIエージェントから読み取り・書き込み可能。単一のポータブル Pyre.exe。
ビルド契約: CLAUDE.md。デザインファイル: reference/。
実行方法
ポータブル: Pyre.exe を任意の場所に置いてダブルクリック。インストール不要、管理者権限不要。データをexeの隣に置きたい場合(USBメモリや同期フォルダ)、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(設定で変更可)。3つのチップが解析結果をライブプレビューします。期限チップは常に 解決された日付 を表示し、入力した文字列は表示されません。最後のセグメントが日付でない場合は、コメントの一部として残ります。
トークレーン。
>で始まる行は、メモではなく接続されたエージェントへのメッセージとして扱われます:> move winwater to friday。これはコンポーザーの下のレーンに表示され、エージェントはlist_messagesで読み取り、send_messageで応答します。>はすべてに優先するため、メッセージにはスラッシュを自由に含めることができます。バーコマンド。
/を含まない行でquit(またはexit)と入力するとアプリが閉じます — チップ行が単一のQUIT PYREチップに変わり、実行前に何が起こるか確認できます。/を含むものは常にメモとして扱われるため、/ quitでもメモとして保存されます。
アクション | マウス | キーボード(メモにフォーカス時) |
完了(消火) | ホバー → ✓ |
|
その場で編集 | ホバー → ✎ |
|
2時間/残り時間を保留(スヌーズ — 期限は変更されません) | ホバー → ◐ / |
|
固定されたメモを自動配置に戻す | ホバー → ⇱ |
|
削除 | ホバー → ✕ |
|
移動(固定) | ドラッグ | — |
ドラッグキャンセル |
| |
どこからでも新規メモ |
| |
完了アーカイブ/設定 | 入力ボックス下の |
|
レールの幅を変更(280–420) | 内側の端をドラッグ、または設定のスライダー | |
ウィンドウを移動 | 上部の見えない28pxのストリップをドラッグ | |
終了 | トレイアイコン → Quit Pyre | バーに |
エージェントと会話 |
| バーに |
配置ルール。 自動メモは熱順(最も熱いものが左上)、次に期限ありが期限なしより上、新しいものが上に並びます。ドラッグしたメモはそのセルに永久に留まり、火はその周りを流れ、追い出すことはありません。固定されたメモが折り返しより下で燃えている場合、右下に炭のピップが表示され、クリックするとそこにスクロールします。
状態。 cold · warming(期限設定済み、残り2時間以上;最後の24時間で火の光が徐々に強まる) · due · burning · critical · overdue · gone-out(期限超過7日以上) · banked。
データの保存場所
1つのJSONファイル。以下の順序で解決されます(最初に見つかったものが優先):
PYRE_DATA環境変数 → そのフォルダexeの隣に
pyre.portableマーカー →.\pyre-data\exeの隣に
.\pyre-data\が既に存在し書き込み可能 → ポータブル%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 と時計から毎ティック導出されます。
AIアクセス
2つのパス、1つのファイル、1つのウォッチャー。
1. ファイルを直接編集
Claude Code(または任意のスクリプト)で notes.json を指定します。書き込みは約300ms以内に検出され、壁にアニメーション表示されます。アプリ自身の書き込みはアトミック(.tmp → fsync → rename)なので、中途半端なファイルが読み込まれることはありません。エージェントには src/shared/types.ts をスキーマとして渡してください。
2. 組み込みMCPサーバー — 2つのトランスポート、同じツール
ツール: 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. Send BEP to 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でDevToolsを開く。PYRE_DEBUG_DRIVER=<dir>でファイル駆動のデバッグドライバー(scripts/drive.mjs)を有効化。スクリーンショットやライブウィンドウのスクリプト操作が可能。Electron外でレンダラーを実行する場合(
npx vite --config vite.config.mts)、すべての状態のサンプルメモを持つインメモリモックブリッジがインストールされます —reference/note-example.htmlに対する視覚チェックに便利。仕様の未決定項目に対する決定: 9A gone-out(9B stalledではない); 24時間の周囲暖かさを維持; 固定されたメモは自動解放されない; 消火確認なし; 設定による単一ディスプレイ。
reserveScreenSpaceはレールをWindows AppBarとして登録します(koffi →SHAppBarMessage)。これにより、最大化されたウィンドウがレールの端で停止します。2つの点が扱いを難しくしており、触る場合は知っておく価値があります: 予約はモニター矩形から計算する必要がある(ワークエリアは既に自身のバーを除外しているため、画面を横切って移動する)、そして物理ピクセルで指定する必要がある(ElectronのDIPではない)。パス全体がラップされているため、FFIの失敗は設定が何もしないことを意味するだけです。トークレーンのメッセージは同じ
notes.jsonのオプションのmessages配列に保存されるため、1つのウォッチャーが両方を配信します。キーがないファイルは有効なままで、レーンが最初に使用されたときにのみキーが追加されます。出荷された仕様に対する1つの修正:
spec/heat.tsは、bankedメモのburnをbankedUntil(未来)で固定し、自身のテストに失敗していました。現在はレコードにbankedAtが含まれ、フロントはバンキング開始時のburnで固定されます。
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