MCP security self-check
Twelve review points, with a clear boundary between observations and tests you still need to perform.
- Transport. Check TLS certificate validation and supported protocol versions. A network failure is inconclusive, not proof of an invalid certificate.
- Public discovery. Decide which metadata is intended to be public. Listing tools without a token does not prove their execution bypasses authorization.
- Protected execution — manual test. In your own authorized test environment, verify each sensitive tool rejects unauthorized callers and enforces tenant boundaries. The discovery probe does not run this test.
- CORS. Evaluate origins and credentials together. A wildcard origin can be intentional; browsers reject wildcard origins for credentialed responses. CORS is not server authorization.
- Sessions. Use an appropriate random identifier when your protocol profile uses sessions. Do not use a session id as authentication. One observed id cannot establish predictability.
- Authorization discovery. For a protected endpoint, check the authentication challenge and metadata against the MCP version you implement. A 401 can be expected behavior.
- Descriptions. Read descriptions in context. Keyword matches, imperative phrasing and description length alone are not proof of tool poisoning.
- Input validation — manual test. Test allowed and denied URL, path and command inputs in an authorized environment. A schema merely identifies a review surface; it does not reveal whether validation is effective.
- Annotations. Use accurate hints where helpful. MCP annotations are optional and cannot replace permissions, consent or other enforcement.
- Error handling — manual test. Inspect error responses using an agreed test scope. A 5xx alone does not establish denial of service. The discovery probe does not send malformed requests.
- Rate limits — manual test. Verify limits on expensive or sensitive operations within an agreed load budget. The discovery probe does not stress-test the service.
- Evidence. Separate observed behavior, hypotheses, tests not performed and confirmed impact. Keep client reports private and exclude secrets.
Our probe performs initialization and list requests plus transport/header inspection. It never calls tools or submits malformed requests. A clean discovery report is not a security certification.
Reference: MCP authorization specification. See the corrected sample.