The Model Context Protocol has become the standard plumbing between AI agents and the tools, files, and internal systems they touch. That is convenient for developers and attractive to attackers: an MCP server sits on the boundary between model-generated text and real credentials, shell commands, and internal network endpoints. A single misconfigured mcp.json can hand an agent-driven request a path to cloud credentials or an internal metadata service.

This checklist is a practical attack-surface self-assessment you can run against your own MCP deployment in an afternoon. It is organized around the areas that show up repeatedly in disclosed MCP ecosystem vulnerabilities, and each item includes what to check and what good looks like.

Why the MCP layer is the attack surface

Before the protocol, an agent calling a tool meant bespoke integration code between one framework and one API. MCP standardized that connection, and the standardization is exactly what widened the surface: a single configuration file now grants an agent access to shell-capable utilities, database clients, browser automation, and internal HTTP services. Security controls that used to live inside application code — authentication, input validation, egress policy — moved partly into configuration and partly into third-party server packages that teams install without reading.

The threat model follows from that shift. An attacker does not need a zero-day in the model. They need one of three things: a prompt the model follows (prompt injection), a tool that over-trusts model-supplied arguments (injection and SSRF), or a configuration that hands the process ambient credentials (credential leakage). The checklist below is organized so that each section closes one of those three paths.

How to use this checklist

Walk the eight sections below in order. For each item, verify the configuration file, the server implementation, or both. Critical items are the ones that have appeared as direct exploit paths in real MCP ecosystem CVEs — our detection rules are grounded in those disclosures. At the end, we show how to automate the configuration portion with a free scanner.

1. Transport and authentication

2. Credential and secret handling

3. Tool surface minimization

4. SSRF and egress control

5. Command execution

6. Prompt injection boundaries

7. Logging, budgets, and kill switch

8. Dependencies and supply chain

Automating the self-check

The configuration portion of this checklist can be scanned automatically. The open-source correctover-scan CLI inspects MCP configuration files — including .cursor/mcp.json, claude_desktop_config.json, and .claude/mcp.json — for credential exposure, missing transport encryption, SSRF exposure, missing timeouts, and related misconfigurations, with results mapped to OWASP AISVS control IDs:

# Auto-detect and scan all MCP configs in the current directory
npx correctover-scan

# Scan a specific file
npx correctover-scan mcp.json

# SARIF output for the GitHub Security tab
npx correctover-scan -f sarif > report.sarif

In CI, the correctover-scan GitHub Action runs the same checks on every push and pull request, optionally failing the build on critical findings and uploading SARIF. Source and issues live in the correctover-scan repository; the package is on npm.

A configuration scan catches the deployment mistakes above. It does not reason about your agent’s code — for example, whether a tool handler concatenates model output into a shell string, or whether a free-text output field leaks credentials. That requires semantic analysis of code and traces, which is what a deeper audit covers.

Reading the scan results

A scanner report is only useful if the severities mean something. Treat findings in three tiers:

If the same finding appears in multiple MCP configs — for example every developer machine carries a token inline — fix it once at the source: move the secret to an environment-injected value or secrets manager and document the pattern, rather than editing twelve config files by hand.

A 30-minute first pass

If you have never audited your MCP setup, the fastest path to signal is short: run npx correctover-scan at the repository root, read the critical findings, and grep the same files for the high-signal strings scanners can miss — shell: true, child_process.exec with template literals, eval(, and hardcoded URLs containing 169.254.169.254 or localhost management ports. Configuration scanning catches what can be detected declaratively; that targeted grep catches the code patterns a config scanner structurally cannot see.

Turning results into a baseline

Treat the first scan as a baseline: fix critical findings, gate new ones in CI, and re-run after any change to tools or credentials. A hardened MCP deployment is not a one-time state — it is a baseline you keep verifying as the agent grows.

Free 1-page audit summary — reply with your repo link

Want a quick read on your own agent or MCP setup before a full review? Send us a repository link and we’ll return a free 1-page scan summary covering the findings our semantic engine flags, with concrete fix pointers.

Get your free 1-page summary

Details: correctover.com/agent-audit.html