Remote MCP multiplies capability and blast radius. This checklist maps to official MCP security and transport documents.
Threat model (practical)
Anyone who can invoke your remote tools often acts with the server’s upstream credentials (ticketing, email, cloud, DB). Treat the MCP endpoint like a privileged API.
Spec-backed controls
1. Transport security (Streamable HTTP)
From Transports — 2025-11-25:
- MUST validate
Originon incoming connections (DNS rebinding); invalid → 403 - When local, SHOULD bind to localhost, not
0.0.0.0 - SHOULD implement proper authentication for connections
- Prefer HTTPS in real deployments (aligned with OAuth HTTPS guidance referenced in security docs)
2. Authorization
Follow Authorization — 2025-11-25 for OAuth-based HTTP authorization.
From Security Best Practices:
- MUST NOT implement token passthrough
- Mitigate confused deputy if you OAuth-proxy to third parties (per-client consent, strict redirect_uri, state)
- Clients fetching metadata MUST consider SSRF (block link-local/cloud metadata, prefer HTTPS, careful redirects)
3. Sessions ≠ authentication
If you use MCP-Session-Id (Streamable HTTP session management in the transports spec):
- Security docs: servers that implement authorization MUST verify inbound requests; MUST NOT use sessions as authentication
- Use secure, non-guessable session IDs; bind session data to authenticated user identity
4. Tool-layer security
From Tools — Security Considerations:
Servers MUST:
- Validate all tool inputs
- Implement access controls
- Rate limit tool invocations
- Sanitize tool outputs
Clients SHOULD:
- Confirm sensitive operations
- Show tool inputs before calling
- Validate results before the LLM
- Timeout tool calls
- Log tool usage for audit
Human-in-the-loop SHOULD be able to deny invocations (tools user interaction model).
5. Secrets and credentials
- Inject secrets at runtime; do not bake into images or git
- Scope upstream tokens to minimum privileges (scope minimization in security best practices)
- Never return secrets in tool
content
6. Local vs remote still matters
Even “remote” platforms often start from local development. Official docs cover local MCP server compromise (malicious startup commands, sandboxing, consent for one-click install).
Host / platform questions
- How are secrets stored and injected?
- What isolates tenants/workloads?
- Are container ports exposed directly?
- Can auth be rotated without rebuilds?
- Are tool invocations auditable?
MCPLambda product defaults (ToolHive isolation, proxy, deploy-time auth) are described in product docs and marketing comparisons — still verify against your threat model and the MCP requirements above.
Worked scenario: The public URL with admin tools
Someone deploys a remote MCP “just for a demo” with auth set to none and a tool that can delete cloud resources. The URL leaks in a screenshot.
You treat remote MCP like an admin API: authentication required, Origin validation for Streamable HTTP, no token passthrough, rate limits, least-privilege upstream credentials, and human approval for destructive tools. Demo environments get disposable credentials and auto-expiry.
You add a pre-prod security review checklist mapped to official MCP security best practices and tools security MUST items.
Checklist for this topic
- Authenticate every remote connection with powerful tools
- Validate Origin on Streamable HTTP
- No token passthrough to upstream APIs
- Rate-limit tools/call; validate inputs; sanitize outputs
- Least-privilege upstream credentials
- Human can deny sensitive tool invocations
Topic-specific failure modes
| Failure | Likely cause | Fix |
|---|---|---|
| Open anonymous URL | Demo left public | Auth + network controls |
| Confused deputy | OAuth proxy without per-client consent | Follow security best practices proxy section |
| Session used as auth | Trusting MCP-Session-Id alone | Authorize every request |
| SSRF via metadata URLs | Client fetches attacker URLs | HTTPS + block private IPs |
Related guides
Auth patterns · Multi-tenant · Transports
In practice: pre-prod security gate
Block production promote unless:
- Auth enabled and tested (deny + allow)
- No wildcard public access for admin tools
- Upstream credentials least privilege
- Rate limits on
- Destructive tools identified and gated
- Logging redaction checked
Make it a required checklist in the release template, not a hallway conversation.
Minimum viable remote security
For any non-loopback MCP URL with non-trivial tools:
- Authentication required
- HTTPS
- Least-privilege upstream credentials
- Rate limits
- No secrets in tool results
- Owner on-call
Everything else (advanced OAuth proxy hardening, per-tenant isolation) builds on this floor—not instead of it.
Takeaways
For Securing Remote MCP Servers: Spec-Backed Checklist, remember three things:
- Be specific to this problem — the worked scenario “The public URL with admin tools” is the failure mode you should design against, not a generic outage narrative.
- Authenticate every remote connection; never expose admin tools on a public unauthenticated URL.
- Follow MCP security guidance: validate Origin where relevant, avoid token passthrough, scope tools tightly.
If you only remember one habit: assume any tool an agent can call is an API you must threat-model.
Sources
- Security Best Practices
- Authorization — 2025-11-25
- Transports — 2025-11-25
- Tools — 2025-11-25
- OAuth 2.0 Security Best Current Practice (RFC 9700) (referenced by MCP security docs)