LangGraph vs MCP: choose the right architecture boundary

LangGraph vs MCP: choose the right architecture boundary

Key takeaways

  • LangGraph provides the cognitive architecture for agent execution.
  • MCP gives models a standard interface for discovering and using external tools.
  • One system can use both when execution and external access remain distinct responsibilities.

The useful LangGraph vs MCP decision is not a vote for one label. It is an assignment of ownership. Decide what must hold execution state, where a person can stop an action, how tools enter the system, and where access to protected resources is enforced.

That view also keeps the model in its proper place. The model may propose an action, but the surrounding system determines how that proposal moves, pauses, reaches a tool, and crosses an authority boundary. Our broader analysis of agentic AI and LLMs develops that distinction. Here, we will use it to compare two concrete layers without turning their different jobs into a feature contest.

LangGraph vs MCP at a glance

Start by naming the responsibility, then choose the layer whose documented mechanism performs it. LangGraph mechanisms cover execution and human review. MCP describes tools and data sources in a model-agnostic format, connects agents to tools and systems, and secures access to sensitive server resources.

ResponsibilityPrimary layerConcrete mechanismBoundary question
Execution stateLangGraphPersisted graph stateWhat must survive a pause?
Human reviewLangGraphOversight on agent tool callsWhich proposed calls need intervention?
Tool discoveryMCPOpen, model-agnostic descriptionsHow will the model discover external capabilities?
Server authorizationMCP serverAuthorization for sensitive resources and operationsWhich users may reach each endpoint?

Where does LangGraph control execution?

LangGraph controls the execution path at the point where a proposed tool call becomes work. Its human-in-the-loop middleware can pause an action that needs review and wait for a decision. That is an execution control, not merely a warning attached to the model's output.

A proposed LangGraph tool call passes through policy review, pauses at an interrupt with state persisted, waits for a human decision, and can resume later.

The pause path has three concrete parts. First, a configurable policy checks each tool call. When the policy finds that intervention is needed, it issues an interrupt and halts execution. LangGraph persistence then saves graph state, allowing that execution to pause safely and resume later.

That sequence gives an architecture review something precise to inspect. A team can identify the proposed action being checked, the policy that checks it, the interrupt that stops progress, and the state that must remain available while the graph waits. The human decision belongs inside an execution path that can stop and continue. It is not an informal review placed beside a still-running action.

The same mechanism also clarifies what LangGraph owns in this comparison. It owns the graph's progress around the interruption. The policy applies to the tool call, the interrupt halts execution, and persistence protects the graph state needed for a later resume. These are separate mechanisms in one pause path, and each has a concrete role.

For a consequential tool call, the design question is specific: can the execution path reach a stable pause before the action proceeds? If a person must review a proposed action, inspect the interrupt and the persisted state needed for a later resume. MCP gives models a structured interface for discovering and using external tools. Based on those separate roles, our architecture recommendation is to assign pause-and-resume execution to the graph controls and external tool access to the protocol boundary.

What does MCP standardize?

MCP standardizes the interface between an agent and external tools or protected resources. The client connects to an MCP server, and that server exposes access to an underlying service. Most MCP servers require authentication before the client can access the server and that service.

An MCP client request passes authentication at the server and authorization at a protected endpoint before it can reach a permitted resource.

The connection boundary is easiest to inspect as a chain:

  1. An MCP client requests access to the MCP server.
  2. The server requires authentication for access to itself and its underlying service.
  3. Authorization restricts endpoints that handle user data or administrative actions to permitted users.
  4. The permitted request can then reach the protected resource or operation.

MCP's authorization model uses standardized flows. It does not depend on one identity system, and it follows OAuth 2.1 conventions. That makes the protocol boundary portable across identity choices without erasing the need for identity and access controls.

This is where tool discovery and permission must stay conceptually separate. MCP lets a model discover and use external tools through a structured interface. Authentication establishes access to the server and its underlying service. Authorization then limits protected endpoints to permitted users. Proper authentication lets agents connect to servers, invoke tools, and access protected resources while maintaining those access controls, as described in Microsoft's MCP authentication guidance.

The distinction changes what you inspect during design. A tool can be visible through the protocol while its resource remains protected by authentication and authorization. Conversely, a clean tool description says nothing by itself about who may invoke the operation behind it. If your workload reaches user data or administrative actions, the server endpoint and its permitted users are part of the architecture, not deployment details to settle later.

Our App Store Connect MCP analysis is one related place to examine this tool-access boundary in a specific domain.

Can LangGraph and MCP work together?

Yes. One documented path exposes a LangGraph agent as an MCP tool. A compatible MCP client connects over Streamable HTTP to the LangChain Agent Server, which implements MCP and presents the LangGraph agent as a tool the client can call.

The execution path has four named points:

  1. An MCP-compliant client that supports Streamable HTTP initiates the request.
  2. Streamable HTTP carries the request to LangChain Agent Server.
  3. The server exposes the LangGraph agent as an MCP tool.
  4. The authenticated /mcp endpoint receives the request using the same authentication as the rest of the LangGraph API.

