mie_analyzeLABSCO SUMMARY
Structured memory, with no second model deciding what matters.
Most memory servers run their own LLM to classify what to keep, which means your memory layer has a bill and an opinion. MIE inverts it: mie_analyze returns the related context and the agent already in the loop makes the call. What you get out of that is a graph rather than a pile of summaries — decisions carry rationale and alternatives, superseded facts are invalidated rather than overwritten, and mie_conflicts will tell you when two things you stored disagree.
What it is
A local memory server that stores typed nodes — facts, decisions, entities, events and topics — and the relationships between them, then serves that graph to any MCP client. It does no inference of its own: the server hands the agent related context and an evaluation guide, and the agent decides what is worth keeping.
What you get
- mie_analyze — surfaces existing related memory and possible conflicts before anything is written
- mie_store — writes a fact, decision, entity, event or topic, with relationships and an optional invalidation of the fact it replaces
- mie_bulk_store — up to 50 nodes with cross-references in one call, for importing from files or git history
- mie_query — semantic search, exact substring lookup, or graph traversal from a node
- mie_get and mie_list — one node in full, or a filtered and paginated table
- mie_update — invalidate an outdated fact or change a status, with the history preserved
- mie_delete — remove a node with its embedding and edges, or drop a single relationship
- mie_conflicts — find pairs of stored facts that look similar but disagree
- mie_export — the whole graph as JSON or Datalog
- mie_status and mie_repair — graph health and node counts, and a rebuild of the HNSW indexes when semantic search starts erroring
Requirements
Install the binary with brew tap kraklabs/mie and brew install mie, run mie init, and point clients at mie --mcp. Building from source needs Go 1.24 or later. Semantic search is optional and needs Ollama with nomic-embed-text pulled; without it you still get exact-match search and graph traversal. include_tools and exclude_tools in the config restrict which tools a client is offered, and filtered tools are rejected at call time too. Dual-licensed — AGPL-3.0, or a commercial licence for proprietary use.
Setup effort
One command — brew tap kraklabs/mie && brew install mie
USE CASES
Explaining an architecture decision once instead of every session
Record the choice with its rationale and the alternatives you rejected, linked to the projects and technologies involved.
Picking up in Cursor what you discussed in Claude
Search the shared graph by meaning, or walk out from a node to the decisions and entities attached to it.
Seeding memory from a repository you already have
Have the agent read your ADRs or git history and write what it extracts in batches.
Something you told it last quarter is no longer true
Invalidate the old fact as you store the new one, and keep the chain so the change is auditable.
Auditing what the memory actually contains
Check the counts and health, list nodes by category, and look for facts that contradict each other.
12 tools
Listed in project docs. Your client may show a different list.
mie_storemie_bulk_storemie_getmie_querymie_listmie_updatemie_deletemie_conflictsmie_exportmie_repairmie_statusBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
mie on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
brew tap kraklabs/mie
brew install mieMCP Clients
Claude Code, Cursor
{
"mcpServers": {
"mie": {
"command": "mie",
"args": [
"--mcp"
]
}
}
}