Multi-Agent MCP Topologies in Production
Choosing the wrong agent topology costs you in security, latency.

Multi-agent systems built on MCP fail for a specific reason: nobody decided, at design time, who talks to whom and who watches what happens next. That decision is the topology. It determines where access controls live, where a breach gets contained, and whether you find out about a problem in real time or three weeks after an audit. I've watched teams skip this decision entirely and pay for it later, usually at the worst possible moment.
MCP itself is narrow by design: one host, one client, one or more servers exposing tools, resources, and prompts over JSON-RPC 2.0. It solved a real problem, since the old world had every model wired to every enterprise system through its own custom connector, an M×N mess that never scaled past a handful of integrations, and MCP replaced that with one standard interface. The spec draws a hard line at the model, though. It doesn't touch agent-to-agent delegation, task sequencing, or how one agent negotiates capabilities with another. The moment a second agent shows up, someone has to decide how these agents relate to each other and to the MCP servers they share. Nobody hands you that answer. You build it, and the shape you build becomes your governance model whether you meant it to or not.
How the MCP spec has evolved to address production multi-agent realities
The spec has moved on a steady cycle since November 2024. Each release adds either a way for agents to coordinate or a way to govern them, sometimes both at once.
March 2025 brought Streamable HTTP transport and OAuth 2.1 authorization: groundwork for deployments spanning multiple environments and organizations instead of living on one machine. November 2025 added the Tasks primitive, letting agents kick off long-running, asynchronous work instead of blocking on a single request-response cycle. That release also introduced incremental scope negotiation, so permissions get granted step by step instead of all at once at install, plus Cross App Access (XAA), which puts the enterprise identity provider in the middle of every agent-to-tool authorization decision. Then in July 2026, the protocol core went stateless, turning MCP from a bidirectional, session-heavy protocol into plain request/response, a direct fix for reliability and scaling across multi-server setups. That same release standardized W3C Trace Context propagation inside _meta, giving every SDK and gateway a common way to pass tracing data along.
A pattern here, if you squint: every major version adds a coordination primitive or a governance mechanism, sometimes clumsily, but it's catching up to what production topologies actually need. The ground underneath got sturdier too. The spec moved under the Linux Foundation's Agentic AI Foundation in December 2025, and adoption followed fast, something like half a billion monthly SDK downloads across the Tier 1 SDKs by mid-2026 (and yes, I'd love a cleaner source on that number, but every practitioner I talk to says the growth curve feels right).
The spec still won't pick your topology, wire your policy enforcement, or set up your observability. That part's on you, and it was always going to be.
Hub-and-spoke topology: what it controls well and what it concentrates
Picture one orchestrator taking in a request, breaking it into pieces, handing each piece to a specialist worker agent, then pulling the results back together. Every worker touches the same shared MCP servers, and every delegation passes through that one hub first.
This shape buys you a lot. Access checks and tool-call validation happen at the hub, before any worker ever reaches a server, so you get one enforcement point instead of many scattered across the system. Every action a worker takes was preceded by a decision the orchestrator made, which gives you a clean record of intent sitting right next to a record of action. And because the orchestrator is the only node that sees the whole workflow, it's also the only place actually equipped to catch a loop before it spirals into something expensive.
The math is friendly too: add a worker, add one connection, and with N workers and one hub, your access-control surface grows in a straight line instead of exploding on you.
Here's the catch, though, and it's not a small one: if the orchestrator gets compromised or misconfigured, that failure doesn't stay contained. It reaches every worker and every downstream server at once. The same node holding your governance is the same node holding your blast radius, which is a strange thing to sit with once you notice it. There's also a practical ceiling. Past roughly seven specialist agents, the routing logic and context juggling at the hub start costing you latency and accuracy, and Teams do push past that number, and the overhead usually isn't worth it. Hub-and-spoke earns its keep when the agent roster is stable, bounded, and auditability matters more than anything else in the room.
Full-mesh topology: the fault-tolerance case and its hidden governance cost
Cut out the coordinator entirely and let agents talk straight to each other, calling whatever other agent or MCP server they hold credentials for. That's full mesh. The pitch is straightforward: with no single point of failure, one agent drops and the rest keep moving instead of waiting on a coordinator to reshuffle the plan.
The cost shows up fast once you start counting connections. Four agents give you six pathways; eight agents give you twenty-eight. Each pathway is a door that needs its own lock, and the number of doors grows a lot faster than the number of agents does. Nobody owns the global state, either, which is the part that trips people up. Agents running in parallel act on partial or conflicting information, and the contradictions that surface trace back directly to the wiring, not to the model. Reconstructing "what happened" means stitching together logs scattered across every node, since there's no single ledger anywhere in the system, and I've spent entire afternoons doing exactly that kind of stitching for a client who swore their agents were "hallucinating."
They weren't, mostly. Vendor research from AetherLink in 2026 found that hierarchical orchestration with a clear lead agent cut hallucination errors by 47% compared to flat peer-to-peer setups. It's a vendor number, so hold it loosely, but the direction is worth sitting with regardless: a lot of what looks like a model problem is actually a structure problem. Give agents a clear frame and coherent context, and errors that looked like hallucinations start disappearing.
Full mesh holds up at four agents or fewer, and only if you bolt on an explicit aggregator that checks outputs before they leave the cluster. Every connection in a mesh is effectively an identity, and every identity needs to be registered, credentialed, watched. The connections nobody got around to registering are exactly the ones that get exploited, every single time. Reach for mesh when fault tolerance is non-negotiable, the agent count is small and fixed, and you've built in aggregation discipline from day one rather than bolting it on after something broke.
Hierarchical topology: scaling past a single hub without losing accountability
Once you outgrow a single hub, the tree is usually where you land. A root orchestrator delegates to domain-level coordinators, and those coordinators delegate down to specialist workers. MCP server access spreads across branches instead of piling up at the root.
The logic here is simple enough: past around seven agents, a single hub drowns in routing logic. A tree pushes coordination closer to the actual work while keeping the accountability chain intact, and it gives you failure containment almost for free. A compromised coordinator affects its own branch, not the whole system. Branches naturally separate by function too, so access controls fall into place the same way. A finance coordinator's workers need permissions that have nothing to do with what an infrastructure coordinator's workers need, and the tree makes that segmentation obvious instead of something you have to invent from scratch.
The real governance work happens at the handoffs, though, and this is where I've seen the most breakage. Every time one node passes a task to another, that's a spot where context can get lost, privilege can creep upward, or an instruction can slip through unverified. Verification at every handoff boundary is the core job, however much overhead it adds.
Keep the tree to two levels, root to coordinators to workers, and you can still trace which node authorized which action. Add more depth and that traceability erodes fast, faster than most people expect. Some lateral communication is fine: small clusters of two or three agents collaborating within a branch don't blow up your access surface the way full mesh does. But each lateral link still needs its own credentials and its own place in the audit trail, no exceptions, even for the small ones.
What actually pushes teams toward hierarchy in practice is the sheer number of MCP servers a real deployment needs. Most enterprise AI setups end up wiring in a lot of different data sources, and the common pattern is a dedicated server per system: one for GitHub, one for Salesforce, one for the internal database, and so on. A flat structure can't absorb that many servers without turning into an access-control nightmare, while a tree usually can.
Why production systems are converging on hybrid and adaptive topologies
No single topology wins across the board, and I'll admit that took me longer to accept than it should have. AugmentCode's AdaptOrch benchmark found that letting a router pick the topology per task beat the best static baseline by 22.9%, and the router's choices were telling: 62% hybrid, 24% parallel, 14% hierarchical. Nothing dominated. The right shape depends on the task in front of you, not on some universal best practice, which means production systems need a layer that can pick a topology and switch it rather than commit to one at launch and hope.
What's actually showing up in the field looks something like this: MCP handles the external integrations, tools and resources, and a separate layer handles agent-to-agent coordination, whether that's the A2A protocol or an orchestration framework like LangGraph. SAP's AI Agent Hub has made that split explicit rather than leaving it implicit, which I think is the right call. It's a clean division of labor, but it comes with a catch: each layer carries its own access-control model, and an agent operating across both needs identity and permissions that hold together across the seam. Leave that seam loose and it becomes the easiest way in, full stop.
Worth naming a third wiring option too: a message bus, publish-subscribe style, which isolates latency and handles retries better than direct calls do. The tradeoff is asynchronous state that needs its own observability, since messages in flight don't show up in a synchronous call log anywhere you can easily look.
None of this works if it happens by accident, and most of it does happen by accident. Hybrid topologies succeed when the rules get spelled out ahead of time: which tasks route where, who owns state at each boundary, where the governance controls sit in each mode. Teams that back into a hybrid setup through years of incremental fixes end up with every failure mode of every pattern they've touched, and the governance infrastructure of none of them. That scenario leaves teams holding every failure mode of every pattern they've touched, with the governance infrastructure of none of them.
Where the MCP server proliferation problem intersects with topology governance
Here's how a clean hub-and-spoke turns into a mess over eighteen months. A team spins up a dedicated MCP server for GitHub, then one for Salesforce, then one for the internal database, then a few more for internal APIs. Each server needs its own maintenance, its own credentials, its own security review, and none of that individual work was wrong to do. But the protocol tells you how servers talk, not how to keep a dozen of them coordinated, policy-consistent, or even fully inventoried. Every server added without a matching governance entry is a small amount of debt, and it compounds quietly until it doesn't. MCPManager, a Usercentrics product, sits as a centralized audit layer over exactly this kind of accumulating MCP access.
The scale of the problem is real. Industry research puts the share of enterprises needing access to eight or more data sources for their AI agent deployments at 42%. Managing governance server by server stops being realistic well before you hit that number. There's also a gap between where these servers live and where they run: most MCP servers today sit on developer laptops, running locally, with only a small slice ever making it into production, according to security research published in 2026. That local environment is exactly where ungoverned access patterns take root, long before anyone in security even knows the server exists.
The fix that's emerging is the MCP gateway. Instead of managing N servers individually, a gateway gives you one interface in front of all of them, which puts you right back in hub-and-spoke territory for governance purposes: one enforcement point, one audit trail, connections that grow in a line instead of exploding, no matter what topology the agents on top of it happen to be running. A gateway is what makes it possible to see, in real time, which agent is calling which server with what permission, apply consistent role-based access across the entire server inventory, and keep an actual registry so every server has an owner and an identity attached to it. That kind of control layer centralizes policy, adds the guardrails a production multi-agent system needs, and draws on enterprise data governance practice instead of treating access control as an afterthought bolted on at the end.
How topology shape determines where real-time observability must live
Where you have to watch depends entirely on how the system is wired, and that's easy to miss until it costs you something. Hub-and-spoke puts visibility in one place, the orchestrator, while mesh spreads it across every node and hierarchy spreads it across levels. The topology decides where you need instruments before you've even decided what those instruments measure.
Post-incident logs don't cut it in a mesh or a hybrid system, not really. By the time a log entry shows an agent made a tool call, the data's already been read, the API's already been hit, the state's already changed. A log tells you what happened, after the fact, with zero power to stop anything in progress.
The July 2026 spec's addition of W3C Trace Context is a direct answer to that gap. Standardized traceparent and tracestate propagation means a distributed trace can now be stitched together across an entire topology, SDKs and gateways included. That only works if every node is actually instrumented to carry and emit that data, which is a real lift, not a checkbox you tick and move past.
The Tasks primitive adds a new wrinkle on top of it. A task can sit in working, input_required, completed, failed, or cancelled for stretches of real time, and a multi-agent workflow built on Tasks can now span intervals where the intermediate state is completely invisible, unless your observability layer was built to track task handles specifically and not just watch synchronous calls come and go.
There's a real-world case worth sitting with here: a multi-agent system built for 5G core security operations, reported by InfoQ, cut detection and response times substantially and took a real chunk out of the human workload behind it. Every agent action in that system, asset lookups, topology queries, incident history pulls, runs through MCP servers. What makes that system trustworthy is that someone can watch, in real time, exactly what every agent is doing as it's doing it, more than any gain in raw speed. That's the difference between a demo and something a security team will actually stake their name on.
Authorization models that match topology-specific access patterns
The November 2025 shift to OAuth 2.1 changed something basic: MCP servers now act as OAuth resource servers, and incremental scope negotiation replaces the old model of granting every permission upfront at install. An agent gets a permission when the current step of a workflow actually needs it, and only then.
That matters a lot more in a hierarchical or hybrid setup than it does in a single-agent tool call, since different branches of a tree touch different systems. Grant full permissions at the root and let them inherit down, and now every worker in the tree holds every permission any branch might ever need, which is a much bigger attack surface than the job in front of it requires. Incremental scoping keeps each agent holding only what its current task calls for, with nothing sitting around unused and unwatched, waiting to be found by someone who shouldn't find it.
Cross App Access brings the enterprise identity provider into the loop as the actual decision-maker, which is the part I find most reassuring about this whole shift. When an agent asks for authorization, the IdP checks three things: is this agent cleared for production, does the user delegating this access actually have the right to grant it, and does the request fit policy. It's the enterprise's existing identity infrastructure doing what it already does for human users, just extended to cover agents now too. That's the only way authorization holds up as agent counts climb into the hundreds and topologies keep shifting between hub-and-spoke, mesh, and hierarchy depending on what the task in front of them actually needs at that moment.


