mcp-audit
Kiểm tra các máy chủ MCP về tuân thủ giao thức, sai lệch siêu dữ liệu và suy giảm tương thích. Sử dụng khi xem xét chú thích công cụ, lược đồ công cụ/kết quả, cấu trúc…
npx skills add https://github.com/getsentry/sentry-mcp --skill mcp-auditMCP Audit
Audit an MCP server against the current released MCP specification and any repo-specific compatibility constraints.
Read references/spec-baseline.md and references/checklist.md before making changes. Use references/version-watchpoints.md when spec drift, draft features, or older protocol targets may matter. references/common-findings.md captures recurring failure patterns. SOURCES.md is provenance, not the audit checklist.
Workflow
-
Pin the protocol baseline.
- Default to the latest released MCP spec revision unless the repo explicitly targets another version.
- Treat draft and SEP content as watchpoints, not release-blocking requirements, unless the user or repo explicitly asks for draft compatibility.
- Identify which MCP primitives and utilities the server actually implements: prompts, resources, tools, completions, logging, tasks, or experimental extensions.
-
Audit lifecycle and capability negotiation.
- Verify
initializeandnotifications/initializedbehavior, negotiated protocol version, and claimed capabilities. - Check that the server only advertises capabilities and sub-capabilities it actually supports, such as
listChanged,subscribe, or task-related capability blocks. - For HTTP transports, verify behavior around
MCP-Protocol-Versionafter initialization if the repo owns transport handling directly.
- Verify
-
Audit tools if present.
- Verify
tools/listpagination,notifications/tools/list_changedif claimed, and client-visible metadata from the exported server surface. - Check tool definitions:
name,title,description,icons,inputSchema,outputSchema,annotations, andexecution.taskSupport. - Check tool result semantics:
content,structuredContent,isError, embedded resources, resource links, and the split between protocol errors and tool execution errors. - Review safety hints conservatively:
readOnlyHint,destructiveHint,idempotentHint, andopenWorldHint. - Build the explicit upstream-mutation inventory for write-capable tools.
- Verify
-
Audit prompts and resources if present.
- Prompts: capability declaration,
prompts/listpagination,prompts/get,notifications/prompts/list_changed, argument handling, and prompt message content types. - Resources: capability declaration,
resources/listpagination,resources/read,resources/templates/list,resources/subscribe,notifications/resources/list_changed,notifications/resources/updated, URI scheme usage, MIME types, and text/blob encoding. - Preserve the spec control hierarchy: prompts are user-controlled, resources are application-controlled, and tools are model-controlled.
- Prompts: capability declaration,
-
Audit transports, auth, and security.
stdio: newline-delimited JSON-RPC overstdinandstdout, no non-protocol stdout, stderr-only logging, and environment-based credential handling rather than HTTP OAuth flows.- HTTP/Streamable HTTP: origin validation, localhost-binding guidance for local deployments, session and protocol-version handling, and HTTP-only auth flows when the server actually supports HTTP.
- Authorization: protected resource metadata discovery,
WWW-Authenticatechallenges, scope guidance, resource indicators, bearer-token handling, audience validation, and no query-string tokens. - Security: input and URI validation, access controls, output sanitization, rate limits and timeouts, consent or sandbox expectations for local servers, and DNS-rebinding or SSRF risk surfaces.
-
Audit version and compatibility drift.
- Separate true spec violations from intentional older-version targeting or host-specific behavior.
- Check newer released-spec features that may be missing or mis-modeled, such as icons, tool name guidance, execution or task support, and structured tool output.
- Note draft-only or SEP-only expectations separately so the audit does not over-enforce unreleased behavior.
- Check repo-specific compatibility constraints such as tool-count limits, generated definitions, inspector or SDK quirks, and Warden rules.
-
Run validation.
- Prefer existing integration tests against the exported server surface.
- If none exist, add or update the narrowest automated check that proves the claimed protocol behavior.
- Refresh generated definitions or catalogs if the repo uses them.
- Finish with the repo's normal validation commands when appropriate.
-
Report the result.
- State the protocol baseline audited.
- List every primitive and capability the server implements.
- List every upstream-mutating tool.
- Separate confirmed violations, compatibility risks, and watchpoints.
- Call out what was validated via source inspection versus real server behavior.
- Note any assumptions about older spec targets, client quirks, or host-specific extensions.
Failure Handling
- If the repo targets an older MCP revision, audit against that version first and record the delta to latest separately.
- If framework adapters transform schemas or annotations, trust the exported wire surface over local declarations.
- If HTTP auth or transport behavior is owned by upstream infrastructure, audit the repo-owned boundary and explicitly mark the remainder as inherited or out of scope.
- If a requirement appears only in a draft or SEP, do not fail the server on it unless the user asked for draft compatibility.
- If a check passes structurally but the real server response differs, treat the wire behavior as authoritative.