langgraph

langgraph is an agent for coding agents from doobidoo/mcp-memory-service. It costs 0 tokens per session (1,541 once invoked), scanned A, original, Apache-2.0.

An integration that gives LangGraph agents and StateGraphs persistent shared memory through mcp-memory-service. LangGraph is a framework for building workflows where language-model agents move through connected steps.

In plain words
What is it for?
Use it to add long-term memory search and storage to LangGraph agents, including workflows that run across multiple graphs, runs, or processes.
Why use it?
LangGraph's built-in memory is temporary and tied to one graph, so information is lost between runs and cannot be shared across graphs or processes. This setup stores that context in a shared service.

Agent

Install

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.

agentmods
npx agentmods add agents/doobidoo/mcp-memory-service/langgraph
Clone the repo
git clone --depth 1 https://github.com/doobidoo/mcp-memory-service
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,541 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What 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.

ModelPer sessionOnce 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

Measured 3d ago against content hash c90b248c6f7e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

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.

docs/agents/langgraph.md · 215 lines

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.",
)

Read the full file on GitHub · 215 lines

Changes

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.

  1. 3d ago First seen · 215 lines · 0 tokens per session scan A c90b248c6f7e

Subscribe to this mod's changes

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.

Related

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).

luuuc/sense · 56 tokens

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.

luuuc/sense · 45 tokens

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…

CodeAlive-AI/codealive-skills · 82 tokens

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…

AbsoluteMode/session-recall · 88 tokens

code-explorer

Use this agent when the user needs codebase exploration by behavior instead of exact-string lookup. Examples.

Stahldavid/sensegrep · 24 tokens

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".

jeremylongshore/tons-of-skills-marketplace · 55 tokens