MCP Server Production Deployment Checklist
A real pre-production checklist for MCP servers, covering the parts specific to MCP (tool-scoping, transport hardening, prompt injection surface) beyond generic infrastructure hygiene.
Most of an MCP server's production checklist is standard infrastructure hygiene — but a few items are specific to what makes MCP servers a distinct risk category from a typical REST API: the caller is an LLM interpreting untrusted input, not a human clicking through a UI.
Standard Infrastructure Hygiene
- TLS 1.3 with valid, auto-renewing certificates on every transport endpoint
- Structured log aggregation (not just stdout) so incidents are actually investigable after the fact
- Monitoring and alerting on error rates, latency, and unusual call volume
- Backup and disaster recovery for any persistent state the server owns
- Hardened, non-default configuration — no example credentials, no debug endpoints left open
MCP-Specific Items Most Checklists Skip
- Tool scoping reviewed, not just authentication. Confirm each tool's blast radius independently — a read-only tool and a payment-issuing tool shouldn't share the same authorization check just because both require "a valid token."
- Untrusted content treated as untrusted. Any text a tool returns (a webpage, a file, a database row) can contain instructions an LLM might follow as if they came from the user. Don't assume tool output is inert data.
- Confirmation gates on destructive actions. As covered across this site's payment-MCP guides (Zerodha, Zomato, Razorpay), anything that spends money, sends a message, or deletes data should have an explicit confirmation step in front of it in production, not just in the demo.
- Rate limiting per-tool, not just per-connection. An LLM in an agentic loop can call a tool far more times per second than a human ever would — a single generous connection-level rate limit doesn't stop a runaway loop from hammering one specific expensive tool.
- Transport matches the deployment context. stdio is fine for a locally-run, single-user server; anything reachable over a network needs the HTTP/SSE transport with real authentication, not stdio's implicit trust model.
Before You Flip the Switch
Run the server through the official MCP Inspector one more time in a production-like environment, not just locally — confirm the tool list, schemas, and error responses look the way they should against your actual deployed config, not just your dev machine's.
Join the Discussion
Discussion (0)
No comments yet. Be the first to share your thoughts!