Abstract
The Durin MCP Security Index compares attributable security evidence for a stated MCP configuration. Version 2 evaluates independently evidenced subcriteria inside fixed weighted criteria. It reports a baseline score, the coverage and strength of the evidence, and independent advisory or capability findings. Stripe remains a reference implementation; it receives credit only for checks supported by its own evidence.
A high score means the applicable baseline is supported by evidence. It is not a probability of safety, a certification, or proof that every deployed operation enforces the documented controls. Assessments are deterministic: collection, matching, scoring and ranking make no language-model calls.
Scope and units of comparison
The unit of assessment is a resolved MCP identity and its observed package release or endpoint scope. Providers are ranked within deployment cohorts because hosted services, installable packages and bridges expose different evidence. Functional categories such as productivity or identity support discovery; they do not change security scores or cohort ranks.
The MCP specification describes tools as model-controlled and recommends a human decision point for tool invocations. CoSAI identifies access control, tool design, human oversight and lifecycle governance as security concerns. The index adapts these themes into its own evidence requirements; the numerical weights are Durin policy. [2] [1]
| Cohort | Assessment unit | Evidence boundary |
|---|---|---|
| Hosted services | A public HTTPS endpoint and its stated configuration | Service documentation, transport and authorization metadata. Deployed server code may be inaccessible. |
| Local packages | An exact registry package release | Registry identity, artifact metadata, published advisories and attributable documentation. Package code is not executed. |
| MCP bridges | A bridge package and its connection model | Package evidence and declared mediation or execution-host controls. A bridge does not establish the safeguards of every upstream service. |
Ranks are comparable within a cohort and assessment policy. A category filter preserves the original cohort ranks.
Evidence, uncertainty and confidence
Evidence is attached to an identity, a stable control ID, a source and an observation time. A criterion's freshness window determines when its evidence expires. Attributed documentation can establish a declared capability, while runtime verification requires evidence appropriate to that control. One does not silently become the other.
SLSA provenance concerns verifiable information about how an artifact was produced. The index distinguishes registry digests and provenance metadata from independent verification of their claims. Metadata inspection does not execute the artifact or establish the security of its behavior. [4]
MCP security guidance addresses authorization context, token handling and scope minimization. In this index, published OAuth and identity metadata establish observable configuration; they do not validate every runtime access decision. [3]
Missing mandatory evidence, an incomplete or expired assessment, active compromise, an unresolved affected release or insufficient assessed weight can prevent ranking. At least 20 category-budget units must have evidence. Confidence and evidence coverage are reported separately from the baseline score; a failed or partial required check cannot establish that there are no known findings.
| State | Meaning | Scoring treatment |
|---|---|---|
| Verified | Evidence satisfies the verification requirement of the control. | Uses the control's verified credit. Timed advisory credit also requires remediation evidence. |
| Documented only | An attributable source describes a capability; deployed enforcement has not been independently established. | Earns the control's documented credit. The baseline can accept full documentation credit; advanced controls can require stronger evidence. |
| Unknown | Evidence is missing, inaccessible, incomplete or expired. | Earns zero. Applicable baseline points remain in the denominator. |
| Failed | Evidence demonstrates that the control is not met. | Earns zero. The finding remains visible. |
| Not applicable | The criterion explicitly permits exclusion for this configuration. | Excluded from applicable points. Unsupported exclusions become unknown. |
The control catalog gives the exact documented and verified credit rules. These states describe evidence, not an overall security verdict.
Independent subcriteria and weighted credit
One criterion is one real safeguard with a stable control ID and a fixed point budget. Its independent subcriteria have descriptive check IDs, explicit evidence requirements and weights that sum to the parent budget. For example, the 24-point human-approval criterion assigns 8 points each to an identified human review interface, explicitly covered sensitive actions and an approval decision independent of the agent or client prompt. These are three distinct checks, not 24 repetitions of the same result. [2] [5]
Each subcriterion is evaluated using its own evidence key, source, state and observation time. A legacy parent pass, a sibling pass or an old one-point allocation cannot satisfy another check. A missing, unreadable, stale or future-dated observation earns no credit. Metadata checks establish precisely the advertised field or observed HTTP result named by the check. They do not establish runtime token, tenant or scope enforcement. [7]
Weighted credit is the sum of each applicable subcriterion weight multiplied by its earned fraction. Unknown and failed checks contribute zero. Not-applicable evidence needs an explicit reviewed determination permitted by the criterion. Documentation can establish a capability at the parent policy rate; checks requiring an authorized runtime test receive zero documentation credit. Atomic criteria such as advisory response and release age remain single checks rather than being split artificially.
The existing category budgets, parent weights, scored roster, confidence thresholds and minimum evidence floor are retained. The baseline revision changes how parent credit is established, so scores can change materially when previously bundled evidence does not satisfy every independent check. Version 1 assessments remain intact and are not compared as rank movement against Version 2. New criteria still require explicit budget admission and a versioned policy; adding catalog observations alone cannot change rankings.
| Check | Weight | Evidence required |
|---|---|---|
| Human review interface | 8 | First-party instructions identify the person and provider or execution-host review interface. |
| Covered sensitive actions | 8 | Action-specific approval coverage is explicitly identified. |
| Independent approval gate | 8 | The provider or host decision is distinguished from an agent flag or client tool prompt. |
A full documented result totals 24/24. Bypass resistance, parameter binding and runtime expiry remain separate advanced checks.
Scoring model and stability
For each category, earned baseline credit is divided by applicable baseline points, including unknown requirements at zero credit. The effective category weight is the smaller of its fixed budget and its applicable baseline points. The index normalizes the weighted category credits to a score from 0 to 100. Criterion credit is represented in thousandths, and the final score is rounded to the nearest integer.
In notation: effective weight = min(category budget, applicable baseline points); category credit = earned baseline points / applicable baseline points; score = round(100 × sum(effective weight × category credit) / sum(effective weight)). A category with no applicable points contributes no weight.
For a simple illustrative case with all 100 budget units applicable, unknown approval evidence earns zero of the 30 approval units. If every other category earns full credit, the resulting score is 70, assuming all other ranking requirements are met. Real configurations can have a different applicable denominator.
New criteria begin as observations outside the scored roster. Adding them does not change existing scores, scored confidence or ranks, although total catalog coverage changes. Promotion into scoring requires versioned review: existing weights and budgets remain fixed, the 20-unit evidence floor remains, and newly admitted weight must bound movement for already-graded providers to five points. A larger recalibration requires a new baseline edition.
| Category | Maximum budget | Assessment focus |
|---|---|---|
| Human approval | 30 | Independent confirmation for named sensitive actions, plus expiry of pending approval requests. |
| Least privilege | 20 | Scoped capabilities and access, with effective revocation and appropriate separation of authority. |
| Authentication | 15 | Attributable identities, secure authorization and protection of credentials and authorization context. |
| Supply chain | 15 | Exact release identity, artifact integrity and attributable provenance evidence. |
| Audit and recovery | 10 | Traceable activity and documented ways to revoke, recover or investigate. |
| Maintenance | 10 | Current advisory evidence, confirmed remediation and applicable release-maintenance observations. |
Budgets, the evidence floor and promotion limits are Durin policy. They are not weights prescribed by MCP, CoSAI, SLSA or OSV.
Independent human approval
The baseline allocates 24 points to an independent approval flow for named sensitive actions and 6 points to request expiry. Attributable provider or execution-host documentation can meet this capability baseline. An agent-controlled approval flag, an ordinary client tool prompt or initial OAuth consent is not sufficient for this control.
Stripe documents Dashboard review for selected actions, independently of the client's tool-approval setting. Unapproved requests expire after 24 hours. Confirmation depends on the action: a generic write tool can also perform actions outside that approval flow. This is the reference capability, not a claim that every Stripe mutation requires human review. [5]
CoSAI discusses managed host confirmation and server-requested user confirmation as approaches to human oversight. The index recognizes attributable provider and host flows. Exact-action binding, bypass resistance and stronger enforcement assurance remain distinct advanced controls, visible outside the baseline score. [1]
Advisories and remediation timing
Advisories match a resolved package version or endpoint scope. OSV represents affected version ranges with events such as introduction and a fixed release; the presence of a reported fixed version is not evidence that a provider has deployed it. Remediation timing begins at the first attributable public disclosure and ends at a confirmed fixed release publication or reviewed incident end time. [6]
MCP-MNT-002 has four points. A complete, current advisory check with no matching advisory earns full credit. When advisories do match, the worst confirmed remediation latency determines credit. Missing timing evidence stays unknown, while an active affected release earns no credit for this criterion and affects ranking eligibility. Affected providers are checked hourly; this check's evidence expires after two hours without confirmation.
| Observation | Criterion credit | Points out of 4 |
|---|---|---|
| Complete check; no matching advisory | 100% | 4 |
| Confirmed remediation within 24 hours | 100% | 4 |
| More than 24 hours, within 7 days | 75% | 3 |
| More than 7 days, within 30 days | 25% | 1 |
| More than 30 days, or still affected | 0% | 0 |
These timing bands are Durin policy. An import timestamp, healthy endpoint response or reported fixed version alone does not establish remediation.
Catch-all execution as an independent finding
A catch-all red flag identifies an advertised generic execution surface: code, shell commands, unrestricted SQL, dispatch or generic requests. Detection uses inspected tool schemas or configured first-party documentation. Constrained enumerations do not trigger this rule; unavailable or partial inventories remain unknown unless an attributable source independently establishes the capability. Collection never invokes the tools.
CoSAI identifies overly permissive tool capabilities as a security boundary concern. The index treats this as a capability finding, independent of vulnerability advisories and baseline points. A documented approval flow and a catch-all red flag can therefore coexist. Stripe's generic API write tool illustrates why the two observations must remain separate. [1] [5]
Interpretation and limitations
The index describes demonstrated safeguards for a stated configuration at an observation time. First-party claims do not verify all production settings, and unauthenticated metadata does not establish authorization enforcement on every action. Hosted code, authenticated tool inventories and tenant-specific policies can be unavailable. Such gaps remain explicit rather than being filled by inference.
A complete advisory collection with no match is a bounded observation, not proof that no undisclosed vulnerability exists. Package code is not executed, prompt-injection resistance is not inferred from metadata, and functional categories are not risk ratings. Operators should read the control evidence, affected versions and independent findings alongside the score.
Dated editions preserve the methodology text, control definitions, point rules, checks, taxonomy and references used at release. The undated URL points to the current edition. Historical assessments retain their original calculation policy; this publication does not rewrite previous scores or make different baselines directly comparable.
Deterministic checks
Checks describe what collection can establish. Unsupported observations remain explicit. A release waiting period is not a security verdict, and unavailable hosted code is not assumed to be safe.
| Check ID | Applies to | Requirement | Observation |
|---|---|---|---|
| identity_resolved | package, hosted | Required | The MCP resolves to an exact package release or a public HTTPS endpoint scope. |
| artifact_integrity | package | Required | The registry supplies an artifact digest for the exact release. |
| advisory_match | package, hosted | Required | Published Durin advisories are matched against the exact release or endpoint scope. |
| release_age | package | Informational | The release is older than the configured waiting period. Age is a waiting period, not a verdict. |
| install_scripts | package | Informational | Install-time scripts are reported as a review signal. |
| dependency_graph | package | Informational | Resolved transitive dependency assessment (later capability). |
| remote_transport | hosted | Required | The configured endpoint uses HTTPS on a public origin. |
| deployed_code | hosted | Informational | Hosted deployed code is not visible; reported as unsupported rather than assumed. |
Assessment validity: 7 days. Release waiting period: 60 minutes.
| Check ID | Scope | Observation |
|---|---|---|
| public_documentation | Packages and hosted services | Fetches configured first-party pages with bounded requests and matches reviewed phrase rules. Permission, revocation and approval claims receive documented-only credit. Unavailable statements become unknown; documentation does not renew runtime verification. |
| human_approval | Packages and hosted services | Recognizes attributed server confirmation, execution-host permission policies, application review and held human workflows for named sensitive actions. Ordinary client prompts, annotations and OAuth consent do not qualify. Expiry is assessed separately. |
| advisory_remediation_hourly | Known affected releases and hosted incidents | Refreshes known affected releases and checks fixed-version publication or reviewed incident end times every hour. Missing evidence stays unknown. |
| catch_all_execution | Inspectable inventories or configured documentation | Inspects advertised names and unconstrained inputs for generic code, command, SQL, dispatch or request capabilities. Protected or incomplete inventories remain unknown unless first-party documentation independently declares the capability. Tools are not executed. |
Appendix A. Control catalog
Control IDs identify the same safeguard across providers. Baseline controls contribute to the score; advanced assurance remains visible outside it. Each criterion has a fixed weight. Independent subcriteria have distinct evidence requirements and contribute their stated share; atomic criteria retain one evidence check. Historical editions preserve their original allocations.
Hosted services
| Confidence | Minimum evidence coverage | Minimum verified share |
|---|---|---|
| high | 80% | 50% |
| medium | 50% | 20% |
| low | 0% | 0% |
Coverage and verified share use applicable baseline points. Confidence describes evidence, not a probability of safety.
MCP-APR-001Does the provider or trusted execution host offer independent human approval for named sensitive actions?
Baseline: attributed first-party documentation describes an independent human approval flow for named sensitive actions, separate from an agent-controlled flag or ordinary client tool prompt. Stripe documents Dashboard confirmation for selected actions. This does not claim every mutation requires approval or that bypass resistance was tested.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-001/HUMAN_REVIEW | Is there an identified human review interface? First-party instructions identify a human reviewer and a provider or execution-host review interface, such as a dashboard or approval URL. A client tool prompt alone does not qualify. | 8 |
| MCP-APR-001/COVERED_ACTIONS | Are the sensitive actions covered by approval explicitly identified? Documentation identifies action-specific approval coverage, with named sensitive actions or explicit action-level confirmation markers. A general recommendation to enable approvals is insufficient. | 8 |
| MCP-APR-001/INDEPENDENT_GATE | Is approval independent of the agent and its client prompt? Documentation explicitly distinguishes the provider or trusted execution-host approval decision from an agent flag or ordinary MCP client prompt. This does not establish tested bypass resistance. | 8 |
MCP-APR-002Is a confirmation bound to the exact action, recipient and amount, so it cannot be changed after approval?
Checks whether approval is bound to the exact action and its resources, recipient and amount. Changing the action after approval must invalidate it. This needs an authorized sandbox or attributed reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-002/ACTION_TARGET_BINDING | Does approval bind the action and target? An attributed authorized test changes the operation or target after approval and confirms refusal with no side effect. | 4 |
| MCP-APR-002/PARAMETER_BINDING | Does approval bind sensitive parameters? An attributed authorized test changes recipient, amount or another sensitive parameter after approval and confirms refusal with no side effect. | 4 |
MCP-APR-003Can the agent avoid confirmation by self-approving, setting a flag, replaying an approval or using an alternate write path?
Checks whether self-approval, agent-controlled flags, replay and alternate mutation paths can bypass confirmation. A verified control resists those attempts. The index does not infer this from a tool description.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-003/SELF_APPROVAL | Is agent self-approval refused? An authorized test attempts to approve with the requesting agent identity or an agent-controlled flag and records refusal. | 2 |
| MCP-APR-003/REPLAY | Is approval replay refused? An authorized test reuses a consumed approval token and confirms the operation cannot execute again. | 2 |
| MCP-APR-003/ALTERNATE_PATH | Do alternate write paths retain the approval gate? An authorized test attempts an equivalent mutation through a different tool or API path and confirms approval is still required. | 2 |
MCP-APR-004Are denied, expired and revoked approvals refused with no effect?
Checks that denied, expired and revoked approvals cause no side effect. Verification needs an authorized sandbox or reviewed evidence of those outcomes.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-004/DENIED_REQUEST | Does denial prevent execution? An authorized test denies the request and confirms no downstream effect. | 2 |
| MCP-APR-004/EXPIRED_REQUEST | Does expiry prevent execution? An authorized test retries an expired approval and confirms no downstream effect. | 1 |
| MCP-APR-004/REVOKED_REQUEST | Does approval revocation prevent execution? An authorized test revokes an outstanding approval and confirms no downstream effect. | 1 |
MCP-APR-005Do unapproved sensitive-action requests expire within 24 hours?
Baseline: the provider or trusted execution host documents that pending sensitive-action approval requests expire within 24 hours without approval, matching Stripe. Documentation establishes the capability; runtime refusal after expiry remains independently testable.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-APR-005/PENDING_EXPIRY | Do unapproved requests expire? Documentation ties expiry to an outstanding human approval request; OAuth session or access-token expiry alone is insufficient. | 3 |
| MCP-APR-005/BOUNDED_LIFETIME | Is the approval deadline at most 24 hours? Documentation states a positive approval-request lifetime no greater than 24 hours. The collector parses the numeric duration; runtime enforcement is a separate advanced check. | 3 |
MCP-PRV-001Can access be limited to narrow, named permissions?
Collects published OAuth scope metadata where available. Multiple advertised scopes establish documentation, not enforcement. Verifying narrow permissions on actual privileged operations requires an authorized account or reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-001/PERMISSION_INVENTORY | Are named limited permissions available? Protected-resource metadata advertises multiple OAuth scopes, or first-party documentation names configurable permissions. This establishes available scopes, not runtime denial. | 10 |
| MCP-PRV-001/PERMISSION_SELECTION | Can access be restricted when connecting the MCP? Instructions describe selecting or limiting scopes, permissions or roles for the MCP connection, including per-account or environment configuration. | 10 |
MCP-PRV-002Is a read-only mode or tool subset available and enforced?
Checks for an enforced read-only mode or explicit tool subset. A documented option can earn limited credit; proving writes are refused requires an authorized sandbox or reviewed evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-002/READ_ONLY_CONFIGURATION | Is a read-only configuration offered? First-party instructions describe how to configure the MCP or its execution host for read-only access. | 3 |
| MCP-PRV-002/WRITE_REFUSAL | Are writes refused in read-only mode? An authorized test enables the documented read-only configuration and confirms a mutation is denied without side effects. | 3 |
MCP-PRV-003Are files, processes, network and accounts bounded to the configured resources?
Checks whether file access, process execution, network access and connected accounts stay within configured resources. These boundaries require reviewed configuration and controlled tests; metadata alone does not establish enforcement.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-PRV-003/FILESYSTEM_BOUNDARY | Are filesystem boundaries enforced? Authorized traversal and symlink tests cannot access a path outside the configured allowed roots. Inapplicability requires explicit reviewed evidence. | 2 |
| MCP-PRV-003/NETWORK_BOUNDARY | Are network destinations restricted? An authorized test attempts an out-of-policy destination and confirms refusal. | 2 |
| MCP-PRV-003/ACCOUNT_BOUNDARY | Are account or workspace boundaries enforced? An authorized test attempts an out-of-scope account or workspace operation and confirms refusal. | 2 |
MCP-AUT-001Is a standard sign-in and authorization flow available and discoverable?
Baseline: public authorization discovery and an unauthenticated refusal identify an offered standard sign-in flow. Metadata verification does not establish enforcement on every operation.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-001/UNAUTHENTICATED_REFUSAL | Is unauthenticated initialization refused? The configured remote endpoint returns HTTP 401 to an MCP initialize request made without credentials. A successful unauthenticated initialization fails this check; timeouts remain unknown. | 2 |
| MCP-AUT-001/OAUTH_DISCOVERY | Does protected-resource metadata identify an authorization server? A fetched protected-resource metadata document identifies at least one authorization server. This verifies discoverability, not token issuance or runtime authorization. | 2 |
| MCP-AUT-001/PKCE_S256 | Does authorization-server metadata advertise PKCE S256? Fetched authorization-server metadata advertises S256 code challenges. This verifies the declaration, not a completed OAuth flow. | 2 |
MCP-AUT-002Is the intended service audience or account and environment scope declared?
Baseline: attributed documentation or protected-resource metadata declares the intended service audience or account and environment boundary. Wrong-audience rejection and authorization on every operation require additional assurance evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-002/RESOURCE_IDENTIFIER | Does the OAuth resource identifier match this endpoint? The protected-resource identifier has the same URL origin and a path-segment boundary containing the configured endpoint. String-prefix collisions do not qualify. | 3 |
| MCP-AUT-002/TENANT_SCOPE | Is account, tenant or environment scoping described? First-party instructions specify which account, tenant, workspace or environment a connection or credential can access. Wrong-tenant enforcement requires an authorized test. | 2 |
MCP-AUT-003Is delegated agent authentication documented without sharing a personal long-lived key?
Baseline: the provider documents delegated OAuth or an equivalent constrained agent-authentication option. This establishes an offered capability, not that every configuration avoids long-lived credentials or that logs were inspected.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUT-003/DELEGATED_AUTHENTICATION | Is delegated authentication available? The endpoint refuses unauthenticated initialization and publishes an OAuth authorization server, or first-party instructions explicitly describe delegated MCP OAuth authentication. This does not establish safe storage. | 2 |
| MCP-AUT-003/CONSTRAINED_CREDENTIALS | Are credentials constrained to the access needed? Instructions describe restricting agent credentials, short-lived tokens or selected scopes instead of giving the agent an unrestricted personal secret. | 2 |
MCP-SUP-001Is an attributed publisher identity available for the endpoint?
Baseline: a registry-verified namespace or attributed reviewed provider catalog identifies the endpoint publisher. Evidence retains its verified or documented-only label; a familiar name or popularity alone does not establish ownership.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-001/PUBLISHER_ATTRIBUTION | Is a publisher explicitly attributed? The resolved identity includes a named publisher with attributed identity evidence. A name alone is insufficient. | 4 |
| MCP-SUP-001/PUBLISHER_DOMAIN | Is the endpoint domain attributable to that publisher? A verified registry namespace or the reviewed provider catalog associates the configured endpoint domain with this publisher. Catalog attribution remains documented evidence. | 5 |
MCP-SUP-002Is the endpoint served over verified HTTPS on the publisher's domain?
Checks that the endpoint answers over verified TLS. A registry-verified publisher domain can earn full credit; TLS without that attribution earns documented credit. Merely configuring an HTTPS URL does not establish this evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-002/VERIFIED_TLS | Does the endpoint use verified HTTPS? A bounded request to the configured endpoint completes with TLS certificate verification enabled. An HTTPS URL string without a successful request is insufficient. | 3 |
| MCP-SUP-002/DOMAIN_ATTRIBUTION | Is the served endpoint on an attributed provider domain? A verified registry namespace or reviewed provider catalog attributes the endpoint domain. Domain attribution is assessed separately from TLS. | 3 |
MCP-SUP-003Can the deployed release be independently identified?
Checks whether the code version deployed behind a hosted endpoint can be independently identified. A service URL, successful handshake or healthy response does not identify the deployed release.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-SUP-003/DEPLOYED_VERSION | Can the deployed service version be identified? Attributed evidence identifies the exact code version running at the assessed endpoint and time. | 3 |
| MCP-SUP-003/DEPLOYMENT_PROVENANCE | Can that deployment be traced to reviewed source? Attributed provenance connects the identified deployment to its reviewed source or immutable build artifact. | 3 |
MCP-AUD-001Are actions attributable and recorded?
Checks whether actions are recorded with an attributable actor and useful audit context. Verification requires reviewed audit records or an authorized sandbox; published claims alone earn limited credit.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-001/ATTRIBUTABLE_ACTOR | Do action records identify the actor? Documentation describes action or audit records that identify the requesting user, agent or principal. | 2 |
| MCP-AUD-001/ACTION_CONTEXT | Do action records include operation and outcome? Documentation specifies an operation, timestamp and result or outcome in action or audit records. | 2 |
MCP-AUD-002Is an explicit session or credential revocation mechanism documented?
Baseline: the provider documents how a person or administrator can revoke a session or credential and describes its account or environment scope. Runtime enforcement after revocation is a separate assurance question; documented evidence keeps its documented-only label.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-002/REVOCATION_PROCEDURE | Is there an actionable revocation procedure? First-party steps identify how to revoke an MCP session, credential or connection. Generic account deletion or logout guidance alone does not qualify. | 5 |
| MCP-AUD-002/REVOCATION_SCOPE | Is the effect and scope of revocation described? Documentation states what access revocation removes or invalidates and identifies its session, account, workspace or environment scope. This does not verify runtime revocation. | 5 |
MCP-AUD-003Is practical remediation documented?
Checks for practical, attributed recovery instructions such as fixed versions, removal steps or credential rotation. Published guidance earns documented credit; tested remediation requires additional evidence.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-AUD-003/FIXED_RELEASE_GUIDANCE | Is there an actionable fixed-release or mitigation instruction? First-party documentation identifies an upgrade, fixed version or concrete mitigation for the affected software. | 1 |
| MCP-AUD-003/CREDENTIAL_RECOVERY | Does recovery guidance address credential exposure? First-party incident or remediation guidance describes rotating or revoking potentially exposed keys, sessions or credentials. | 1 |
MCP-MNT-001Is a security contact published?
Fetches security.txt for the publisher domain, then a repository SECURITY.md when available. A published contact earns documented credit; this does not measure whether the provider responds promptly.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-001 | Fetches security.txt for the publisher domain, then a repository SECURITY.md when available. A published contact earns documented credit; this does not measure whether the provider responds promptly. | 3 |
MCP-MNT-002Are there no matching published advisories, or were known advisories remediated promptly?
A complete, current advisory check with no matching published advisory earns full credit. Known advisories are checked hourly. Confirmed remediation earns 100% within 24 hours, 75% within 7 days, 25% within 30 days and zero afterward. Open or unknown cases earn zero; check evidence expires after two hours.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-002 | A complete, current advisory check with no matching published advisory earns full credit. Known advisories are checked hourly. Confirmed remediation earns 100% within 24 hours, 75% within 7 days, 25% within 30 days and zero afterward. Open or unknown cases earn zero; check evidence expires after two hours. | 4 |
MCP-MNT-003Has a package release been published within the last 12 months?
Compares the package registry publication timestamp with a 12-month window. This measures release recency, not documentation quality or maintenance. It is not applicable to hosted services with no public package; an unknown timestamp earns no credit.
| Control or check ID | Evidence requirement | Weight |
|---|---|---|
| MCP-MNT-003 | Compares the package registry publication timestamp with a 12-month window. This measures release recency, not documentation quality or maintenance. It is not applicable to hosted services with no public package; an unknown timestamp earns no credit. | 3 |
Appendix B. Provider classification
One reviewed primary functional category per MCP identity. Classify the exposed service, not its transport, name, security controls or safety score.
| Category | Definition |
|---|---|
| Productivity & Collaboration | Documents, spreadsheets, calendars, forms, project management and shared workspaces. |
| Communication & Messaging | Email, chat, voice, meetings, notifications and message-delivery services. |
| Identity & Access Management | Authentication, authorization, agent identities, credential access and identity trust. |
| Security & Compliance | Vulnerability assessment, threat protection, security policy, privacy and security assurance. |
| Developer Tools | Source control, APIs, software testing, code intelligence and developer documentation. |
| Cloud & Infrastructure | Compute, hosting, storage infrastructure, networks, DNS, containers and deployment operations. |
| Data & Analytics | Databases, data platforms, data engineering, business intelligence and general web/product analytics. |
| Observability & Monitoring | Logs, traces, errors, uptime, reliability monitoring and incident response. |
| Sales & CRM | Customer relationships, prospecting, lead enrichment, sales engagement and deal pipelines. |
| Customer Support | Customer service, help desks, service management and support operations. |
| Marketing & Advertising | Campaigns, advertising, SEO, social publishing, audience growth and marketing-specific analytics. |
| Finance & Payments | Banking, payments, accounting, billing, treasury and financial-market data. |
| Content & Knowledge Management | File repositories, content management systems, knowledge bases and learning-content access. |
| Design & Media | Design tools, visual assets, diagrams, creative production, audio and video. |
| Search & Research | Web search, crawling, research literature and specialized information discovery. |
| Automation & Integration | Workflow automation, API integration, general tool gateways and MCP transport bridges. |
| AI & Machine Learning | Model platforms, inference gateways, agent orchestration and persistent agent memory. |
| Legal & Regulatory | Legal research, regulatory intelligence, contract operations and statutory compliance. |
| Human Resources | Recruiting, hiring, employee management and people operations. |
| Business Operations | Enterprise resource planning and integrated operational business workflows. |
Functional categories are separate from deployment cohorts and security scores.
References
- Model Context Protocol (MCP) Security
CoSAI, Workstream 4. Version 2.0, updated 12 August 2026; control sections 3.2.2, 3.2.8–3.2.11. Accessed 2026-11-11.
- Tools: User Interaction Model
Model Context Protocol. Specification dated 25 November 2025. Accessed 2026-11-11.
- Security Best Practices
Model Context Protocol. Confused deputy, token passthrough, SSRF and scope minimization guidance. Accessed 2026-11-11.
- SLSA: Provenance
OpenSSF / SLSA. SLSA 1.2. Accessed 2026-11-11.
- Model Context Protocol: confirmation and tools
Stripe. Action-specific Dashboard confirmation, expiry and generic API tool documentation. Accessed 2026-11-11.
- Open Source Vulnerability format
OpenSSF / OSV. Schema 1.9.2, 13 October 2026; affected ranges and fixed events. Accessed 2026-11-11.
Edition history
Dated links preserve released methodology content. The undated address opens the current edition.
- Version 2 · 2026-11-11-v2Current edition
- Version 1 · 2026-11-11
Edition fingerprint: sha256:3580981f986236cc2486b90f0d37fb544465405fdb100b5dfffeb88cca72db64