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.1.tar.gz (184.9 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.1-py3-none-any.whl (65.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: anamnesis_memory-0.1.1.tar.gz
  • Upload date:
  • Size: 184.9 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.1.tar.gz
Algorithm Hash digest
SHA256 6acadffa659d500cde4b87fe12a6761cb609f28877aea0996d9a01bee273753f
MD5 cf71df5347cb84b20ec42539456373f9
BLAKE2b-256 497086e5684fb5987a9dbb0aec27eab51fe7499e107d7e3601d766d95aa488fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for anamnesis_memory-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for anamnesis_memory-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 15d30e3d6522fb4473433f6e81e427d4eb92be3463888a65eed70c2c4eb6559b
MD5 51b1671127f7afe9b1d3f72ad6d204b0
BLAKE2b-256 40b0c51dca53c3ebc52c6811e1a7fbbf5ca01036a0d452b2637401fd2d7f36c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for anamnesis_memory-0.1.1-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