MCPSafe.io
RegistryThreatsMethodologyDocsPricingScanSign in
MCPSafe.io

Security checks for MCP servers — public packages and private repos, fast or deep.

Legal

Privacy PolicyCookie PolicyTerms of ServiceSecurity disclosure

Resources

State of MCP SecuritySupportSystem statusMade in Germany 🇩🇪

© 2026 MCPSafe. All rights reserved.

GDPR — Privacy Policy
← Threat Catalog

Configuration & Environment

Excessive permissions

HIGHAIVSS 8.3CWE: CWE-269OWASP: LLM06Agentic: T03Rule: MCP-120

The server — or the tokens it holds — can do much more than the tools it exposes actually need, so a single bug becomes a full compromise.

What it is

This is the least-privilege violation pattern. A tool that only needs to read issues has been given a GitHub admin token. A tool that only needs `SELECT` has a `root` database user. The tool implementation may be fine; the blast radius when it is not is unnecessarily large.

Why it matters for MCP

Because MCP servers are glued together from whatever credentials the user happened to have lying around, they routinely get more access than their tool list requires. Nobody runs a permissions audit when wiring a new server. The result is that "call MCP server X to do Y" often gives X access to do A through Z as well.

Vulnerable example

example.py
1
# Single OAuth scope: repo (full read/write on all repos)
2
# Tool only needs to open issues.
3
GH = github.Client(token=os.environ["GH_TOKEN"], scopes=["repo"])
4
5
@server.tool()
6
def open_issue(repo: str, title: str, body: str) -> int:
7
    return GH.create_issue(repo, title, body).id

Secure example

example.py
1
# Request only the scopes the tool set actually needs.
2
GH = github.Client(
3
    token=os.environ["GH_TOKEN"],
4
    scopes=["public_repo", "read:user"],  # write only to public repos
5
)

How MCPSafe detects this

We diff the capabilities of advertised tools against the scopes/permissions the server requests at startup. Excess scopes are surfaced with a specific remediation ("drop `delete_repo`; none of your tools need it").

See the full threat catalog for every documented detection.

Framework alignment

OWASP LLM Top-10 (2025)
LLM06 — Excessive Agency
OWASP Agentic AI Top-10
T03 — Privilege Compromise
AIVSS v0.5
8.3 (HIGH)AIVSS:1.0/S:HIGH/AV:N/AU:M/BR:H/CD:I

Further reading

  • CWE-269: Improper Privilege Management
  • NIST SP 800-53 AC-6: Least Privilege

Scan an MCP server for this issue

MCPSafe runs this check — and every other rule in the catalog — on any MCP server you paste in.

Scan now