🔐
Tools/MCP Server Security Audit

MCP Server Security Audit

Audit an MCP server against the OWASP MCP Top 10. Nine questions, a graded score, and a concrete remediation list.

OWASP MCP TOP 10
A calculadoraPage 1
Only used to label the report.
TICK WHAT IS TRUE OF THIS SERVER
Authentication on every requestAPI key or OAuth bearer token, rejected at the edge.
Credentials hardcoded in source or configThey leak into logs, model memory and repository history.
Untrusted input interpolated into commands or queriesModel output reaching a shell or a raw query string.
Reads or writes files from model-supplied pathsWithout confinement to an allow-listed root.
Spawns shell commands or processesExpands the blast radius of any prompt-injection success.
Runs over local STDIO transportExecutes commands with no sanitisation or execution boundary.
Published with build provenance attestationVerifiable build chain, so a compromised publish is detectable.
Outbound network destinations restrictedBlocks exfiltration and SSRF to metadata endpoints.
15/ 100
FDo not deploy
6 findings · 1 critical · 3 high
85 points deducted
CRITICALInsufficient Authentication & AuthorizationMCP01
No authentication enforced. The MCP SDK ships no built-in auth — it is entirely the implementer’s responsibility.
Fix: Require an API key or OAuth bearer token on every request; reject anonymous calls at the edge.
HIGHPath TraversalMCP04
File paths come from model output without confinement. 82% of surveyed implementations are exposed to this.
Fix: Resolve every path against a fixed allow-listed root and reject anything that escapes it.
HIGHArbitrary Code Execution SurfaceMCP05
The server spawns processes, expanding the blast radius of any prompt-injection success.
Fix: Drop privileges, sandbox the child process, and allow-list the executables that may be invoked.
HIGHSTDIO Supply-Chain ExposureMCP06
Local STDIO transport executes commands with no sanitization or execution boundary. Anthropic confirmed this behaviour is intentional and declined to change the protocol. Hosted/remote servers are not affected.
Fix: Prefer a hosted Streamable HTTP endpoint where one exists; otherwise pin versions and audit every installed server.
MEDIUMMissing Build ProvenanceMCP07
The package ships without verifiable build-chain attestation, so a compromised publish would be undetectable.
Fix: Publish via GitHub Actions trusted publishing and attach provenance attestations.
MEDIUMUnrestricted Network EgressMCP08
Outbound destinations are unrestricted, enabling data exfiltration and SSRF.
Fix: Allow-list outbound hosts; block link-local and metadata endpoints explicitly.
OWASP MCP TOP 10 — REFERENCE
IDOWASP riskChecked here asStatus
MCP01Token Mismanagement & Secret Exposurehardcoded credentialsclear
MCP02Privilege Escalation via Scope Creepnot covered
MCP03Tool Poisoningnot covered
MCP04Software Supply Chain AttacksSTDIO transport · build provenancefinding
MCP05Command Injection & Executioncommand construction · process spawningfinding
MCP06Intent Flow Subversionnot covered
MCP07Insufficient Authentication & Authorizationauth on every requestfinding
MCP08Lack of Audit & Telemetrynot covered
MCP09Shadow MCP Serversnot covered
MCP10Context Injection & Over-sharingfile-path confinement · network egressfinding
The eight questions map onto five of the ten OWASP categories. Privilege escalation via scope creep, tool poisoning, intent flow subversion, shadow servers and context over-sharing are architectural concerns that cannot be established from a self-assessment questionnaire, so they are marked not covered rather than clear. Note also that the finding IDs on the cards above are this audit’s own numbering — they share the MCP prefix with OWASP’s IDs but do not mean the same thing, which is why this table maps by meaning rather than by number.
Data Source & Legal Disclaimer
Effective: Control set reviewed 2026-09
Sources: OWASP MCP Top 10 (2026) · MCP specification security guidance · public CVE data Jan–Feb 2026

This is a self-assessment checklist, not a penetration test. It reflects the answers you give and cannot detect a vulnerability you are unaware of. Treat a high score as 'no known misconfiguration in these nine areas', not as proof of security.

See all data sources & update policy →
Como funcionaPage 2

30+ CVEs in 60 days — and not one of them was clever

Between January and February 2026 more than thirty CVEs were filed against MCP servers, clients and infrastructure. The striking thing is what they were not: they were not sophisticated zero-days. They were missing authentication, path traversal, command injection and hardcoded credentials — the same four classes that have topped web-application risk lists for a decade. CVE-2026-32211 (Azure MCP Server, CVSS 9.1) had no authentication at all, and no patch was released. The lesson is that MCP servers are being written fast, by people focused on capability rather than threat modelling, and the MCP SDK deliberately provides no authentication layer — it is entirely the implementer’s responsibility. This checklist walks the eight highest-yield questions.

Where an MCP server actually gets attacked
MODEL OUTPUTmay carry aprompt injectionMCP SERVERauth on every call?MCP07file paths confined?MCP04commands built safely?MCP05egress allow-listed?MCP08CONFINEDblast radius limitedto the tool’sdeclared scopeUNCONFINEDreads your .envexfiltrates secretsruns as your user

Untrusted input arrives from the model, not from a browser. The model may itself be carrying a prompt injection from a poisoned document, so every value it supplies has to be treated as attacker-controlled — which is why path handling, command construction and auth are the recurring failure points.

A local filesystem server that looks harmless and scores F

A developer installs a community filesystem MCP server over STDIO. It has no auth (it is local, after all), reads paths supplied by the model, and was published straight from a laptop.

  1. MCP07 no auth:−30 — the SDK provides none, and "it is local" is not a control once a prompt injection is involved
  2. MCP04 path traversal:−15 — paths come from model output with no allow-listed root
  3. MCP06 STDIO:−12 — local transport executes commands with no execution boundary
  4. MCP07 provenance:−8 — no build attestation, so a compromised republish would be invisible
  5. Result:35/100 — grade F, verdict do not deploy
Joke of the Day
Sep 15

Why did the cow cross the road?

Free core, forever

Keep the Free Edition Free

No signups, no data sold. The core of every tool is free forever — the optional Pro plan adds batch processing, unlimited downloads, white-label exports and an ad-free experience.

Support me on Ko-fi— keep tools free

100% of proceeds go towards hosting & building more free tools.