Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/doobidoo/mcp-memory-service/langgraphgit clone --depth 1 https://github.com/doobidoo/mcp-memory-serviceWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.01541 |
| Opus 5 | $0.00000 | $0.00771 |
| Sonnet 5 | $0.00000 | $0.00308 |
| Haiku 4.5 | $0.00000 | $0.00154 |
Grade A, and why
langgraph scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 215 lines — stays where its author put it; the contents beside it link to each section on GitHub.
LangGraph Integration Guide
Use mcp-memory-service as the persistent memory backend for LangGraph agents and StateGraphs.
Key Differentiator: Cross-Graph Shared Memory
LangGraph's built-in MemorySaver is graph-local and ephemeral — memory is lost between runs and cannot be shared between different StateGraphs.
mcp-memory-service provides persistent shared memory across all graphs, runs, and even separate processes:
Graph A (Researcher) ──┐
├──→ mcp-memory-service ←──→ All graphs share one store
Graph B (Writer) ──┘
Graph C (Reviewer) ──┘
Setup
pip install mcp-memory-service httpx
MCP_ALLOW_ANONYMOUS_ACCESS=true memory server --http
Memory Tools for ReAct Agents
Define memory as @tool functions for use in a ReAct agent:
import httpx
from langchain_core.tools import tool
MEMORY_URL = "http://localhost:8000"
@tool
async def search_memory(query: str) -> str:
"""Search long-term memory for relevant context."""
async with httpx.AsyncClient() as client:
response = await client.post(
f"{MEMORY_URL}/api/memories/search",
json={"query": query, "limit": 5},
)
memories = response.json()["memories"]
if not memories:
return "No relevant memories found."
return "\n".join(f"- {m['content']}" for m in memories)
@tool
async def store_memory(content: str, tags: list[str] = None) -> str:
"""Store a new memory for future retrieval."""
async with httpx.AsyncClient() as client:
response = await client.post(
f"{MEMORY_URL}/api/memories",
json={"content": content, "tags": tags or []},
)
result = response.json()
return f"Stored memory: {result.get('content_hash', 'unknown')}"
Use in a ReAct agent:
from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-4-6")
agent = create_react_agent(
llm,
tools=[search_memory, store_memory],
state_modifier="You have access to long-term memory. Search memory before answering. Store important findings.",
)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 215 lines · 0 tokens per session scan A c90b248c6f7e
langgraph is an agent published in the GitHub repository doobidoo/mcp-memory-service (1,919 stars, last pushed 5d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 1,541 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
bench-struggle-read
Reads any bench run (validation or paid, win or loss) and returns the material for a better scenario - where the baseline struggled and what Sense reached that it did not. Never issues a verdict; never diagnoses a loss (that is bench-evaluator).
bench-win-confirm
WIN-confirmation vertex for the vertical bench. Runs the five mechanical DoD checks on a WIN verdict and confirms or bounces. Never diagnoses a sub-floor verdict; never fault-finds a clean win.
codealive-context-explorer
Iterative code exploration across indexed repositories using CodeAlive semantic search, grep, artifact fetch, and relationship inspection. Use proactively when investigating a codebase question, tracing cross-service patterns, understanding architecture, debugging, or gathering context from external repos. Almost…
recall
Use to get grounded in a task, bug, feature, or decision from a PREVIOUS Claude Code, Codex, or Cursor session. Dispatch with the topic; it searches the unified history deeply (semantic + keyword + drill-down), reads the raw turns itself, and returns ONLY a tight brief — keeping the main thread's context clean. Prefer…
code-explorer
Use this agent when the user needs codebase exploration by behavior instead of exact-string lookup. Examples.
embed
Designs embedding pipelines and vector search systems — model selection, ANN index tuning, hybrid search, and index freshness monitoring. Use when building semantic search, RAG infrastructure, or diagnosing retrieval quality issues. Trigger with "design embedding pipeline", "optimize vector search".