Pyre MCP Server
Pyre — 타는 데스크톱 메모
모니터 가장자리에 있는 프레임 없고 투명하며 항상 위에 있는 정사각형 종이 메모 레일입니다. 마감 기한이 있는 메모는 마지막 2시간 동안 아래쪽 가장자리부터 타들어갑니다. 메모를 아무 곳이나 드래그할 수 있습니다. 타는 메모는 직접 옮기지 않는 한 왼쪽 상단을 차지합니다. 모든 것은 AI 에이전트가 읽고 쓸 수 있습니다. 하나의 휴대용 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)사용하기
입력 상자에 입력: 주제 / 댓글 / 마감일 그런 다음 Enter.
winwater / send BEP to Powell / fri 9am/ 그냥 생각→ 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 종료 | 바에 |
에이전트와 대화 |
| 바에 |
배치 규칙. 자동 메모는 열기순(가장 뜨거운 것이 왼쪽 상단)으로 정렬되며, 날짜가 있는 것이 없는 것보다 위에, 가장 최신 것이 위에 옵니다. 사용자가 드래그한 메모는 영원히 해당 셀을 유지합니다 — 불은 그 주위를 흐르며, 절대 밀어내지 않습니다. 고정된 메모가 접힌 부분 아래에서 불이 붙으면 오른쪽 아래에 불씨 표시가 나타납니다. 클릭하면 해당 위치로 스크롤됩니다.
상태. cold · warming (마감일 설정, 2시간 이상 남음; 마지막 24시간 동안 불빛이 증가) · due · burning · critical · overdue · gone-out (마감일 초과 7일 이상) · banked.
데이터 위치
하나의 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 접근
두 가지 경로, 하나의 파일, 하나의 감시자.
1. 파일을 직접 편집
Claude Code (또는 모든 스크립트)를 notes.json에 지정하세요. 쓰기는 약 300ms 이내에 감지되어 벽에 애니메이션으로 표시됩니다. 앱 자체의 쓰기는 원자적입니다 (.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 MCP를 http://127.0.0.1:41777/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. 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 gone-out (9B stalled 아님); 24시간 주변 온기 유지; 고정된 메모는 절대 자동 해제되지 않음; snuff 확인 없음; 설정을 통한 단일 디스플레이.
reserveScreenSpace는 레일을 Windows AppBar로 등록합니다 (koffi →SHAppBarMessage). 따라서 최대화된 창이 가장자리에서 멈춥니다. 두 가지가 까다롭게 만들며 만지면 알아둘 가치가 있습니다: 예약은 모니터 사각형에서 계산해야 합니다 (작업 영역은 이미 자신의 바를 제외하므로 화면을 가로지르게 됨), 그리고 물리적 픽셀이어야 하며 Electron의 DIP가 아닙니다. 전체 경로가 래핑되어 FFI 실패는 설정이 아무것도 하지 않음을 의미합니다.대화 레인 메시지는 동일한
notes.json에 선택적messages배열 아래에 있으므로 하나의 감시자가 둘 다 전달합니다. 키가 없는 파일은 유효하며 레인이 처음 사용될 때만 키를 얻습니다.출시된 사양에 대한 한 가지 수정:
spec/heat.ts는 banked 메모의 burn을bankedUntil(미래)로 고정하고 자체 테스트에 실패했습니다. 레코드는 이제bankedAt을 가지며 프론트는 bank가 시작될 때 보유한 burn으로 고정됩니다.
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