Context7
Up-to-date docs for AI agents
제작자가 쓴 설명(영어 원문)
Involuntary memory for agents: time, place, sound and IoT cues surface memories unasked
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
MADELEINE_DB, MADELEINE_TEXT_BACKEND필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"madeleine": {
"command": "uvx",
"args": [
"madeleine-mcp",
"serve"
],
"env": {
"MADELEINE_DB": "your-value",
"MADELEINE_TEXT_BACKEND": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add madeleine --env MADELEINE_DB=your-value --env MADELEINE_TEXT_BACKEND=your-value -- uvx madeleine-mcp serve실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"madeleine": {
"command": "uvx",
"args": [
"madeleine-mcp",
"serve"
],
"env": {
"MADELEINE_DB": "your-value",
"MADELEINE_TEXT_BACKEND": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"madeleine": {
"type": "stdio",
"command": "uvx",
"args": [
"madeleine-mcp",
"serve"
],
"env": {
"MADELEINE_DB": "your-value",
"MADELEINE_TEXT_BACKEND": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
MADELEINE_DB envMADELEINE_TEXT_BACKEND env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 fabianimv 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.2.0)은 그저께 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Context7, Codebase Memory, Exa
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Involuntary memory for AI agents. A place, an hour, a sound, a photo or a sensor reading brings back a related memory on its own, without the agent having to ask. It works the way the taste of a madeleine brought back Proust's childhood.
Local-first (SQLite) · MCP server + Python library · no telemetry
Most agent memory is *voluntary*: the agent decides to search, writes a query, and gets results. madeleine adds the other pathway. Every memory is stored with the sensory fingerprint present when it was encoded: where, when, what was said, seen or heard. Incoming cues from webhooks, phones, smart homes and wearables are matched against those fingerprints all the time. When enough channels line up, the memory is queued as an involuntary recollection, and the agent receives it with its next prompt. This is *encoding specificity* applied to agents (concepts).
# 1. See the whole loop, offline (nothing is downloaded, nothing leaves your machine)
uvx madeleine-mcp demo
The demo remembers three moments. Then a cue arrives that carries only a place and a time of day: 30 m from grandmother's house, on a Sunday afternoon. The matching memory surfaces by itself, is delivered through the MCP tool pending_recollections, and does not fire again for a repeated cue:
[madeleine 0.80 via geo+time] Sunday afternoons in grandmother's kitchen: lime-blossom tea and a madeleine (2019-04-14)
channel similarity geo=0.97, time=1.00; salience x1.16, age decay x0.70
# 2. Give Claude Code the tools
claude mcp add madeleine -- uvx madeleine-mcp serve
.claude/settings.json:{"hooks": {"UserPromptSubmit": [{"hooks": [
{"type": "command", "command": "uvx madeleine-mcp hook claude-code", "timeout": 10} ]}]}}
The hook works even if your client ignores MCP notifications. See examples/claude_code for options such as --sense-prompt, which treats what you type as a cue too.
The server is a standard stdio MCP server (uvx madeleine-mcp serve), so any MCP client can use the seven tools. Involuntary delivery on every prompt (step 3 above) is built for Claude Code; in other clients the agent receives recollections by calling pending_recollections, which the server's instructions ask it to do at the start of each turn.
Claude Desktop, Cursor, VS Code, OpenCode, Docker
Claude Desktop (claude_desktop_config.json) and Cursor (~/.cursor/mcp.json):
{"mcpServers": {"madeleine": {"command": "uvx", "args": ["madeleine-mcp", "serve"]}}}
VS Code (.vscode/mcp.json):
{"servers": {"madeleine": {"type": "stdio", "command": "uvx", "args": ["madeleine-mcp", "serve"]}}}
OpenCode (opencode.json):
{
"$schema": "https://opencode.ai/config.json", "mcp": {"madeleine": {"type": "local", "command": ["uvx", "madeleine-mcp", "serve"], "enabled": true}} }
Docker (memories persist in the madeleine-data volume):
docker build -t madeleine-mcp https://github.com/fabianimv/madeleine.git
docker run -i --rm -v madeleine-data:/data madeleine-mcp # stdio MCP server
Semantic text needs the `[text]` extra. The base install is small and offline. Without
the extra, text is matched *lexically* by a hashing embedder, so "car" and "automobile"
count as unrelated. For real sentence embeddings (this pulls in PyTorch):
`bash
claude mcp add madeleine -- uvx --from 'madeleine-mcp[text]' madeleine-mcp serve
`
Images (
[image], open_clip) and sound ([audio], LAION CLAP) are opt-in the same way.
[all]installs everything. Models download lazily on first use, never at import.
flowchart LR
subgraph Sources HA[Home Assistant] -->|webhook| HTTP IOS[iOS Shortcuts] -->|webhook| HTTP AG[Agent] -->|MCP tools| MCP end HTTP[HTTP API /cues] --> ENG MCP[MCP server] --> ENG subgraph ENG[engine] direction TB CH["channels adapter → embedder → similarity"] --> FU["fusion base · coverage · salience · decay"] FU --> RF{"push? threshold + refractory"} end ENG <--> DB[(SQLite + sqlite-vec)] RF -->|enqueue| Q[(recollection queue)] Q -->|drain| HOOK[Claude Code hook] Q -->|drain / notify| MCP
text, time (hour, weekday and season, all cyclical), geo (distance on the sphere), biometric, image, audio. smell is a documented stub for future e-noses.recall). *Push*: a cue arrives (sense, POST /cues) and memories that clear the threshold are queued without anyone asking.time (and biometric) can strengthen a match but never cause one.madeleine serve --transport http # REST + MCP (streamable HTTP at /mcp/) on 127.0.0.1:8765
curl -s localhost:8765/cues -H 'content-type: application/json' \ -d '{"lat": 48.30195, "lon": 1.24650, "signals": [{"channel": "text", "value": "smell of lime-blossom tea"}]}'
| Route | Purpose |
|---|---|
POST /cues | Generic cue: signals, at, geohash or lat/lon, tags, source |
POST /cues/{generic,home_assistant,ios_shortcuts} | Payloads straight from those tools (examples) |
POST /memories, POST /recall, GET/PATCH/DELETE /memories/{id} | Same as the MCP tools |
GET /recollections/pending · POST /recollections/drain | Peek / take queued involuntary recollections |
Ready-made integrations: Home Assistant (arriving home, media starts playing, wearable sensors), iOS Shortcuts ("Arrive at location" personal automation), curl.
MCP surface:
remember, recall, sense, pending_recollections, get_memory, update_memory, forget.recollections://pending, with resources/updated notifications when something surfaces. These notifications also work across processes that share the database.~/.madeleine/madeleine.db, owner-only permissions). There is no telemetry and no cloud.store_raw=True (per call or MADELEINE_STORE_RAW=1).madeleine serve --allow-file-uris.MADELEINE_API_TOKEN to require a bearer token. Binding to another interface without a token is refused unless you pass --insecure-no-auth.secure_delete on.madeleine bench runs a synthetic benchmark: 500 memories across 3 cities, 300 cues with known ground truth, distractors and hard negatives. It is reported for both text backends. Full tables, methodology and blind spots are in docs/benchmarks.md.
madeleine bench # offline hash text backend
madeleine bench --text-backend sentence-transformers # semantic, needs the [text] extra
| hash (offline, default) | semantic ([text], MiniLM) | |
|---|---|---|
| pull R@1 / R@10 | 0.69 / 0.81 | 0.74 / 0.82 |
| precision of involuntary fires | 0.69 | 0.70 |
| positive cues that fire their memory | 0.53 | 0.67 |
| false-trigger rate on negatives | 0.00 | 0.00 |
By cue category (hit rate = how often the right memory surfaced on its own):
| cue category | hash: hit rate | semantic: hit rate | semantic: precision |
|---|---|---|---|
| place + hour | 0.81 | 0.81 | 0.56 |
| text paraphrase only | 0.21 | 0.67 | 1.00 |
| text + place + hour | 0.67 | 0.76 | 0.76 |
| exact same photo / sound | 1.00 | 1.00 | 1.00 |
| slightly altered photo / sound | 0.00 | 0.00 | – |
| memory several years old | 0.40 | 0.60 | 0.64 |
| negatives (distractors, time-only, same place + other topic) | 0 fires | 0 fires |
Latency with 500 memories, in pure Python: sense p50 11 ms / p95 23 ms with the hash backend, p50 32 ms / p95 63 ms with the semantic one (CPU).
Honest limitations
+02:00), or "evening" means UTC evening.| Env var | Default | Meaning |
|---|---|---|
MADELEINE_DB | ~/.madeleine/madeleine.db | SQLite path (:memory: allowed) |
MADELEINE_TEXT_BACKEND | auto | auto (sentence-transformers if installed), sentence-transformers, hash |
MADELEINE_CHANNELS | all built-ins | Comma-separated enabled channels |
MADELEINE_STORE_RAW | off | Persist raw media bytes |
MADELEINE_ALLOW_LOCAL_FILES | off |
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요