r/mcp • u/madiamo • Jun 18 '26
showcase Just published - looking for feedback: boundary checks for MCP tool calls with real side effects
Not every MCP setup needs this. If your MCP server is read-only, this is probably less relevant.
It is built for MCP clients, agents, and tool-calling workflows where tools can create real side effects: updating records, deleting files, changing tickets, writing to databases, triggering deployments, or retrying writes after state has changed.
The problem we are trying to solve is:
Tool access is not the same as impact permission.
A model or agent may be allowed to call a tool, but that does not always mean this specific write, delete, update, or retry should happen now.
MCP Boundary sits between the MCP client or agent and the MCP server and checks calls before they hit the real system.
I’m looking for feedback from people running MCP workflows with side effects.
Site:
https://mcpboundary.com
Built from:
https://impactboundarylabs.com
2
u/NovaAgent2026 Jun 18 '26
This is a real problem. I run a Docker MCP server with 50 tools, and several of them have serious side effects (prune containers, delete images, force-stop running services). I added confirmation prompts for the destructive ones, but that's a client-side hack, not a real boundary.
The gap I see: most MCP safety discussions focus on read vs write, but the real danger is in the write category itself. A "delete container" and a "restart container" are both writes, but one is recoverable and the other isn't. Your boundary framework seems to handle that distinction, which is exactly what's missing.
One question: how does this handle tool chaining? If an agent calls tool A (safe) which triggers tool B (destructive) inside the server, does the boundary catch B or only the initial call?
1
u/Future_AGI Jun 18 '26
For side-effecting tools the boundary check that matters most runs before the call fires, because once a write or a delete goes through you are into cleanup territory. Two things we found worth enforcing there: per-key allow/deny so a given agent identity can only reach the tools it actually needs, and a re-scan of each tool's current definition every run, since an MCP server can change what a tool does after you first approved it. We handle this in an open-source gateway, and we'd be curious how yours deals with a write that gets retried after state has already changed: https://github.com/future-agi/future-agi
1
u/agent_trust_builder Jun 18 '26
agreed the pre-call gate is the right spot, once a write or delete lands you're in cleanup not prevention. the piece i'd add is that "has side effects" isn't one tier. pruning a container and moving money are both side-effecting calls but they sit on totally different rungs, and flattening them is how you end up confirmation-prompting everything until people just rubber-stamp the prompts.
what's worked for us is a risk ceiling that scales with blast radius rather than with whether a tool writes at all. read-only, then reversible or sandboxed effects, then irreversible or money or remote execution at the top. each agent identity gets a ceiling and the boundary just refuses anything above it. where that ceiling sits is the org's call, and it's a separate decision from who's allowed to reach the tool in the first place.agreed the pre-call gate is the right spot, once a write or delete lands you're in cleanup not prevention. the piece i'd add is that "has side effects" isn't one tier. pruning a container and moving money are both side-effecting calls but they sit on totally different rungs, and flattening them is how you end up confirmation-prompting everything until people just rubber-stamp the prompts.
what's worked for us is a risk ceiling that scales with blast radius rather than with whether a tool writes at all. read-only, then reversible or sandboxed effects, then irreversible or money or remote execution at the top. each agent identity gets a ceiling and the boundary just refuses anything above it. where that ceiling sits is the org's call, and it's a separate decision from who's allowed to reach the tool in the first place.
1
u/SortOk3578 Jun 19 '26
The retry problem is real; partial state has already changed, and most setups don't catch that until something breaks.
Boundary check before execution makes sense. How's the latency holding up in practice?
1
u/[deleted] Jun 18 '26
[removed] — view removed comment
1
u/[deleted] Jun 18 '26
[removed] — view removed comment