Integrating LangGraph with MAREF — Protocol-Level Governance That Works Today MAREF Engineering announced that its protocol-level governance integration with LangGraph, using MCP and A2A, is live and tested, while the native LangGraphAdapter remains on the roadmap. The MCPBridge wraps tool calls in a security gate, and the A2ABridge governs multi-agent task lifecycles, both providing audit logging and halt capabilities. The AutoGen adapter is already shipped, but the LangGraph native adapter is specified but not yet merged. Integrating LangGraph with MAREF — Protocol-Level Governance That Works Today By MAREF Engineering If you're building production agents in 2026, there's a good chance they're a LangGraph state graph. Nodes, edges, conditional routing — elegant, testable, and — until you add a governance layer — completely unsupervised. This guide shows the two ways to govern a LangGraph app with MAREF, and it's honest about which is ready today. TL;DR: the protocol-level path MCP + A2A is live and tested ; the native LangGraphAdapter documented in the quickstart is on the roadmap, with the AutoGen sidecar adapter already shipped. The honest status, first MAREF's quickstart /en/docs/quickstart/ documents a sidecar.adapters.langgraph.LangGraphAdapter with three methods — evaluate node safety , observe transition , and inject governance . We want to be direct with you: that adapter is specified but not yet merged. The AutoGen adapter sidecar.adapters.autogen.AutoGenAdapter is live; LangGraph's native adapter is being built to the same contract. What that means for you: you should not block on the adapter. The protocol-level integration below uses only shipped, tested code paths and gives you the same governance guarantees today. Path 1 — Govern tool calls inside a LangGraph node MCP LangGraph nodes call tools. Those tools are where the blast radius lives. Wrap them with MCPBridge and every call from any node goes through the security gate — with the same event stream you can feed your audit log: python from langgraph.graph import StateGraph from maref.integration.mcp client import MCPClient, MCPServerConfig from maref.integration.mcp bridge import MCPBridge client = MCPClient conn = client.register server MCPServerConfig command= "npx", "-y", "@your/tool-server" , transport type="stdio", server name="tool-server", bridge = MCPBridge client wraps calls in the security gate def tool node state : every node that touches the world goes through governance return bridge.invoke tool conn, tool name=state "tool" , args=state "args" , graph = StateGraph dict graph.add node "tools", tool node graph.add edge " start ", "tools" A DENY verdict returns {"error": "Tool blocked by security gate", ...} — the external server is never called, and the node's error edge or fallback logic can route around it. Your LangGraph topology stays exactly as designed; MAREF just sits at every tool boundary. Path 2 — Govern whole tasks across agents A2A For multi-agent LangGraph deployments — several graphs, maybe a supervisor — the A2ABridge makes MAREF itself an A2A-governed agent that creates, delegates, and halts tasks across the federation: python from maref lite.state machine import GovernanceStateMachine from maref.governance.audit import AuditLogger from maref.integration.a2a bridge import A2ABridge bridge = A2ABridge state machine=GovernanceStateMachine , audit logger=AuditLogger log path="maref-audit.jsonl" , agent name="langgraph-supervisor", task id = bridge.create task "Summarize Q3 report" governed lifecycle another agent can delegate into us: bridge.delegate task task id, "https://other-agent.local:8000" any authorized human can halt a task outright: bridge.force halt task task id, reason="scope change" Every create task , delegation, and state change is HMAC-signed into the audit log and runs through the same governance state machine — OBSERVE → ANALYZE → EVALUATE → DECIDE → ACT → VERIFY → STABILIZE → REPORT , with HALT reachable by any authorized human or the circuit breaker. The result: your LangGraph graphs keep their orchestration logic, while MAREF owns the "is this safe?" decision at every boundary — tool calls, inter-agent handoffs, and task lifecycle. Which path should you pick? Single graph, several tools → Path 1 MCP bridge on tool calls . Minimal change, immediate audit trail. Multiple graphs / supervisor pattern → Path 2 A2A . You get task lifecycle governance, delegation, and a kill-switch across the whole fleet. Both → They compose. MAREF governs tool calls and task orchestration simultaneously — that's the 8-layer architecture working as designed. 🛡️ Sources: MAREF source — src/maref/integration/mcp bridge.py MCPBridge.invoke tool , src/maref/integration/a2a bridge.py A2ABridge.create task / delegate task / force halt task , src/sidecar/adapters/autogen.py shipped sidecar adapter . LangGraph adapter contract defined in docs/quickstart.md §3.3 roadmap — AutoGen adapter shipped . Quickstart /en/docs/quickstart/ · Integrations /en/integrations/ .