MCP server risk score: there is no standard
There is no official MCP server risk score. The spec lists attacks, not a grade. One draft method uses five weights and a 0 to 100 score.
On 2026-11-01 I looked up "MCP server risk score." I run a local model on hardware I own. That model can call an MCP server. I wanted a number before I turned the server on. There is no official number.
There is no official MCP server risk score. The Model Context Protocol security page lists attack classes and mitigations. It does not publish a score, a grade, or a rating. One published method is a draft Cloud Security Alliance note dated 2026-03-27. It rolls five weighted domains into a score from 0 to 100 and a letter from A to F. This page is https://bmdpat.com/blog/mcp-server-risk-score-2026.
Open full-size image (opens in new tab)
Is there an official MCP server risk score?
No. I read the MCP security best practices page on 2026-11-01. The page names attack classes. It does not define a score.
The page names eleven classes. They include confused deputy, token passthrough, server-side request forgery, state-handle hijacking, and local MCP server compromise. They also include OAuth authorization URL validation, stdio transport security in proxy setups, mix-up attacks, localhost redirect impersonation, CIMD trust policies, and scope minimization.
One rule is blunt. MCP servers must not accept any token that was not explicitly issued for that MCP server. The page says clients should block private network ranges and link-local addresses.
That page is a requirements list. It is not a grade.
Source: https://modelcontextprotocol.io/specification/draft/basic/security_best_practices
How does a draft MCP server risk score get calculated?
The CSA note is titled as a RiskRubric MCP scanner spec. It is dated 2026-03-27. The status line says draft. I am not treating a draft as a shared standard.
The published weights are fixed. Tool poisoning detection is 30 percent. Authentication and authorization is 25 percent. Supply chain provenance is 20 percent. Session management security is 15 percent. Network exposure assessment is 10 percent.
Each domain scores from 0 to 100. A pass earns full credit. A fail earns zero. A partial control earns partial credit. The domain score is a weighted average of its checks. The note then maps the total to a letter. 90 to 100 is an A. 80 to 89 is a B. 70 to 79 is a C. 60 to 69 is a D. 0 to 59 is an F.
A critical finding overrides the number. Direct remote code execution sets the grade to F. Unauthenticated credential access does the same. The letter is F even if the weighted total looks fine.
The check is client-side only. It looks at behavior the client can see. It does not put an agent on the server. An outside scan cannot see files that never leave the machine.
What does that score fail to tell you?
I calculated two examples from the published weights. I did not scan a server to get them. If tool poisoning scores 0 and the other four domains score 100, the total is 70. That total is a C. If authentication scores 0 and the other four score 100, the total is 75. That total is also a C. If every domain scores 100, the total is 100 and the letter is A. A critical finding still forces F.
The note reports no detection accuracy. It reports no false-positive rate. It reports no validation set. The sample report in the note is hypothetical. I will not quote a hypothetical sample as if I measured it.
The CSA note maps score bands to deployment readiness: grade A (90 to 100) is enterprise-ready, grade C (70 to 79) calls for more controls before production, and grade F (0 to 59 or any critical finding) means deployment is not recommended. But the MCP specification itself defines no score, grade, or threshold. Two third-party scanners can calculate different numbers for the same server. The official MCP page publishes no score, so there is no shared baseline. I did not open vendor scanner pages. I make no claim about their methods.
What should you do with a local MCP server?
The MCP page gives no scoring command. Use the stdio transport, or require an authorization token on HTTP.
A local server on my machine often starts over stdio. It runs with my user rights. An external score cannot see that. I read the source and I run it in a sandbox. The five weights are a sort order for that read. They are not a pass stamp.
I read the tool text first. That weight is 30 percent. A local model follows the description it is given. I flag text that tells the model to ignore earlier rules, or to send secrets out. On HTTP I want a token issued for that server. The spec forbids a token issued for some other service. I pin the commit I read. stdio does not open a port. HTTP on localhost still needs the private-range blocks.
I have no measurement of my own servers under this rubric. A missing scan is not a grade of A.
The older writeup of MCP security risks is MCP security risks for agents. The local model still has to fit in memory. I covered one part of that in how llama.cpp picks GPU layers.
Accompanying prompt
What the prompt does: turns the draft five-weight rubric into a local read list for one MCP server you already have on disk.
Copy/paste this prompt:
Copy-ready prompt
Paste the exact block into your coding agent.
No article chrome, no footnotes, no formatting drift.
This prompt and every other one we publish live in the free prompt library.
Copy the block above.
Get the local lab notes by email: https://bmdpat.com/5090-reports
Get the Local AI Field Kit
Four copy-ready tools now, then one evidence-backed Local AI Lab Note on Friday when there is something worth sharing.
Try the free agent run check firstGet the requested artifact now, then at most one evidence-backed Local AI Lab Note on Friday when there is something worth sharing. One-click unsubscribe. No sponsored placements. Privacy.
Written by
Patrick Hughes
I build BMD and publish measured AI runs, failure reports, and reusable checks. Nashville, Tennessee.
More writing
- 5 min
Is OpenClaw Worth It? Setup Costs and Risks
OpenClaw offers free self-hosted messaging agents under the MIT license, but model token fees, host security, and skill audits determine your real costs.
- 5 min
Verify an AI Security Agent Actually Did What It Reported
Inspect real system state, capture hash-chained tool receipts outside agent reach, and anchor audit root fingerprints away from the local system operator.
- 5 min
Your AI Agent's MCP Server Is a Security Hole
1 in 35 GenAI prompts carries high risk of data leakage. MCP makes the attack surface worse. Here's what builders need to know.
- 6 min
q5_k_m vs q5_k_s: what the extra 0.12 GiB changes
Q5_K_M moves part of attn_v and ffn_down to Q6_K. Q5_K_S keeps Q5_K. For Llama 3.1 8B that is 5.33 GiB vs 5.21 GiB, and lower perplexity.
- 5 min
I Replaced Five Scheduled Tasks with Codex Cron
On 2026-10-17, I killed five Windows scheduled tasks and moved nightly queues to seven Codex cron jobs. The security audit stayed red across five repos.