openmemory-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP port. | 3333 |
| TRANSPORT | No | `http` for a network server, `stdio` for a local process. | http in compose |
| DATABASE_URL | No | Postgres connection string (pgvector required). Set by compose in Docker mode. | |
| OPENAI_API_KEY | No | Optional. Enables high-quality semantic search. | |
| OPENMEMORY_TOKEN | No | Access token for the API, MCP endpoint and web UI. Required in `http` mode (unless OPENMEMORY_ALLOW_NO_AUTH is true). | |
| OPENMEMORY_ALLOW_NO_AUTH | No | Set to `true` to run `http` mode without a token (trusted networks only). | false |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| save_memoryA | Store a fact, decision, convention or piece of context about a project so it can be recalled later, from this or any other connected AI tool. Use it when the user asks you to remember something, or when you learn something durable that future sessions will need (architecture choices, how to deploy, gotchas, naming rules). Write one self-contained statement per memory, with enough context to make sense on its own. Returns the new memory's id and timestamp. |
| search_memoryA | Find the memories in a project that best match a natural-language question, best match first. Use it before answering questions about the project's conventions, decisions or setup, and before redoing work that may have been settled already. Returns each match with its id, match score, date and text, or a message saying nothing was found. Search is semantic when the server has an embedding key configured, and keyword-based otherwise. |
| memory_timelineA | List a project's memories in reverse chronological order, optionally only those saved since a given date. Use it to review what was recorded recently or to get an overview of a project, rather than to answer a specific question (use search_memory for that). Returns each memory with its date, the tool that saved it, its id and its text. |
| list_projectsA | List every project that has memories, with how many each holds and when it was created. Use it to discover the exact project name to pass to the other tools, or to see what this memory server knows about. Takes no arguments. |
| delete_memoryA | Permanently delete one memory by its id, for example when it is outdated, wrong or saved by mistake. This cannot be undone and removes the memory for every connected tool, so confirm with the user first unless they asked for it explicitly. Get the id from search_memory or memory_timeline. Returns whether the memory was deleted or not found. |
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 5 tools
Each tool has a clearly distinct purpose: save, search, chronological listing, project discovery, and deletion. The search_memory vs memory_timeline overlap is explicitly addressed in descriptions, guiding correct selection.
Four tools follow a consistent verb_noun pattern (save_memory, search_memory, list_projects, delete_memory), but memory_timeline breaks the convention with a noun-first name. This is a minor deviation that remains readable.
Five tools is well-scoped for a memory server, covering the core lifecycle without bloat. Each tool earns its place and there are no redundant operations.
The surface covers create, search, list, and delete, which handles most memory workflows. However, there is no update/edit operation and no direct get-by-id, so agents must work around via delete-and-recreate or search.