The current LangGraph MCP documentation establishes that path, but it also establishes a sharp limit. The current implementation does not support sessions. Each request to /mcp is stateless and independent.

That limitation belongs to the current LangGraph /mcp implementation. It is not a claim that MCP itself is stateless. Exposing a LangGraph agent through this endpoint does not add sessions to the documented request behavior. LangGraph supplies its graph execution mechanisms. Separately, each /mcp request remains independent at the endpoint.

The layers meet at a documented interface. Streamable HTTP supplies the transport. The endpoint uses the same authentication as the LangGraph API. LangGraph supplies the agent exposed as a tool. The endpoint does not support sessions, so requests remain independent.

Our architecture recommendation is narrow: use the interface to connect the layers, then assign graph state, endpoint sessions, authentication, and server authorization explicitly. In the current implementation, each /mcp request remains independent and the endpoint uses LangGraph API authentication. LangGraph and MCP can therefore share an architecture without making the interface responsible for every control around it.

Authorization remains a separate control boundary

Connection is not permission. Authorization defines the boundaries for the tool calls, resource requests, and operations an AI agent can perform. Once an MCP server exposes capabilities, its access checks determine what the client may actually reach or trigger.

Weak authorization can turn a valid connection into unintended access or action. A misconfigured scope or access check may let an MCP client reach files, APIs, or user-specific data that it was not intended to access. A missing check may let a normal client perform an administrative or other high-impact operation. These are failures at the server authorization boundary.

Scopes and access checks cover concrete resources and operations. A misconfiguration may expose files, APIs, or user-specific data. A missing check may allow a normal client to perform administrative or other high-impact operations. The MCP authorization walkthrough frames authorization as the boundary around the calls, requests, and operations available to the agent.

LangGraph human review adds oversight to agent tool calls. MCP authorization secures access to sensitive server resources and operations. Based on those separate responsibilities, we recommend keeping both decisions explicit: use graph review to decide whether a proposed execution should continue, and enforce resource permissions at the MCP server.

Consider a proposed call to an endpoint that handles user data. A configurable graph policy can interrupt the tool call for review. At the server, authorization restricts the endpoint to permitted users. The review decision and the access decision occur at different points in that trace, so the design should model and test both boundaries.

Failure modes decide the operational burden

The layers also fail differently. LangGraph applications can encounter API timeouts, tool failures, unexpected model outputs, and unpredictable network calls. Without adequate error handling, a failed node can halt the graph and leave little insight into the failure.

That failure sits in the execution layer. The operating question is not simply whether the graph can call a tool. It is what happens to the graph when a node fails. A node that halts execution affects the trajectory around the call, so node-level error handling belongs in the LangGraph design.

MCP introduces a different scaling burden. The protocol provides a foundation for connecting agents to many tools and systems. But connecting too many MCP servers can make tool definitions and results consume excessive tokens, which can reduce agent efficiency. The risk depends on the number of connected servers. It is not a universal property of every MCP tool surface.

Put the two failure checks beside each other:

  • For LangGraph, force a node failure and observe whether the graph halts and what insight remains.
  • For MCP, inspect how many server tool definitions and results enter the model's working context.

Neither check substitutes for the other. Deliberate node-level error handling addresses failure in graph execution. Limiting an oversized server set addresses token consumption from tool definitions and results.

A successful connection test confirms that a request can cross the documented interface. A failed-node test addresses graph execution. A tool-surface inspection addresses token consumption from connecting too many servers. Keeping these tests distinct makes each result legible: a working request does not report how the graph handles a node failure, and a node failure does not report the token load from server definitions and results.

Choose by project constraints

Choose the architecture from the workload outward. Framework selection should account for language, team size, data sources, and orchestration complexity. GitHub stars alone do not resolve those constraints.

Use this compact selection check:

  • Language: Does the framework fit the language in which the system must be built?
  • Team size: Can the team own the selected execution and integration surface?
  • Data sources: Which external systems must the agent reach?
  • Orchestration complexity: Does the workload need graph execution and human intervention mechanisms?

Write down the answers in terms of the actual workload. Name the implementation language, the team that will own the system, the data sources it must reach, and the orchestration complexity it must support. If the workload needs external capabilities through a standardized, model-agnostic interface, MCP provides that tool-discovery boundary. If it needs a proposed tool call to pause for human review, inspect LangGraph's interrupt policy and persisted state. This maps each requirement to a documented mechanism without treating adoption as a popularity contest.

If you are comparing a wider set of options, our guide to open-source agentic AI frameworks keeps the focus on operating constraints instead of popularity. Then compare your own workload against the control contract for AI agent frameworks. Name the authority boundary, the expected failure, and the required recovery before committing to the stack. If those owners are still unclear, the architecture decision is not finished.

More from Lab Notes.