Agent-Native Calendar
Agent-Native Google Calendar - manage events, sync, and public booking
제작자가 쓴 설명(영어 원문)
Recall past decisions and the notes your AI sessions cited, from a local markdown folder.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
LIBRARIAN_VAULT_PATH, LIBRARIAN_USER_LABEL필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"rutter": {
"command": "npx",
"args": [
"-y",
"rutter-memory"
],
"env": {
"LIBRARIAN_VAULT_PATH": "your-value",
"LIBRARIAN_USER_LABEL": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add rutter --env LIBRARIAN_VAULT_PATH=your-value --env LIBRARIAN_USER_LABEL=your-value -- npx -y rutter-memory실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"rutter": {
"command": "npx",
"args": [
"-y",
"rutter-memory"
],
"env": {
"LIBRARIAN_VAULT_PATH": "your-value",
"LIBRARIAN_USER_LABEL": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"rutter": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"rutter-memory"
],
"env": {
"LIBRARIAN_VAULT_PATH": "your-value",
"LIBRARIAN_USER_LABEL": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
LIBRARIAN_USER_LABEL env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 GitHub 계정 shinytoyrobots 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: LIBRARIAN_VAULT_PATH
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.0.0)은 4일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Agent-Native Calendar, Excel MCP Server, MCP Server for Excel
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Agent-Native Google Calendar - manage events, sync, and public booking
Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.
Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A personal memory layer for AI agents. One memory. Multiple agents. Yours.
The model isn't the memory. Your notes are. rutter recalls past decisions and the notes your AI session cited. The records are plain markdown in your own notes folder (in a _librarian/ folder beside the notes), not inside a model or a vendor's account.
It is an MCP (Model Context Protocol) server over that folder. As a session decides something, your client leaves one line about it. A hook (a script the client runs after each turn) stores that line, without rewriting it for style, in a dated file inside your notes folder, with the path and a content hash (a fingerprint of the note's contents) of each note it cited.
Weeks later you ask what you concluded, in the same AI tool or another one you have set up, and get the line back with its date and its notes. A note renamed without edits is followed by its hash. A reference rutter cannot place is shown as unresolved rather than dropped. A note changed in place is not flagged yet.
It suits people who keep markdown notes and are comfortable configuring an AI client. Start with docs/getting-started.md; Claude Code users can install the plugin in a few minutes. Everyone else installs from npm, where the package is rutter-memory (the name rutter there belongs to an unrelated library).
There is no model inside it. It is code plus storage, so the reasoning stays in your client.
The name is from the age of sail: a rutter was the logbook of the routes actually sailed, as against the map. The map records what is known. The rutter records what you did about it.
A personal tool, published as a reference implementation — not a supported product. Built for
one person's workflow and shared because the mechanism might be useful. No roadmap promises, no
support commitment, no guarantee the next commit won't move something you depend on. Fork it, take
the ideas, file an issue if you like. Please don't put anything load-bearing on top of it.
rutter keeps one set of records for Claude Code, Grok, Codex, Copilot CLI, Antigravity, and Muse Code. Each client writes its session summaries to the same notes folder. Each client reads them back through the same MCP server.
A decision you made in Codex on Tuesday is there when you ask Claude Code on Thursday, provided Codex wrote a line for it and its hook ran. You copy nothing between clients. This works because the memory is a folder of markdown files you own, not a feature inside one tool.
| You use | Follow | What it takes |
|---|---|---|
| Claude Code | Fast path for Claude Code | A few minutes; nothing to clone |
| Grok | Grok path | One npm install, a hook, and one grok mcp add |
| Codex | Codex path | One npm install, and a hook you trust |
| GitHub Copilot CLI | Copilot CLI path | One npm install, a hook, and an instructions file |
Antigravity CLI (agy) | Antigravity path | One npm install, a hook, and a rule file |
Muse Code (muse) | Muse Code path | One npm install and one installer run |
| Any other MCP (Model Context Protocol) client | Recall only, with npx | One config entry. Search and recall only: with no hook, nothing is captured |
| Claude Code, from a clone | From source | Eight steps (M1 to M8), starting with a record written by hand. For contributors |
Grok was verified on Linux only (known issues). The npm-only paths (Codex, Copilot CLI, Antigravity, Muse Code) were tested on a machine that also had Claude Code, so a clean machine is untested; see known issues.
Every client can read the memory once its MCP server is registered. Writing needs a hook that runs after each turn, and these six have one. Any other MCP client can read but not write, running the server through npx (recall only, with npx). The Antigravity row covers the agy command-line tool, not the Antigravity IDE.
Point every client at the same notes folder. Each sets it differently. The Claude Code plugin asks for it at install. Grok, Codex, and Copilot CLI read LIBRARIAN_VAULT_PATH from the shell that launches them. Antigravity's and Muse Code's installers take --vault. Each record notes which client wrote it, when the hook can tell (see *Known limitations*).
Your harness almost certainly does this already, after a fashion. Claude Code writes session recaps and infers preferences into a memory folder, then consolidates them over time — merging duplicates, dropping what looks stale.
Consolidation is a reasonable default. It is also the opposite of what this does.
Nothing here ever rewrites a stored line. Records are append-only, grouped by session when you read them, and a line is not rewritten for style on the way in: only a one-line normalization and a 2,000-character cut apply.
The second difference is the one that matters more. A summary on its own is not a record — it is an assertion. A summary plus the versioned state of the notes it cited is a record, because it gives you a fingerprint to compare against.
Neighboring approaches each do part of that second part. Architecture decision records capture the *what* and the *why* without pinning the version they applied to. Event-sourced logs timestamp events but rarely carry file-level provenance. Supply-chain provenance formats hash content properly, but they are built for auditors rather than for your next working session. So decisions drift quietly away from the code that produced them, and nothing announces it.
Here, every reference carries the content hash of the note as it stood when the line was captured. A renamed note is followed by exact hash match, and a note that cannot be placed is shown as unresolved instead of silently dropped. The stored hash also lets you compare a file against what it was then. Reporting a note that changed in place is not built yet.
Two smaller things follow from the design. The store is yours — markdown in your own notes directory, not a vendor's account or a tool's private folder, so it stays portable, greppable, git-committable, and readable if this project disappears. It is also why every client you use can write to and read from the same records. And because your client writes the summary while its context is still loaded, capture needs no second model call and no network call. The trade is that quality depends on your client honoring the style contract, set out in *What the server tells the client*.
None of this competes on retrieval. A capable agent reading a well-organized notes directory already retrieves well. This exists for the part an ephemeral session cannot be: memory across time.
/_librarian/sessions/ .md, referencing touched notes by content hash. The client is asked for one line per separable outcome rather than one per session — a working session usually leaves three or four — grouped back into a single account of that session when you read it. A line the same session already recorded is skipped (the exact rule is in docs/memory-of-use.md). Durable, git-committable, written by your client.git and never contacts a remote.librarian-search — ranked full-text search. Every result carries its path, type/status/created provenance, and a matching snippet. Multi-word queries are AND-matched, so "blue man group" finds notes with all three rather than any. A result you engaged before also carries a quiet prior-engagement note, additive only, never re-ranking.librarian-get-note — one note's full content, by path.librarian-recent — *"what was I working on lately?"* Sessions newest-first, with dates, project, and provenance; optional project filter, window in days, or count.librarian-recent on recency questions and librarian-search on "have I seen this?" questions before reading files directly, and to report recalled summaries in plain language — including entries written before the contract existed, which is the only way dense old records ever read clearly. No per-project client configuration._librarian/positions/ stay as your own history, which rutter no longer reads or changes. Why: docs/position-retirement-2026-11.md..gitignore, an exported .html, a file under _librarian/ itself) is live for as long as that file exists, whether or not it's an indexed markdown note. Rename a referenced note without touching its content and the next npm run reindex binds the old reference to its new path automatically — no heuristics, no similarity scoring, just an exact content-hash match — and librarian-recent / search enrichment quietly resolve through it. If reindex can't tell (the note was also edited, so no current note's hash matches; or more than one current note shares the hash), the reference renders explicitly as unresolved with its candidates on librarian-recent, and on search enrichment against any candidate note that happens to be a search result, and stays that way until you confirm it with npm run identity-confirm. A reference with no candidates at all (rename앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요