- Reliability 9/20
- The README describes protocol version negotiation (2025-11-25 down to 2024-11-05), the initialize handshake, tool/resource/prompt registration, and TypeBox/AJV validation in a self-consistent way with many code samples, and claims 'comprehensive test coverage,' but this review had no server manifest (not cached) and no actual CI workflow or test files to verify against. Per the static calibration rule, reliability cannot exceed 12 without verifiable execution evidence; given the complete inability to confirm declared tool behavior matches implementation or that error handling is real, the score is further reduced to 9.
- Security and permissions 14/20
- Security design is broad: Origin validation against DNS rebinding, OAuth 2.1 + PKCE + JWT/introspection, a bearer-auth recommendation, a fine-grained canAccessTool authorization hook, input sanitization with depth/length limits, URL-mode elicitation that keeps sensitive data (passwords, API keys, payment info) out of form mode, and tasks bound to the token subject when authorization is enabled (with tasks/list refused in anonymous mode to prevent ID enumeration). No red-line issues were found (no malware, no irreversible destructive default actions). However, all of this is self-reported in README/docs with no source or tests confirming correct implementation, and rate limiting is described as something 'should be implemented' by the deployer rather than enforced by default, so it falls short of full marks.
- Maintenance 10/20
- The repo carries an Apache-2.0 license and is not archived, meeting basic compliance. But the only available metadata is 58 stars and 23 open issues — no commit history, release cadence, changelog, or security-response channel was provided to verify sustained or responsive maintenance. Following the rule that missing evidence is a deduction, only a middling score is warranted.
- Documentation 17/20
- Documentation quality is high: it covers installation, quick start, a protocol version negotiation table, SSE/Redis horizontal scaling, stdio transport, the full OAuth 2.1 flow, TypeBox vs AJV validation differences, the per-tool access hook, route schema customization, security considerations, and test examples, with clear layering and abundant examples, plus explicit callouts of edge cases (e.g., requests without an Origin header are always accepted; plain JSON Schema tools are unvalidated by default unless AJV is opted in). A modest deduction applies because several behaviors (e.g., rate limiting, many security claims) remain self-asserted, there's no independent troubleshooting/known-limitations section, and manifest data is unavailable.
- Setup experience 13/20
- Setup steps are clear: npm install plus an optional TypeBox dependency, a minimal Fastify plugin registration example, and working minimal code for both stdio and HTTP transports. Per the static calibration rule, without CI or test evidence to confirm these examples actually run, setup is capped at 15; the plugin also involves several optional prerequisites (Redis for horizontal scaling, an OAuth authorization server, the bearer-auth plugin) that add real-world setup complexity, bringing the score down to 13.