Both MCP and LangGraph add structure. Structure costs setup work, so each is worth it only when you need what it gives back.
MCP#
MCP adds standardization, and also setup complexity. Connecting to an MCP server is more work than calling a function directly.
The payoff: your app works with any MCP-compatible tool, without custom integration work for each one.
| Use MCP when | Call functions directly when |
|---|---|
| You have many tools | You have one or two tools of your own |
| You want to swap tools without changing your app | The tools rarely change |
| You want to use tools other teams already serve over MCP | You control both the app and the tool |
LangGraph#
LangGraph adds state, nodes, edges and a checkpointer, and the overhead of learning and wiring them.
| Use LangGraph when | A plain loop is enough when |
|---|---|
| You need human-in-the-loop approval | There are no approval steps |
| Runs must pause and resume | Runs are short and can simply restart |
| The branching logic is complex | The agent has two tools and one loop |
| You need to debug across many steps | The steps are few and easy to log |
The common rule#
Start with the simplest thing: a direct function call, a plain loop, a fixed workflow. Add MCP when the number of tools or the need to swap them makes custom integrations painful. Add LangGraph when you need approval, resume or complex branching that a hand-written loop handles badly.
Neither one makes your system safer by itself. MCP does not check permissions, and LangGraph only gives you a place to put the approval step. The guardrails are still yours to write.
Short line#
MCP trades setup work for working with any compatible tool, so use it when you have many tools or want to swap them. LangGraph trades overhead for pause, resume, approval and complex branching, so skip it for a simple two-tool agent. Neither adds safety on its own.
Key takeaways#
- Connecting through MCP is more work than a direct function call.
- MCP pays off with many tools, or when you want to swap tools without changing the app.
- LangGraph pays off for approvals, pause and resume, complex branching and debugging.
- For a simple two-tool agent, LangGraph is overkill.
- Neither adds safety by itself. You still write the guardrails.