Skip to main content
Every rule mcpscore runs, generated from the rule registry (make docs-rules) — this page cannot drift from the code.
  • Rule ID is the stable machine contract used in JSON reports and CI.
  • Weight is the severity’s contribution to the score when the rule passes.
  • Applies to is the spec-version range; outside it the rule is skipped and excluded from the maximum score (see the methodology).

Protocol Version

Rule IDNameSeverityWeightApplies to
protocol_version_allowedMCP Protocol Version - Allowed VersionsCRITICAL5all versions
protocol_version_not_deprecatedMCP Protocol Version - Deprecated VersionHIGH3all versions
protocol_version_latestMCP Protocol Version - Latest VersionMEDIUM2all versions

Server Info

Rule IDNameSeverityWeightApplies to
server_name_presentServer Info - Name PresentCRITICAL5all versions
server_version_presentServer Info - Version PresentHIGH3all versions
server_title_presentServer Info - Title PresentMEDIUM2all versions
server_instructions_presentServer Info - Instructions PresentLOW1all versions

Capabilities

Rule IDNameSeverityWeightApplies to
capability_tools_presentCapabilities - Tools PresentCRITICAL5all versions
capability_tools_list_changedCapabilities - Tools listChanged ImplementedHIGH3all versions
capability_prompts_presentCapabilities - Prompts PresentCRITICAL5all versions
capability_prompts_list_changedCapabilities - Prompts listChanged ImplementedHIGH3all versions
capability_resources_presentCapabilities - Resources PresentCRITICAL5all versions
capability_resources_list_changedCapabilities - Resources listChanged ImplementedHIGH3all versions
capability_resources_subscribeCapabilities - Resources subscribe ImplementedHIGH3all versions
capability_logging_presentCapabilities - Logging PresentMEDIUM2all versions

Security

Rule IDNameSeverityWeightApplies to
security_tls_enabledHTTPS/TLS EnabledCRITICAL5all versions
security_malformed_request_handlingMalformed Request HandlingMEDIUM2all versions
security_error_data_leakNo Sensitive Data in Error MessagesMEDIUM2all versions

Tools

Rule IDNameSeverityWeightApplies to
tools_at_least_oneTools - At least one tool must existCRITICAL5all versions
tools_name_present_in_allTools - All tools must have a NameCRITICAL5all versions
tools_names_uniqueTools - All tool names must be uniqueCRITICAL5all versions
tools_names_valid_formatTools - All tool names must follow the formatHIGH3all versions
tools_title_present_in_allTools - All tools must have a TitleHIGH3all versions
tools_description_present_in_allTools - All tools must have a DescriptionHIGH3all versions
tools_input_schema_validTools - All tools must have a valid input schemaHIGH3all versions
tools_output_schema_validTools - All tools must have a valid output schemaHIGH3all versions
tools_annotations_presentTools - All tools should declare behavior annotationsMEDIUM2all versions

Transport

Rule IDNameSeverityWeightApplies to
transport_streamable_httpStreamable HTTP TransportLOW1all versions

Resources

Rule IDNameSeverityWeightApplies to
resources_description_presentResources - All resources should have a descriptionMEDIUM2all versions

Prompts

Rule IDNameSeverityWeightApplies to
prompts_description_presentPrompts - All prompts should have a descriptionMEDIUM2all versions
prompts_arguments_documentedPrompts - All prompt arguments should be documentedLOW1all versions

Readiness rules (separate score)

These rules assess readiness for MCP 2026-07-28 on the independent readiness axis — they never affect the main score. See the methodology for the normative citations behind each rule.
Rule IDNameSeverityWeightApplies to
readiness_2026_server_discoverReadiness 2026-07-28 - server/discoverCRITICAL5all versions
readiness_2026_stateless_requestReadiness 2026-07-28 - stateless requestsCRITICAL5all versions
readiness_2026_meta_validationReadiness 2026-07-28 - _meta validationHIGH3all versions
readiness_2026_header_validationReadiness 2026-07-28 - HTTP header validationHIGH3all versions
readiness_2026_cache_metadataReadiness 2026-07-28 - caching hintsHIGH3all versions
readiness_2026_unsupported_version_errorReadiness 2026-07-28 - unsupported-version errorsMEDIUM2all versions
readiness_2026_error_code_migrationReadiness 2026-07-28 - error-code migrationMEDIUM2all versions
readiness_2026_result_typeReadiness 2026-07-28 - resultType on resultsMEDIUM2all versions
readiness_2026_deprecated_featuresReadiness 2026-07-28 - deprecated featuresMEDIUM2all versions
readiness_2026_tool_schema_dialectReadiness 2026-07-28 - tool schema dialectLOW1all versions
readiness_2026_no_session_idReadiness 2026-07-28 - no session IDsHIGH3all versions
readiness_2026_removed_methodsReadiness 2026-07-28 - removed methodsMEDIUM2all versions