The Model Context Protocol gives agents a standard way to call tools, read resources and use prompts. That standardisation is useful, and it also gives every connected server a path into your agent's context. This checklist is the minimum to review before an MCP server reaches production.

For the architecture behind these controls, see MCP Security Mechanisms & Layers and MCP Security for AI Agents. The MCP security hub links the full cluster.

The 12 controls

#ControlWhy it mattersHow to test
1Authenticate every transportAn unauthenticated MCP endpoint is a public tool API.Call without a token; expect 401.
2Per-caller identityShared service accounts hide who did what.Two callers should get different permissions.
3Tool allowlist and scopesNew tools should be inert until granted.Call an ungranted tool; expect denial.
4Schema validationMalformed arguments break tools and can smuggle payloads.Send wrong types, extra fields and oversized input.
5Input screeningTool arguments can carry prompt injection.Use the injection test cases from the detection guide.
6Output filteringTool results can leak secrets or instructions.Return a canary token; expect it to be blocked or flagged.
7Secrets isolationThe agent should never see raw credentials.Search logs and model context for secret patterns.
8Rate limits and quotasAgents can loop and exhaust resources.Run a burst; expect 429 and a clear error.
9Token budgetsLong tool outputs can blow context and cost.Send a large response; expect truncation or rejection.
10Audit logsYou need to reconstruct what the agent did.Check caller, tool, args hash, result status and timestamp.
11Network isolation and TLSServers should not expose internal services.Scan for open ports and plaintext endpoints.
12Versioning and incident responseTools change; a rollback path is required.Deploy a breaking change; verify rollback and alerting.

Three controls teams forget

Tool descriptions are attack surface. A malicious server can hide instructions in a tool description. Treat descriptions as untrusted input and review changes.

Tool results are untrusted input. An MCP server that reads the web can return an injection. Screen results before they enter the model context.

Approval is a control, not a UX detail. Irreversible actions need a human approval step outside the model's reach.

Minimum test suite

  1. unauthenticated call;
  2. caller A tries caller B's tool;
  3. malformed arguments;
  4. oversized input and output;
  5. injection in a tool argument;
  6. injection in a tool result;
  7. rate-limit burst;
  8. audit log completeness;
  9. rollback of a tool version;
  10. secret scan of logs and context.

FAQ

What is MCP security? The controls around Model Context Protocol servers and clients: authentication, authorization, input/output validation, isolation, rate limits and audit.

Is TLS enough? No. TLS protects transport; it does not stop an authorized caller from invoking a dangerous tool.

Should every tool require approval? No. Reads can be automatic; irreversible writes, sends and deletes should require approval.

How do I test an MCP server? Use the ten tests above, add them to CI, and run them whenever a tool or description changes.

Next step

Turn the table into a review checklist for every new MCP server. Pair it with least privilege for agents and the observability guide.