MCP Security Checklist
Vet an MCP server before you let it touch your machine.
- $35 Free
- 60 sec
- No signup
Answer the trust + access questions
See the computed risk score
Follow the go / no-go recommendation
You get: A risk score for the MCP server plus a go / no-go checklist.
Vet this server
Trust
I can see the server's source code and it comes from a maintainer I trust
An MCP server runs with your permissions. Unreadable or unknown code is unaudited code you are about to trust with your machine.
I (or someone) actually reviewed what the server does before installing
Popularity is not safety. A quick read of what tools it exposes and what it touches catches the obvious red flags.
I'm installing a pinned version, not a floating latest that can change under me
A server auto-updating to latest can pull in a compromised or breaking release without warning. Pin and update deliberately.
Access
The server has the narrowest access that still does the job
A filesystem server scoped to one directory cannot leak your whole home folder. Grant the minimum, not the convenient maximum.
I've thought about write/destructive access and only granted it if truly needed
Read access leaks data; write access can delete or corrupt it. Default to read-only and escalate consciously.
I know whether this server reaches the network and where it sends data
A server with network access can exfiltrate anything it can read. Confirm its endpoints and that they are ones you expect.
Secrets
No raw secrets are hardcoded in a shared or committed config
A funded API key in a shared .mcp.json is a real incident. Reference secrets via env vars and keep values out of version control.
Any credential I give the server is scoped down and revocable
If the server is compromised, a least-privilege, easily-revoked token limits and closes the blast radius fast.
I can rotate or revoke this credential quickly if something looks wrong
Speed of revocation is your last line of defense. A key you cannot rotate is a key you cannot contain.
Prompt injection
I understand tool output can carry injected instructions, and I don't auto-trust it
A page or file the server returns can contain text crafted to hijack the model ('ignore prior instructions, do X'). Treat tool output as untrusted data.
Destructive or sensitive actions require my confirmation, not blind auto-run
A human-in-the-loop gate on high-impact actions stops an injected instruction from doing real damage before you notice.
I'm cautious about combining an untrusted-web server with a high-privilege server
The dangerous combination is content from the internet plus the power to act (write files, spend money, post). Keep those separated where you can.
Risk score
0%
No-go yet - too much unknown
Too many high-weight items are unchecked. Do not give this server real access until you resolve them.
Weighted by impact - trust, least-privilege access, and prompt-injection items count most. A high score is a strong signal, not a guarantee.
An MCP server runs with your permissions
This is the fact that makes MCP security matter. When you install a server, you are giving code the ability to act inside your environment - read your files, hit your APIs, touch your data - on your behalf. That is exactly why MCP is powerful, and exactly why an untrusted server is dangerous. This checklist walks you through the questions that actually determine whether a given server is safe to add, and weights them by impact so a high score reflects real coverage of the risks that matter.
Nothing here is theoretical. Committed API keys, over-broad file access, and prompt injection through tool output are the real failure modes people hit. The checklist is grouped into the four areas that cover them: trust in the code, least-privilege access, secret handling, and prompt injection.
1. Trust: do you actually know what this is?
- Read the source, or at least confirm it comes from a maintainer you have reason to trust. An MCP server is arbitrary code running with your access.
- Do not equate popularity with safety - a well-starred repo can still ship a bad release. A quick review of what it exposes catches the obvious problems.
- Pin a version. A server that floats to latest can update into a compromised or breaking release without you choosing to.
2. Access: grant the minimum, not the maximum
- Scope the server tightly - a filesystem server pointed at one project directory cannot leak your whole home folder.
- Default to read-only. Read access can leak data; write access can delete or corrupt it. Escalate to write only when the job truly needs it.
- Know whether the server reaches the network and where it sends data. Network access plus read access is an exfiltration path.
The dangerous combination is untrusted content + power to act
A server that pulls content from the web is fine. A server that can write files or spend money is fine. The two together are where prompt injection turns into real damage - injected text from a page instructing a high-privilege server to act. Keep them separated where you can.
3. Secrets: keep them out of shared configs
A funded API key committed to a shared .mcp.json is a real security incident - anyone with repo access now has your key. Reference secrets through environment variables and keep the values out of version control. Give the server a scoped, revocable credential so that if it is ever compromised, the blast radius is small and you can close it fast. The speed at which you can rotate a key is your last line of defense.
4. Prompt injection: tool output is untrusted data
When an MCP server returns content - a web page, a file, a database row - that content can contain text crafted to hijack the model, along the lines of 'ignore your previous instructions and do X'. This is prompt injection, and it is the MCP-specific risk most people underestimate. Treat everything a server returns as untrusted data, not as instructions. Gate destructive or sensitive actions behind your own confirmation so an injected instruction cannot silently trigger them.
What the score means, and what it does not
The score is weighted: trust, least-privilege access, and prompt-injection awareness count for more than nice-to-haves like version pinning, because they cover the highest-impact failures. A score at or above 85% means you have covered the risks that actually cause incidents - proceed, and keep the credential scoped. Below that, some real gap remains. But treat any score as a signal, not a certificate. Security is a practice, not a one-time checkbox pass.
A safe default install flow
- Read or vet the server source before touching your config.
- Add it with the narrowest scope that does the job - one directory, read-only, minimal token.
- Reference any secret via an env var; never commit the raw value.
- Test it in a low-stakes context before pointing it at anything sensitive.
- Keep untrusted-web servers away from high-privilege servers in the same trust boundary.
- Know how to revoke the credential in under a minute, and be ready to.
Frequently asked questions
Is it dangerous to install an MCP server?
It can be - an MCP server runs code with your permissions and can touch your files, APIs, and data. Vetting the source, scoping access tightly, and handling secrets correctly is what makes it safe. That is exactly what this checklist covers.
What is prompt injection in the context of MCP?
When a server returns content (a web page, a file), that content can contain text crafted to hijack the model - instructions disguised as data. The defense is to treat all tool output as untrusted and to gate sensitive actions behind your own confirmation.
Why is committing an API key to .mcp.json a problem?
A shared or committed config is readable by everyone with repo access, so a funded key becomes an open credential. Reference secrets through environment variables and keep the actual values out of version control.
How do I limit what an MCP server can access?
Grant the narrowest scope that still does the job - one directory instead of your whole disk, read-only instead of write, a least-privilege token instead of a full-access one. Least privilege bounds the damage if anything goes wrong.
Does a high score mean the server is definitely safe?
No. The score is a weighted signal that you have covered the high-impact risks, not a guarantee. Security is an ongoing practice - keep credentials scoped, stay alert to what servers return, and be ready to revoke.
Does this checklist send my answers anywhere?
No. Everything runs in your browser. Your checkbox state and score never leave the page - the copy button simply places the checklist on your clipboard.
Liked this tool? The club is the next step.
Join Claude Code Club for $9/month. 650+ lessons, weekly updates, and the workflows behind every tool on this site.
- No experience needed
- Cancel anytime
- Updated weekly
