← All guides

MCP Server Security Checklist for Home Labs

The short answer: a home MCP server is safe to run when five things are true — it binds deliberately, it demands authentication from the internet, its tunnels are known, its tool surface is minimal, and it gets re-probed after every change. Work the checklist top to bottom; each item names the HomeShield signal that verifies it. The whole pass takes one free check plus ten minutes at the machine. Checklist as mapped to HomeShield's prober, November 2026.

The checklist

  1. Know your bind address. Is the server listening on localhost only, or on every interface (0.0.0.0)? Localhost-only is the safe default for a server only you use from home. Verify: the probe can only grade what the internet reaches — if the check finds nothing, confirm the bind at the machine with the local-scan companion.
  2. Inventory your public paths. Port forwards on the router, tunnels (Cloudflare Tunnel, Tailscale Funnel, ngrok-style links), and dynamic-DNS names all make a home server public. List them; delete the ones you no longer use. Verify: the probe detects tunnel setups and checks the common MCP paths on the host.
  3. Require authentication. Any path that reaches the server from the internet must demand credentials. Verify: the verdict reads COVERED (401/403/407), not EXPOSED. Why this is the dividing line: the exposure guide.
  4. Minimise the tool surface. Every tool the server offers is an ability a caller can use. Remove or gate anything that writes files, executes commands, or reaches other machines unless you truly use it remotely. Verify: the tool-surface grade — aim for None seen from outside, Low at worst.
  5. Separate the powerful server. If one server browses photos and another runs your home automation, do not give them the same exposure. The powerful one stays localhost-only or behind its own authentication.
  6. Keep the server updated. Home AI stacks update fast, and default settings change between versions — a update can re-open a bind or add a tool. Verify: re-run the check after every update.
  7. Re-probe on a rhythm. Monthly when nothing changed; immediately when anything did — router, tunnel, tool, or version. Exposure drifts quietly. Verify: the report history shows the verdict you expect, every time.

What this checklist cannot cover

Anything that never faces the internet. A web probe reads your house from the street; it cannot audit the LAN, the router's own settings, or the other devices on your network. That is a different pass — the local-scan guide walks it, and its companion script (Linux/macOS and Windows) lists listening ports and the processes behind them on the host machine itself, then merges the result with your web report. Run both: outside-in for exposure, inside-out for the network.

Run the free check

Frequently asked questions

What is the first thing to check on a home MCP server?

Its bind address and its exposure. A server bound to all interfaces, behind a port forward or a tunnel, is a public server whether you meant it to be or not. Run the free check on its public URL and read the verdict before changing anything else.

Does my MCP server need authentication if it is only for me?

If it is reachable from the internet, yes. An authentication response is what separates COVERED from EXPOSED in a HomeShield probe. 'Only for me' describes your intention; the internet reads the port, not the intention.

Are tunnels like Cloudflare Tunnel or Tailscale Funnel safe?

They are exposure with better manners: the endpoint is still publicly reachable, and HomeShield's probe detects tunnel setups from the outside. A tunnel removes the port forward, not the need for authentication and a minimal tool surface.

How small should my tool surface be?

As small as your actual use. The probe grades the visible tool surface None seen, Low, Medium, or High by capability. Tools that write files, run commands, or reach the network are the ones to remove, gate, or split onto a separate authenticated server.

How often should I re-check?

After every change — new tool, new tunnel, router change, server update — and on a monthly rhythm otherwise. Exposure is a state that drifts; the checklist is a loop, not a ceremony.