Skip to main content

Security Checklist

MCP Server Vetting Checklist

A practical, category-by-category security review for evaluating third-party MCP servers before you connect them to your agents.28 checks across 7 categories. 9 are critical.

MCP server vetting checklist showing security review categories

How to Score

2428 / 28

Low risk. Server follows security best practices. Connect with standard monitoring.

1623 / 28

Medium risk. Gaps exist. Require fixes for critical items before connecting. Sandbox heavily.

015 / 28

High risk. Do not connect this server to production agents. Major security work required.

01

Authentication & Identity

(4 checks)
Server requires authenticationCRITICAL

The server does not expose tools to unauthenticated callers. API keys, OAuth tokens, or mTLS are enforced on every request.

Credentials are not hardcodedCRITICAL

No API keys, tokens, or passwords appear in source code, config files, or Dockerfiles. Secrets come from environment variables or a secrets manager.

Token rotation is supportedHIGH

The server supports rotating credentials without downtime. Short-lived tokens are preferred over long-lived ones.

Scoped permissions per clientHIGH

Different clients can be granted different tool subsets. A read-only client cannot invoke write tools.

02

Input Validation

(4 checks)
All tool inputs are validatedCRITICAL

Every parameter has type checking, length limits, and format validation. No raw user input reaches internal APIs or shell commands.

Path traversal is blockedCRITICAL

File paths are resolved and checked against an allowlist. Inputs like ../../etc/passwd are rejected before reaching the filesystem.

SQL injection is preventedCRITICAL

All database queries use parameterized statements. No string concatenation builds SQL from tool inputs.

Input size limits are enforcedHIGH

Large payloads are rejected at the transport layer. No tool accepts unbounded strings, arrays, or file uploads.

03

Sandboxing & Isolation

(4 checks)
Server runs in a container or VMCRITICAL

The MCP server does not run directly on the host. It is isolated in a container, VM, or at minimum a restricted user account.

Filesystem access is restrictedHIGH

The server can only read/write specific directories. Host filesystem mounts are read-only or scoped to a working directory.

Process execution is limitedHIGH

The server cannot spawn arbitrary subprocesses. If it runs commands, they are allowlisted and parameterized.

Resource limits are setMEDIUM

CPU, memory, and disk usage are bounded. A misbehaving tool cannot consume all host resources.

04

Network Access

(4 checks)
Outbound connections are restrictedHIGH

The server cannot make arbitrary HTTP requests. Egress is limited to known endpoints via firewall rules or proxy.

No SSRF vectors existCRITICAL

User-supplied URLs are validated against an allowlist. Internal network addresses (169.254.x.x, 10.x.x.x, localhost) are blocked.

TLS is enforced for external callsHIGH

All outbound HTTP connections use TLS. No plaintext HTTP to external services.

DNS rebinding is mitigatedMEDIUM

The server resolves DNS once and pins the IP, or uses a DNS proxy that blocks rebinding attacks.

05

Audit Logging

(4 checks)
Every tool call is loggedCRITICAL

Tool name, caller identity, timestamp, and parameters are recorded for every invocation. Logs are append-only.

Sensitive data is redacted in logsHIGH

Passwords, tokens, PII, and secrets are masked or omitted from log entries. DLP scanning runs on log output.

Errors are logged without leaking internalsHIGH

Stack traces and internal paths do not appear in client-facing error responses. Detailed errors go to internal logs only.

Log retention and forwarding are configuredMEDIUM

Logs are forwarded to a central system (SIEM, log aggregator). Retention periods are defined and enforced.

06

Supply Chain

(4 checks)
Dependencies are pinnedHIGH

All package versions are locked (requirements.txt, package-lock.json). No floating versions that could introduce malicious updates.

Source code is auditableHIGH

The server source is available for review. Obfuscated or closed-source servers are a higher risk.

Container images use verified basesHIGH

Docker images derive from official, verified base images. No unknown or untagged base layers.

No unnecessary dependenciesMEDIUM

The dependency tree is minimal. Each package serves a clear purpose. Unused or redundant packages are removed.

07

Permissions & Scope

(4 checks)
Principle of least privilegeCRITICAL

The server requests only the permissions it needs. A file-reading server does not request write or execute access.

Dangerous operations require confirmationHIGH

Destructive tools (delete, overwrite, execute) have a confirmation step or are gated behind elevated permissions.

Tool descriptions are accurateHIGH

Each tool description honestly states what it does, what data it accesses, and what side effects it has. No hidden capabilities.

Scope creep is preventedMEDIUM

The server cannot dynamically register new tools at runtime without client consent. Tool lists are static or version-controlled.

Quick Reference

Red Flags

  • No source code available for review
  • Server requires host network access or privileged mode
  • Tools that accept arbitrary shell commands
  • No authentication on any endpoint
  • Dependencies with known CVEs

Green Flags

  • Published security policy or threat model
  • Runs in unprivileged container with read-only root
  • Comprehensive input validation with clear error messages
  • Structured audit logs with DLP redaction
  • Pinned dependencies with automated vulnerability scanning

Want automated vetting? mistaike.ai scans MCP servers for these issues and more.