Skip to main content

anamnesis (server)

The Anamnesis MCP memory server for Claude Code. Python + FastMCP.

Markdown files are the source of truth; a local SQLite (WAL + FTS5) index is derived from them and can always be rebuilt. Memory syncs across your own machines as a git repo over a private Tailscale mesh; the index is never synced (it is rebuilt locally). See the (local-only) docs/architecture.md and docs/roadmap.md for the full design.

MCP tools

Tool Signature Approval
memory_search (query, project?, type?, k=8) -> ranked notes read-only
memory_list (project?, type?) -> titles + metadata read-only
memory_status () -> counts, store paths, git sync state read-only
memory_write (type, title, body, project="global", tags?) write - confirm
memory_sync (force=False) -> commit, pull --rebase, push write - confirm

Read-only query tools carry the readOnlyHint annotation so a client can auto-approve them; writes are flagged for confirmation. type is one of procedural / semantic / episodic. memory_sync rebuilds the local index after pulling, so notes from other machines are immediately searchable.

Configuration (environment)

Variable Default Purpose
ANAMNESIS_HOME ~/.anamnesis Store root (memory/ markdown + index.db).
ANAMNESIS_MACHINE_ID the hostname Machine-of-origin stamped on notes you write.
ANAMNESIS_GIT_REMOTE (unset) Git remote for sync; unset = local commits only.

Run it

# from server/
uv venv --python 3.12
uv pip install -e ".[mcp,dev]"
anamnesis            # serves over stdio (Ctrl-C to stop)

Register with Claude Code

The repo ships a project-scoped .mcp.json that launches the server:

{
  "mcpServers": {
    "anamnesis": { "command": "uv", "args": ["run", "--project", "server", "anamnesis"] }
  }
}

Set ANAMNESIS_HOME / ANAMNESIS_MACHINE_ID / ANAMNESIS_GIT_REMOTE in that server's "env" block. Claude Code launches MCP servers with a filtered environment, so shell exports are not inherited - the "env" block is the place to set them. Keep your real ANAMNESIS_GIT_REMOTE out of the public repo (use a local or user-scoped MCP config).

Cross-machine sync (git over Tailscale)

Memory is a git repo (~/.anamnesis/memory/) pushed and pulled over your Tailscale mesh. Point every machine at one shared bare repo (on an always-on node, or peer-to-peer):

# once, on the node that hosts the shared repo:
git init --bare -b main ~/anamnesis-memory.git

# on each machine (Tailscale MagicDNS resolves the node name on your tailnet):
export ANAMNESIS_GIT_REMOTE='you@host.your-tailnet.ts.net:anamnesis-memory.git'

Then memory_sync (commit -> pull --rebase -> push) keeps every machine in step. The SQLite index is never pushed; it is rebuilt locally after each pull. On a same-note conflict, v0 surfaces it and keeps your local edits rather than dropping either side.

Development

# from server/
uv run ruff check src tests && uv run ruff format --check src tests
uv run mypy src
uv run pytest

Machine-local note: if this host sources ROS 2 (it puts launch_testing on PYTHONPATH), run tests isolated from it: PYTHONPATH= PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 uv run pytest.

Storage layout (runtime)

Memory lives in ~/.anamnesis/ (never in this repo):

~/.anamnesis/
├── memory/            # markdown notes - the source of truth (a git repo, synced)
│   └── <type>/<id>.md
└── index.db           # SQLite FTS5 index - rebuilt locally, never synced

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anamnesis_memory-0.1.0.tar.gz (183.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anamnesis_memory-0.1.0-py3-none-any.whl (64.4 kB view details)

Uploaded Python 3

File details

Details for the file anamnesis_memory-0.1.0.tar.gz.

File metadata

  • Download URL: anamnesis_memory-0.1.0.tar.gz
  • Upload date:
  • Size: 183.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anamnesis_memory-0.1.0.tar.gz
Algorithm Hash digest
SHA256 07a212f182cdd3c3b8492f7840b9f9c1e128bc045d7dabedf9afc9c75d0ab22f
MD5 def99e87cc0549995574cb7ab801072e
BLAKE2b-256 eadb4e9f93e987b792e59ee1c80576fc54686cf4c76524a042c8a77d480079ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for anamnesis_memory-0.1.0.tar.gz:

Publisher: publish.yml on oscardvs/anamnesis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anamnesis_memory-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for anamnesis_memory-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5fced0a26f5dceb967500a94fd396483b13805ef91b1b91e1abe089b8bc2e1bf
MD5 a00cfb4f08e853ffbada4c6037c563e6
BLAKE2b-256 cd42630baed94eaed3c7c9c4daa88d7b640d1bf0b7b594ad3047819d07bc7003

See more details on using hashes here.

Provenance

The following attestation bundles were made for anamnesis_memory-0.1.0-py3-none-any.whl:

Publisher: publish.yml on oscardvs/anamnesis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page