cd /news/ai-agents/a-happy-path-mcp-demo-proves-almost-… · home topics ai-agents article
[ARTICLE · art-126561] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=· neutral

A happy-path MCP demo proves almost nothing about tenant isolation

A developer built an open-source preflight scanner for Model Context Protocol (MCP) servers that checks tool metadata and behavior for tenant-isolation and scope risks before deployment. The scanner runs four static rules (MCP-001 through MCP-004) covering unsafe command declarations, excessive filesystem or network scope, secret-like values in metadata, and untrusted input reaching sensitive operations, plus behavioral checks against a local fixture server, producing Markdown and JSON reports with pass, fail, blocked, or incomplete statuses. The developer frames it as a bounded first pass that narrows the surface for human security review rather than a penetration test or certification.

by read2 min views3 publishedSep 11, 2026

Most MCP demos look the same. A tool is registered. A client calls it. The tool returns the expected data. Everyone nods.

That demo tells you the tool can work. It tells you nothing about what happens when the tool is given the wrong tenant ID, or when it declares scope it should not have, or when it is about to reach users who did not write it.

I built a preflight scanner for exactly that gap. This post is about what a bounded preflight can actually check, and what it honestly cannot.

An MCP tool is a capability. Some capabilities are safe to hand out freely. Others are not.

Common risky declarations:

filesystem:* or network:* scope when it only needs to read one directory. These are not exotic. They show up in real MCP servers being shipped right now.

The scanner I built runs two kinds of checks: static and behavioral.

Static rules look at the tool metadata: name, description, declared scopes, and any command patterns. Four rules cover the common cases: MCP-001: unsafe command declaration. Anything that runs a shell or takes a free-form command string.MCP-002: excessive filesystem or network scope. Anything that declares network:egress when the tool clearly does not need it.MCP-003: secret-like value in tool metadata. Anything that looks like an API key, token, or password embedded in a description or default config.MCP-004: untrusted input reaching a sensitive operation. Anything where user input flows into a command, a file path, or a URL without an obvious boundary. Behavioral checks actually call a local fixture server and observe what happens:

Each check produces a pass, fail, blocked, or incomplete status. Nothing is reported as a pass if it was not actually run.

One run produces both a Markdown report and a JSON report. Each finding has:

The point is that a finding becomes an engineering task, not a vague warning.

It is not a penetration test. It is not a certification. It is not a scan of a real customer environment. It does not replace a real security review.

It is a bounded, repeatable first pass. It catches the obvious things before they ship, and it does so without pretending to be more than it is.

A preflight can tell you that a tool declares too much scope. It cannot tell you that the scope is intentional and appropriate for the business. That is a decision for the team.

A preflight can tell you that a write tool ran without an approval. It cannot tell you whether the approval was correctly granted in a real workflow. That is a process question.

The scanner is a filter. It narrows the surface for the human review that still has to happen.

The code is at github.com/glatinone/mcp-security-preflight. If your team is about to expose MCP tools to users or internal agents and wants a bounded first pass, I take short sprints on exactly this. kielltampubolon.id

── more in #ai-agents 4 stories · sorted by recency
── more on @model context protocol 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/a-happy-path-mcp-dem…] indexed:0 read:2min 2026-09-11 ·