ai-memory-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AI_MEMORY_HOME | No | Data directory. Default: ~/.ai-memory | ~/.ai-memory |
| AI_MEMORY_TYPES | No | Allowed note types, comma separated. Default: decision,progress,failure,handoff | decision,progress,failure,handoff |
| AI_MEMORY_EMBED_URL | No | Ollama embeddings endpoint. Default: http://localhost:11434/api/embeddings | http://localhost:11434/api/embeddings |
| AI_MEMORY_EMBEDDINGS | No | Whether semantic search is enabled. 'off' disables semantic search entirely. Default: on | on |
| AI_MEMORY_EMBED_MODEL | No | Embedding model. Default: nomic-embed-text | nomic-embed-text |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| record_memoryA | Save one memory: a decision, progress update, failure, or handoff summary. project: project name; letters, digits, '_', '-', '.' only (e.g. "my-app") type: one of decision / progress / failure / handoff (configurable via AI_MEMORY_TYPES) title: one-line title content: the details; multi-paragraph Markdown is fine llm: who is writing this (e.g. "Claude", "Codex"); strongly recommended tags: comma-separated keywords, optional |
| search_memoryA | Keyword search over titles, content and tags. Every space-separated word must appear. Works for any language, including Chinese/Japanese substrings. Not FTS syntax: quotes and operators are treated as plain text. query: words to look for project: restrict to one project; empty searches all type: restrict to decision/progress/failure/handoff; empty searches all limit: max results (default 10, capped at 100) llm: your name, for the usage audit log |
| search_memory_semanticA | Meaning-based search using local Ollama embeddings; finds related notes that share no keywords. Requires Ollama running with the nomic-embed-text model (see README); otherwise returns an error and you should use search_memory instead. query: a natural-language description project: restrict to one project; empty searches all limit: max results (default 5) llm: your name, for the usage audit log |
| read_memoryA | Read one memory in full. |
| get_handoffA | Newest handoff summaries for a project, with full content. Call this first when resuming work. project: project name limit: max summaries (default 3, newest first) llm: your name, for the usage audit log |
| recentA | Latest memories of any type, newest first. project: restrict to one project; empty means all limit: max results (default 10) llm: your name, for the usage audit log |
| list_projectsB | List every project that has at least one memory. |
| audit_usageB | Who read what and when (newest first). Search result contents are not logged. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
The retrieval tools (search_memory, search_memory_semantic, get_handoff, recent) overlap in that they all return memories, but each has a clearly described purpose: keyword search, semantic search, handoff-specific retrieval, and recency-based listing. read_memory is distinct because it loads one exact memory by path. Some confusion is possible between the two search tools, but the descriptions draw a clear boundary.
Most tools follow a verb_object pattern: record_memory, read_memory, search_memory, get_handoff, list_projects, audit_usage. search_memory_semantic adds a modifier and 'recent' breaks the pattern by being a bare adjective rather than verb_noun. Overall the convention is consistent enough to be predictable.
Eight tools is well-scoped for a personal/agent memory server. Each tool covers a distinct aspect: writing, reading, searching, semantic search, handoff retrieval, recent activity, project listing, and audit. No tool feels redundant or bloated.
The server covers the core memory lifecycle well: recording, reading, searching, retrieving handoffs, and auditing usage. The main gaps are the lack of update/delete operations and no way to browse tags, though these may be intentional for an append-only memory store. Agents can complete typical workflows without hitting dead ends.