- Reliability 8/20
- Static evidence shows a plausible runnable shape: server.json declares PyPI package ggmcp 0.7.0 run via uvx over stdio, and the README describes tools gated by OAuth scopes plus several deployment modes (hosted OAuth proxy, self-hosted Docker, local stdio with PAT). However, no verifiable execution evidence is provided: the supplied repository summary contains no CI workflows and no committed test files covering key paths, and the calibration rule forbids awarding high reliability without exactly that. There are also internal inconsistencies (description claims 600+ detectors while the manifest and README claim 500+), and stdio still defaults to a deprecated browser-OAuth path, which is a latent init/auth instability. Error handling, dependency controllability, and reproducible MCP init + tool-list handshake are all unevidenced. Missing evidence is a deduction, so 8.
- Security and permissions 12/20
- No red-line evidence found: no malware, credential theft, covert exfiltration, unconfirmed irreversible delete/pay/deploy defaults, and no real tokens in README examples (placeholder your_pat_here is used). Least-privilege direction is positive: the README states the server defaults to read-only-leaning permissions and that exposed tools depend on the token's OAuth/PAT scopes, and the hosted mode acts as an RFC 9728 OAuth Protected Resource proxy. Deductions are concrete: how the GitGuardian access token/PAT is handled, whether it is persisted to disk (the legacy stdio OAuth flow stores the PAT locally), and logging/data-boundary behavior are not documented; write-capable actions (creating honeytokens, opening remediation PRs, mutating incidents) have no described explicit confirmation; and the hosted path routes requests through two third-party endpoints (mcp.gitguardian.com plus api.gitguardian.com) with only a one-line data-flow disclosure. Permissions and confirmation are incomplete, so 12.
- Maintenance 11/20
- Maintenance signals are moderately positive: MIT license, explicit version 0.7.0, a migration section, deprecation notices for developer-mcp-server and secops-mcp-server, and a pointer to DEVELOPMENT.md, all indicating ongoing iteration; the repo is not archived. Against this, 25 open issues remain with no visible response data, and the supplied material shows no commit cadence, release history, dependency-update policy, or security-response channel (e.g. SECURITY.md). Governance and versioning details are therefore gaps, and the issue-to-star ratio suggests possible backlog. Given read-only evidence and the rule that missing evidence deducts, 11.
- Documentation 13/20
- Documentation is fairly strong but carries hidden assumptions. Strengths: layered README covering install for five mainstream clients (Cursor, Claude Desktop, Claude.ai, Windsurf, Zed), a four-mode authentication comparison table, a full configuration reference table with defaults, a self-hosting Docker command, migration notes, and a development-doc pointer; examples use placeholders rather than real secrets; and it explicitly discloses that stdio OAuth is deprecated and slated for removal. Deductions: no per-tool parameter documentation (it only says tools depend on scopes, without a tool list or inputs); no cost/quota guidance; no troubleshooting section; internally inconsistent capability claims (600+ versus 500+ detectors); and the self-hosting section describes behavior while admitting it is not yet ready for users, creating a gap between documented and actual state. 13.
- Setup experience 8/20
- An install path exists but is manual and error-prone. server.json offers a single uvx+stdio package invocation, and the README supplies copy-pasteable JSON for five mainstream clients, with the hosted OAuth path advertised as requiring no local install or token management, which is a real strength. Deductions: static calibration caps setup at 15 and the absence of CI/tests prevents a high score; local stdio requires the user to create a PAT in the GitGuardian dashboard and hand-edit config; on macOS Claude Desktop the uvx absolute path is required (the README itself notes $PATH is not resolved), a known fragility; self-hosting requires writing a Docker command, terminating TLS behind a reverse proxy, and explicitly setting IS_ON_PREM to avoid hostname-guess failures; and the four auth modes plus many env vars impose non-trivial cognitive load. 8.