- Reliability 9/20
- The README describes an elaborate architecture (two-tool dispatch over 43 operations, batch/atomic semantics, idempotency cache, token-bucket rate limiting with retry) and claims a vitest suite covering the markdown parser, dispatcher, batch semantics, access control, and HTTP transport. However, no actual test files or CI workflow files were provided for inspection — these are only prose claims in the README, unverifiable from the static material given. The manifest is internally consistent with the README (stdio transport, package name, env vars) with no visible contradictions. Per the static calibration rule, reliability cannot exceed 12 without verifiable CI/test evidence, and the remaining uncertainty pushes the score toward the lower-middle of that range.
- Security and permissions 11/20
- Credentials are passed via the NOTION_TOKEN env var and correctly flagged isSecret in the manifest. The docs are commendably transparent that a PAT grants the same access as the user's entire workspace, and offer a narrower Internal Integration alternative. NOTION_READ_ONLY and NOTION_ALLOWED_OPERATIONS/BLOCKED_OPERATIONS support least-privilege configuration, and the HTTP transport defaults to loopback with an explicit warning to set MCP_AUTH_TOKEN before exposing it externally. However, by default all write and destructive operations (archive/trash page, delete_block, delete_comment, etc.) are enabled with no confirmation step, and the docs themselves admit that the 'destructive' blocklist does not cover destructive-equivalent actions like update_database's in_trash flag or update_page_markdown replacing page content — a disclosed but unmitigated gap. NOTION_UPLOAD_ROOT is opt-in, so unrestricted file-path reads are the default rather than the exception. Overall, risks are well disclosed with reasonable optional mitigations, but default least-privilege and confirmation gating are incomplete, capping the score in the low-teens.
- Maintenance 11/20
- The repo carries an MIT license, 165 stars, 12 open issues, is not archived, and is at version 3.0.0 with a MIGRATION.md documenting the v1.x upgrade path — signs of ongoing iteration. However, no commit history, release cadence, issue-response-time data, or dedicated security-response channel (e.g., SECURITY.md) was provided, so governance and update-path maturity cannot be confirmed. Per the rules, this missing evidence is a deduction rather than an assumed positive.
- Documentation 17/20
- The README is extensive: quick-start blocks for multiple clients, a detailed auth comparison (PAT vs Internal Integration), a full env-var table, operation-restriction guidance, HTTP-transport security notes, a troubleshooting section, an FAQ, and a complete non-developer walkthrough — plus proactive disclosure of real limitations (the destructive-blocklist gap, unrestricted file uploads by default). This approaches the top-tier bar of layered docs with disclosed limitations. Points are deducted because several comparative figures (e.g., '422 tokens' vs '17,163 tokens') rely on an external benchmarks link not included in the material and are unverifiable, and much of the competitive framing reads as marketing rather than neutral documentation.
- Setup experience 13/20
- The docs offer multiple installation paths — npx, Docker/Podman, a one-click Claude Desktop extension (.mcpb), and a VS Code install badge — with clear, low-friction steps typical of an npm-distributed MCP server. However, per the static calibration rule, setup cannot score above 15 without verifiable CI workflow files and committed tests, none of which were provided for inspection. The score therefore stays under that ceiling and is moderated further for the lack of independently verifiable execution evidence.