DEV Community

Cover image for How to Run MCP Servers in Production (Security, Scaling & Governance for AI Tooling)

How to Run MCP Servers in Production (Security, Scaling & Governance for AI Tooling)

Hadil Ben Abdallah on March 20, 2026

Over the past year, MCP servers have quickly become one of the most important building blocks in modern AI systems. Instead of limiting LLMs to st...
Collapse
 
hanadi profile image
Ben Abdallah Hanadi

This really captures the shift from “cool demo” to real infrastructure. MCP feels simple at first, but the moment you scale, governance becomes unavoidable.
The gateway layer insight is spot on.

Collapse
 
hadil profile image
Hadil Ben Abdallah

Exactly. That transition is where most of the real challenges start.

MCP makes it feel easy in the beginning, which is why the infrastructure side often gets overlooked. But once it touches real systems, governance isn’t optional anymore.

Glad the gateway layer insight resonated 😍

Collapse
 
ashita profile image
Ashita Prasad

Nice article.
I too have been exploring MCP servers in the context of MCP apps where the agent renders interactive UI inside the chat.
You can also check out my article here - dev.to/ashita/a-practical-guide-to...

Collapse
 
hadil profile image
Hadil Ben Abdallah

Thanks; I really appreciate it!

That’s a super interesting angle; MCP + interactive UI inside chat opens up a whole new layer of possibilities. I’ll check out your article

Collapse
 
aidasaid profile image
Aida Said

Loved how you broke down the hidden complexity behind MCP setups. It’s not about connecting tools; it’s about controlling them. The Bifrost angle makes the whole architecture feel much more practical.
Thank you for sharing 👏🏻

Collapse
 
hadil profile image
Hadil Ben Abdallah

Really appreciate that; glad it landed.

That’s exactly the shift I was aiming to highlight: the complexity isn’t in plugging tools in; it’s in controlling how they’re used once things scale.

Happy the Bifrost angle made it feel more concrete 🔥

Collapse
 
klement_gunndu profile image
klement Gunndu

The tool permission sprawl you describe is real — even tool-level access control isn't granular enough once agents start chaining multiple MCP calls in a single reasoning step. Have you seen teams implementing per-chain audit trails rather than per-tool?

Collapse
 
hadil profile image
Hadil Ben Abdallah

That’s a great point; tool-level control starts to fall short pretty quickly once chains get involved.

Yeah, I’ve seen some teams move toward per-chain tracing/auditing, especially to capture the full reasoning path instead of isolated calls. It makes debugging and accountability way clearer.

Feels like that’s where observability is heading next.

Collapse
 
thedevmonster profile image
Dev Monster

Super relatable progression from experimentation to production pain. The idea of treating MCP as infrastructure, not just tooling, is something a lot of teams realize too late.
Great clarity here 👍🏻

Collapse
 
hadil profile image
Hadil Ben Abdallah

Really appreciate that; glad it resonated.

That shift tends to happen a bit “too late” for a lot of teams 😅
Once MCP is treated as infrastructure, everything starts to make a lot more sense.

Collapse
 
sidclaw profile image
SidClaw

good breakdown of the gateway layer. one distinction worth drawing: the governance here is mostly access control -- which tools an agent can use, rate limits, cost budgets. that's necessary but it stops at the boundary.

the gap i keep running into is action-level governance. not "can this agent call this tool" but "should this specific call, with this specific payload, execute right now?" a DELETE query against a production database is syntactically the same as a SELECT. the gateway sees both as valid tool calls. but one of them probably shouldn't execute without someone reviewing the actual query first.

klement's point about per-chain audit trails is exactly right too. once agents chain 3-4 tool calls in a single reasoning step, per-tool logs don't capture the decision path. you need the full chain -- what the agent was trying to do, which tools it called, and why it decided on the next step.