engrava-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@engrava-mcpremember that I prefer dark mode in editors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Engrava MCP
The Model Context Protocol server for Engrava — expose an agent memory database to any MCP client (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, …) over stdio.
engrava-mcp is a standalone, runnable package that consumes Engrava's public
API. It is the one way to run Engrava as a memory server; the engrava library
itself ships no MCP code.
uvx engrava-mcp # run the server (no install step)
# or
pip install engrava-mcp
engrava-mcp # spawned by your MCP client over stdioInstalling engrava-mcp pulls in engrava transitively, so you also get the
import engrava library in the same environment.
Compatibility
engrava-mcp follows Engrava's version: engrava-mcp X.Y.z targets engrava X.Y
and requires engrava >=X.Y,<X.(Y+1). This is a one-way version mirror for legibility —
not a lockstep: Engrava releases on its own cadence, and engrava-mcp patch releases
are independent.
engrava-mcp | Works with engrava |
|
|
|
|
The dependency range is the source of truth. Normal installs resolve a compatible
engrava automatically; if you pin engrava yourself, keep it within that range. If no
matching engrava-mcp exists yet for a newer engrava (e.g. a fresh engrava 0.7), that
pairing is not yet verified/supported — not broken; stay on a supported pair until a
matching engrava-mcp ships.
Related MCP server: mindgap
Which package do I want?
Goal | Install |
Build on the Engrava Python API (memory DB in your own code) |
|
Run Engrava as a memory server for an MCP client |
|
There is no third option.
Migrating from engrava[mcp]
The server used to ship inside Engrava as the engrava[mcp] extra and an
in-engrava engrava-mcp command. As of Engrava 0.5.0 it lives here instead.
Before | After |
|
|
|
|
client | client |
Watch out:
pip install "engrava[mcp]"against Engrava 0.5 does not fail — pip ignores the now-unknown extra and quietly installs bareengrava, so it can look like the server installed when it did not. Installengrava-mcpinstead.Update any pinned requirement strings (
engrava[mcp]>=...) to depend onengrava-mcp, not just reinstall.Your store configuration is unchanged — the same
engrava.yaml/ env vars work exactly as before (see Configuration).
Configuration
The server resolves its store from environment variables, in priority order:
Variable | Meaning |
| Path to an |
| Path to a bare SQLite database file. Zero-config quick-start; no embedding provider is configured, so semantic (vector) search is inert — full-text search, the graph, MindQL, and the audit trail still work. "Zero-config" means Engrava's default search policy, so |
| When set to |
Recommended: give the MCP server the same engrava.yaml your application
uses. The yaml is the only place to declare an embedding provider (and its
model / key), which the server needs to embed a new query at search time for
semantic search. With only ENGRAVA_DB_PATH set, the server emits a startup
warning that semantic search is inert and points you at ENGRAVA_MCP_CONFIG.
Store-hook extensions need the config path
Engrava extensions that hook the store — anything wired through an
engrava.yaml's hooks: section — are attached only on the
ENGRAVA_MCP_CONFIG launch. ENGRAVA_DB_PATH opens a bare database and carries
no configuration, so it runs with Engrava's default hooks and cannot attach a
store-hook extension. That is deliberate: it is an intentionally minimal
read/write facade.
Installing such an extension and starting with ENGRAVA_DB_PATH therefore
leaves its store hooks unattached in this server. When an installed package
advertises any extension, the server emits a startup warning naming it — it
reports what is advertised, not what each one does, since it never loads them
itself — so you can tell the difference between "nothing advertised" and
"advertised but nothing wired it here". If reading the installed-package
metadata raises an ordinary error, the server attempts to log that instead and
carries on starting. Both go through Python's logging, so whether and where
they surface is up to your logging configuration. To wire a store hook, launch
with ENGRAVA_MCP_CONFIG pointing at an engrava.yaml with a hooks:
section:
hooks:
class: "my_package.hooks.MyHooks"Example engrava.yaml
db_path: ./memory.db
embeddings:
provider: openai # or: ollama, sentence-transformer, huggingface
model: text-embedding-3-small
api_key: ${OPENAI_API_KEY}Client setup
Point your MCP client at the server over stdio. For example, a typical
mcp.json entry:
{
"mcpServers": {
"engrava": {
"command": "uvx",
"args": ["engrava-mcp"],
"env": {
"ENGRAVA_MCP_CONFIG": "/absolute/path/to/engrava.yaml"
}
}
}
}Use ENGRAVA_DB_PATH instead of ENGRAVA_MCP_CONFIG for the zero-config
quick-start, and add "ENGRAVA_MCP_READ_ONLY": "1" for an app-writes /
agent-reads deployment.
Running without uvx
engrava-mcp # console script
python -m engrava_mcp # module run
python -m engrava_mcp.server # module run (server module directly)Optional providers
The default install supports the vector backend and HTTP-based embedding
providers (OpenAI / Ollama) once configured in the yaml. Heavier providers are
opt-in extras that mirror Engrava's own extras:
uvx --from "engrava-mcp[local]" engrava-mcp # sentence-transformers (local model)
uvx --from "engrava-mcp[hf]" engrava-mcp # HuggingFace Inference API
uvx --from "engrava-mcp[openai]" engrava-mcp # OpenAI-compatible embeddings deps
uvx --from "engrava-mcp[ollama]" engrava-mcp # Ollama embeddings depsThe surface
Tools (13):
get_thought,search_memory,search_keywords,list_memory,query_memory,memory_stats,get_edges,list_edges(read);store_thought,update_thought,link_thoughts,delete_thought,delete_edge(write, gated byENGRAVA_MCP_READ_ONLY).Resources (3):
engrava://thought/{thought_id},engrava://stats,engrava://recent.Prompts (3):
summarize_recent_memory,find_related,reflect_on_topic.
query_memory accepts only MindQL FIND queries; raw SQL and every other
command are rejected.
get_edges traverses a thought's edges by direction (IN / OUT / BOTH);
list_edges browses edges filtered by type, source, or metadata.
link_thoughts accepts optional edge metadata (JSON fields that list_edges
can filter on). search_memory accepts an optional recency_now (ISO-8601
timestamp) giving the moment to measure age against (transaction time); recency
takes part in the ranking only when you pass it.
Development
pip install -e ".[dev]"
ruff check src/ tests/
ruff format --check src/ tests/
mypy --strict src/
pytest --cov --cov-fail-under=90License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenancePortable long-term memory store for agents, exposed over MCP.
- AlicenseAqualityBmaintenanceExposes the mindgap knowledge graph as an MCP server over stdio, providing tools to add, link, query, and manage nodes and edges in a local org-roam-style graph.10MIT

@agentage/mcp-memoryofficial
AlicenseAqualityBmaintenanceExposes local memory vaults as 6 MCP tools over stdio, enabling clients like Windsurf, Zed, and Claude Desktop to read and write memory.61252MIT- AlicenseNot gradedqualityBmaintenanceServes a live code-graph workbench over stdio for MCP clients/agents, enabling Cypher queries and codebase analysis via KGLite tools.MIT
Related MCP Connectors
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sovantica/engrava-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server