ai-agent-stack-comparison
ai/ai-agent-stack-comparison · Updated · Tags: ai
正在用 AI 翻譯成中文,可能需要一分鐘… 以下暫時顯示英文原文。
AI agents, MCP, n8n, LangChain, LangGraph, Flowise, Composio
These get compared as if they're competitors. Most of them aren't — they sit at different layers of the same stack. Two pairs genuinely overlap (MCP ↔ Composio, n8n ↔ Flowise); the rest compose.
Colour key: Concept Tool supplier Code library Runtime
Contents
- Quick answers
- What each one is — layer model · at a glance
- How they relate — alternative vs complementary · the two real overlaps
- What you actually get — outputs · where you see the result
- Trade-offs — pros & cons · deep dives
- How to choose — decision guide · 7 case studies
- Misconceptions
1. Quick answers
| One line | |
|---|---|
| AI agent | A pattern, not a product: an LLM in a loop deciding which tool to call next until a goal is met. Everything else here builds, connects, or runs one |
| MCP server | An open protocol for exposing tools/data to any LLM client. A plug shape — not a framework, not a runtime |
| LangChain | Code library of LLM building blocks (models, prompts, retrievers, tools) |
| LangGraph | Code runtime for agent control flow — graph + shared state + cycles + persistence. Same team as LangChain; LangChain's modern agent API is built on it |
| Flowise | Drag-and-drop GUI over LangChain/LangGraph. Same engine, no code |
| n8n | General workflow automation (Zapier-style, self-hostable) that grew AI-agent nodes. Strength is integrations + ops, not agent depth |
| Composio | Managed connector + auth layer. Solves "my agent must call Gmail/Jira/GitHub as this specific end user" without you building and hosting each connector |
2. What each one is
2.1 The layer model
| Layer | What it answers | Who lives here |
|---|---|---|
| 0. Concept | What is an agent? | AI agent (LLM + tools + memory + loop) |
| 1. Connectivity | How does my agent reach the outside world? | MCP, Composio |
| 2. Orchestration | What runs next, with what state, and what happens on failure? | LangGraph, n8n |
| 3. Composition | How do I assemble prompts, models, retrievers, tools? | LangChain |
| 4. Authoring UX | Code or canvas? | code: LangChain/LangGraph · canvas: Flowise, n8n |
A realistic production stack takes one item from several rows — e.g. LangGraph (orchestration) + MCP and/or Composio (tools) + n8n (business triggers and glue).
2.2 At a glance
| What it actually is | Interface | Runs where | |
|---|---|---|---|
| AI agent | Design pattern: LLM chooses tools in a loop until done | — | — |
| MCP server | Open protocol (JSON-RPC) exposing tools / resources / prompts | Spec + SDKs (TS, Python…) | Local process (stdio) or remote (HTTP/SSE) |
| LangChain | Library of LLM primitives + integrations | Python / JS code | Your app |
| LangGraph | Stateful graph runtime — nodes, edges, cycles, checkpointed state | Python / JS code | Your app, or LangGraph Platform |
| Flowise | Low-code visual builder over LangChain/LangGraph | Drag-and-drop canvas | Self-host (Docker) or Flowise Cloud |
| n8n | Workflow automation with AI-agent nodes bolted on (LangChain-backed) | Node canvas + JS/Python code nodes | Self-host or n8n Cloud |
| Composio | Managed integration + auth layer: hosted tool catalogue, OAuth, per-end-user token vault | SDK (LangChain, LangGraph, CrewAI, OpenAI, Vercel) + hosted MCP endpoints | SaaS (self-host option) |
3. How they relate
3.1 Alternative or complementary?
C = complementary (stack them) · A = alternative (pick one) · A/C = both, depending on the job.
| MCP | Composio | LangChain | LangGraph | Flowise | n8n | |
|---|---|---|---|---|---|---|
| MCP | — | A/C | C | C | C | C |
| Composio | A/C | — | C | C | C | A/C |
| LangChain | C | C | — | C | C (embeds it) | C (embeds it) |
| LangGraph | C | C | C | — | A/C | A |
| Flowise | C | C | C | A/C | — | A |
| n8n | C | A/C | C | A | A | — |
Where the "A" comes from:
- LangGraph vs n8n vs Flowise — all three are the runtime. Normally one per system (though a big org may run n8n for ops and LangGraph for the product).
- MCP vs Composio — same job, different ownership model. Composio also emits MCP, so it can be a C instead.
- Composio vs n8n — both hand you hundreds of pre-built app integrations. If n8n already runs the workflow, you may not need Composio.
- LangChain vs LangGraph is never A — components vs control flow; Flowise and n8n both embed LangChain internally.
3.2 MCP vs Composio — both "connect to different services"
| MCP | Composio | |
|---|---|---|
| Nature | Open protocol (Anthropic, open spec) | Commercial product (also speaks MCP) |
| You get | A standard — servers you write or install | A catalogue of ready connectors, managed |
| Auth | Your problem: run the OAuth dance, store tokens | Built-in: managed OAuth + per-user token vault |
| Multi-tenant ("agent acts as this user") | Build it yourself | Core feature |
| Lock-in | None | Vendor |
| Cost | Free (you host) | Paid tiers |
| Sweet spot | Internal/bespoke tools; anything you'd rather own | Long tail of SaaS apps (Gmail, Slack, Jira, Linear, HubSpot…) |
Not either/or: Composio ships its catalogue as MCP servers, so you can consume it through the same plug as everything else.
Own the connector when the tool is your own system; buy it when it's someone else's SaaS with an OAuth flow.
3.3 n8n vs Flowise — both "visual builders"
| n8n | Flowise | |
|---|---|---|
| Origin | Workflow automation → added AI | LLM apps from day one |
| Unit of work | Trigger → nodes → outputs | Chatflow / agentflow |
| Integrations | Very broad (business apps, DBs, queues) | Narrow; LLM/vector/tool-focused |
| Agent depth | Basic agent node | LangChain/LangGraph agents exposed on canvas |
| Ops (retries, cron, error paths, queue mode) | Strong | Basic |
| Pick it when | The job is automation that contains an LLM step | The job is an LLM app that needs a couple of tools |
Neither "doesn't scale" in the same way: Flowise lacks ops tooling, n8n lacks agent depth.
4. What you actually get
4.1 Outputs — do you end up with an agent?
Only some of these produce a running agent. The others produce inputs to one.
| Concrete artifact | Source files you own | Hosted/running service | Is it an agent? | MCP | Ready-made tools | |
|---|---|---|---|---|---|---|
| MCP server | Endpoint advertising tools/resources/prompts | ✅ you write it (TS/Python) | 🟡 only if remote (stdio = local process) | ❌ tool supplier | ✅ is one | ✅ the ones you write |
| Composio | Authenticated tool defs + executed API calls | ❌ just your SDK glue | ✅ theirs (SaaS) | ❌ tool supplier | ✅ emits MCP endpoints | ✅ hundreds |
| LangChain | Library objects in your app | ✅ your app code | ❌ you deploy it | ⚠️ can build one | 🟡 client adapters | 🟡 integration wrappers |
| LangGraph | Compiled graph → service with HTTP/stream API, threads, checkpoints | ✅ graph definition | ✅ self-host or LangGraph Platform | ✅ yes | 🟡 consumes; can be exposed | ❌ |
| Flowise | Saved flow → REST endpoint + chat widget + shareable URL | ❌ flow JSON, not editable code | ✅ Docker / Flowise Cloud | ✅ yes | ✅ consume and expose | 🟡 node library |
| n8n | Workflow → webhook URL / cron / chat trigger + real side effects | ❌ workflow JSON | ✅ self-host / n8n Cloud | ✅ agentic automation | ✅ MCP Client + MCP Server Trigger nodes | ✅ 500+ app nodes |
Read it as: MCP and Composio are ingredients. LangChain is a toolbox. LangGraph, Flowise and n8n are ovens — the things that actually run.
Three output categories:
| Category | Output | Where you see it |
|---|---|---|
| Tool suppliers — MCP, Composio | Callable tool definitions | Inside a client — never standalone |
| Code libraries — LangChain | Source files in your repo | Your IDE + a trace UI |
| Runtimes — LangGraph, Flowise, n8n | A running endpoint + a UI | A URL |
4.2 Where you literally look
| The screen / URL | |
|---|---|
| MCP server | MCP Inspector — npx @modelcontextprotocol/inspector opens a local web UI to list and invoke tools directly. Otherwise: inside a client — Claude Code's /mcp, Cursor's MCP settings, tool calls in the transcript |
| Composio | Their dashboard — connected accounts per end user, auth status, tool catalogue, execution logs. Plus your agent's transcript |
| LangChain | Your IDE and app logs; LangSmith (smith.langchain.com) for step-by-step traces |
| LangGraph | LangGraph Studio — langgraph dev → 127.0.0.1:2024, renders the graph live, shows state per node, supports time-travel. Plus LangSmith, plus your deployed endpoint |
| Flowise | localhost:3000 — canvas + built-in chat test panel. Then: shareable chat URL, <script> embed widget, POST /api/v1/prediction/{id} |
| n8n | localhost:5678 — canvas + Executions tab (every run, per-node input/output JSON). Plus the real side effects: the Slack message, the DB row |
| AI agent | Wherever you surfaced it — chat widget, Slack bot, IDE, your own API |
An MCP server has no UI and produces nothing visible until a client connects. MCP Inspector is the standalone test harness — the fastest way to debug tool schemas before wiring the server into Claude Code.
5. Trade-offs
5.1 Pros & cons
| Pros | Cons | Biggest gotcha | |
|---|---|---|---|
| AI agent (the pattern) | Handles fuzzy, underspecified tasksAdapts mid-run instead of failingTool use extends reach indefinitelyLess brittle than hardcoded branching | Non-deterministic — same input, different pathCost & latency multiply per loop iterationErrors compound across stepsHard to unit-testPrompt-injection surface via any tool output | Most "agent" problems are workflow problems. If the steps are known in advance, a deterministic pipeline is cheaper, faster and testable |
| MCP server | Open standard, zero vendor lock-inWrite once → works in Claude Code, Cursor, Claude Desktop, any frameworkFree; local stdio means data never leaves the machineSurvives a framework rewriteGrowing ecosystem of ready-made servers | You host, version and operate every serverAuth/OAuth is entirely your problemNo orchestration, scheduling, retries or observabilityMany tools bloat the context windowDiscovery/versioning still immature | Context blowout — a server with 60 tools burns tokens every turn. Also: tool descriptions are untrusted input, so a hostile server can steer the model |
| Composio | Hundreds of connectors on day oneManaged OAuth + per-end-user token vault — the genuinely hard partFramework-agnostic SDKsTool search/ranking keeps context smallAlso exposed as MCP | Vendor dependency; cost scales with usageYour users' OAuth tokens live with a third partyConnector depth varies — gaps push you back to custom codeYou don't control their release cycleUseless for your own internal systems | Compliance review. Third-party custody of customer tokens is a DPA/security conversation, not a technical decision |
| LangChain | Huge integration surfaceSwap model providers in one lineWell-trodden RAG patternsLarge community, docs, examplesLangSmith tracing | Abstraction tax — debugging through wrapper layersHistory of churny, breaking APIsHides prompt/token behaviour you may need to seeOften reached for when a raw SDK call would do | Pin your version. Upgrades have historically broken working code; also check whether you need the library at all |
| LangGraph | Explicit control flow — cycles, branching, sub-graphsDurable execution + checkpoints (resume after a crash)Human-in-the-loop interruptsTime-travel debugging and replayMulti-agent patterns first-classStreaming + observability built in | Steepest learning curve — graph/state mental modelVerbose for anything linearYou still build deployment, UI and authManaged hosting (LangGraph Platform) is paidNo app integrations of its own | Over-engineering. No cycle and no approval step? You've taken on a state machine for nothing |
| Flowise | Fastest path from idea to working demoVisual — non-devs can read the flowOpen source, self-hostable via DockerChat widget, REST API and embed out of the boxCustom JS function nodes as an escape hatch | Canvas ceiling once logic gets customFlows are JSON blobs — diffs, review and CI are painfulNo real test story; dev→prod promotion is manualAbstraction overhead on latencySmaller community; upgrades can break flows | No migration path. Canvas logic doesn't port — a production rewrite starts from scratch unless tools were exposed via MCP |
| n8n | 500+ integrations, far beyond LLM toolingOps-grade: cron, webhooks, retries, error branches, queue mode, execution historySelf-hostableJS/Python code nodes as an escape hatchOps teams can maintain it without devs | Agent node is shallow next to LangGraphComplex logic becomes canvas spaghetti fastFair-code (Sustainable Use) licence — not true OSSCloud pricing is per execution, which agent loops inflateWeak versioning/testing vs code | Read the licence before embedding it in a product you sell. And watch per-execution billing — one agent run can be dozens of executions |
5.2 Deep dive — Composio is connector management, but it's not "N API keys → 1 key"
That framing is close but misses the point. The one key (your Composio API key) is just how your agent authenticates to Composio. The N credentials still exist — Composio stores and refreshes them behind it. One credential to your agent, N credentials managed behind it.
Two different auth problems, and only one is worth a vendor:
| Problem | Example | Composio solves it? | Do you need Composio? |
|---|---|---|---|
| Your credentials (dev-owned) | Company Slack bot token, one GitHub PAT | Yes | Not really — a secrets manager does this |
| Your users' credentials (end-user-owned) | 5,000 customers each connect their own Gmail; tokens issued, stored, refreshed, revoked per user | Yes — core feature | This is the real reason to buy it |
And auth is only half of it:
| Also does | Why it matters |
|---|---|
| Ships tool schemas in LLM function-call format | Skip hand-writing a JSON schema per endpoint |
| Executes the call and normalises the response | It's a proxy, not just credential storage |
| Tool search / ranking | Keeps 500 tools from flooding your context window |
| Framework adapters + MCP endpoints | Same tools, any runtime |
| Triggers/webhooks — inbound events | "New Gmail arrives → wake the agent" |
| Maintains connectors when the SaaS API changes | The ongoing cost you're really outsourcing |
Composio is a managed connector layer: it hosts the integrations, handles OAuth per end user, and hands your agent ready-made tool schemas — so you deal with one credential and one SDK instead of N API keys, N OAuth flows, and N hand-written tool wrappers.
5.3 Deep dive — Flowise's ceiling is complexity, not traffic
"Fast dev, doesn't scale" is half right. Scale of what matters.
| Axis | What it means | Flowise verdict |
|---|---|---|
| Traffic | 10 → 10,000 concurrent chats | 🟡 Mostly fine. Node server, horizontally scalable, queue mode exists. Adds latency overhead, but the LLM call dominates |
| Complexity | Branching, sub-agents, retries, conditional routing, human approval | 🔴 Real ceiling. Canvas becomes spaghetti; you end up writing JS in function nodes — i.e. code with worse ergonomics |
| Team / process | Git review, tests, CI, dev→staging→prod, rollback | 🔴 Sharpest limit. Flows are JSON blobs — diffs unreviewable, no test story, promotion is manual export/import |
Where the line sits:
| Stay on Flowise | Move to LangGraph |
|---|---|
| RAG chatbot, a few tools, linear flow | Branching, cycles, sub-agents, mid-run human approval |
| One or two people own it | A team reviewing changes in PRs |
| Change it weekly, ship by clicking Save | Needs tests, CI, staged rollout, rollback |
| Prompt tweaks are the main iteration | Business logic is the main iteration |
Flowise is the fastest way to get a working LLM app, and fine in production for simple, stable flows. Its ceiling is logic complexity and engineering process — not traffic.
6. How to choose
6.1 Decision guide
| Your situation | Use |
|---|---|
| Non-technical/ops team, connect 10 SaaS apps, LLM is one step | n8n |
| Ship a RAG chatbot this week, minimal code | Flowise (or Langflow if you're a Python/DS team) |
| Production multi-agent, branching, retries, human approval, resumable | LangGraph |
| Just need model/prompt/retriever/tool abstractions in your own app | LangChain |
| Agent must act as your users in their Gmail/Jira/Slack | Composio |
| Reusable connector for your own systems, usable from Claude Code/Cursor/any client | write an MCP server |
| All of the above | LangGraph core + Composio & MCP for tools + n8n for business triggers |
6.2 Case studies
1. Support chatbot over your docs (RAG, no actions)
| Option | Stack | Trade-off |
|---|---|---|
| 1 — fastest | Flowise + vector DB (Pinecone/pgvector) + embeddable widget | Live in a day, no code; ceiling hit if logic gets custom |
| 2 — production | LangChain (retrieval/splitters) + LangGraph (loop, memory, streaming) + your own frontend | Full control, testable, versioned; ~weeks not days |
| 3 — ops-owned | n8n chat trigger + AI Agent node + vector store node | Non-devs can edit it; weakest at conversational depth |
None of these need MCP or Composio — a pure-RAG bot has no external tools.
2. Support bot that also does things (refunds, ticket creation)
| Option | Stack | Trade-off |
|---|---|---|
| 1 | LangGraph + MCP servers you write (billing/order API) + human-approval node | You own every connector; best for internal systems |
| 2 | LangGraph + Composio (Zendesk/Stripe/Slack) | Skips connector + OAuth work; vendor cost & dependency |
| 3 | Flowise + Composio tool nodes | Low-code and can act; approval flows get awkward |
| 4 | n8n (agent node + native Stripe/Zendesk nodes) | Retries/error branches for free; shallow reasoning |
3. Give Claude Code / Cursor access to your internal systems
| Option | Stack | Trade-off |
|---|---|---|
| 1 — correct answer | MCP server only | No framework needed. The IDE is the agent; you just supply tools |
| 2 | Composio hosted MCP endpoints | Instant coverage of third-party SaaS; not for your bespoke systems |
Do not reach for LangChain/LangGraph/n8n here — you'd be rebuilding a client that already exists.
4. Multi-tenant SaaS — agent acts inside each customer's Gmail/HubSpot
| Option | Stack | Trade-off |
|---|---|---|
| 1 — recommended | Composio (per-user token vault) + LangGraph | The one case Composio clearly wins: managed OAuth per end user |
| 2 | Self-hosted MCP servers + your own OAuth + token storage | No vendor, but you're now maintaining an auth product |
5. Nightly automation: pull data → LLM summary → Slack/email
| Option | Stack | Trade-off |
|---|---|---|
| 1 — recommended | n8n alone (cron → DB node → LLM node → Slack node) | Scheduling, retries, alerting all built in |
| 2 | Cron + a script using LangChain | Fine inside an existing codebase; you build the ops yourself |
Skip LangGraph — there's no agent loop here, just a pipeline.
6. Complex multi-agent workflow with branching + human approval
| Option | Stack | Trade-off |
|---|---|---|
| 1 — recommended | LangGraph (sub-graphs, checkpoints, interrupts) + MCP/Composio for tools | The job LangGraph exists for |
| 2 | n8n orchestrating calls to LangGraph services | Business users see/trigger the flow; reasoning stays in code |
| 3 | n8n alone | Only if "multi-agent" really means 3–4 sequential LLM steps |
7. Prototype now, productionise later
Flowise (validate the idea, days) → rewrite in LangChain + LangGraph (weeks) → tools stay put if you exposed them as MCP from the start.
MCP servers survive a framework change; anything wired directly into a Flowise or n8n node does not.
7. Common misconceptions
| Claim | Reality |
|---|---|
| "MCP is a framework" | It isn't. No loop, no state, no scheduler — it only defines how a client and a tool provider talk |
| "LangGraph replaced LangChain" | Complementary. LangChain = components, LangGraph = control flow; the current LangChain agent API sits on LangGraph |
| "n8n can replace LangGraph" | Only for shallow agents. Deep reasoning loops, sub-agents and mid-run approval belong in code |
| "Composio and MCP compete" | They overlap on what they deliver (tools) but differ on who operates it. Composio is distributed over MCP anyway |
| "Flowise is a toy" | Fine for production RAG/chat; the ceiling is custom control flow and team process, not traffic |
| "Composio just merges N API keys into one" | The one key is only how your agent reaches Composio. The real product is per-end-user OAuth + connector maintenance |
| "Visual builders can't supply tools to code agents" | Both n8n and Flowise can expose MCP — a canvas can be the tool provider for a LangGraph agent |
Sources: ZenML — LangGraph vs n8n · index.dev — Flowise vs LangGraph vs n8n · MadAppGang — open-source visual agent builders compared · Merge.dev — n8n vs Composio · Composio — n8n alternatives
Last updated: 2026-07-28.
Disclaimer: These documents are personal notes. The information may be incomplete, out of date or wrong, so check it before you rely on it.