closure_drift MCP server
io.github.luizfnsilva/closure_drift·v1.3.3·2 starsBefore an agent tags a release: does that version label already name different code in the git tags?
not scanned yet
2 stars
Reviews
Write oneNobody has reviewed closure_drift yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
closure_drift tools
No tool declarations could be read from the package source. They show once the server is installed.
How closure_drift compares
Against every graded Developer tools MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 88/100
- higher than 75% of 1,119 Developer tools servers
- GitHub stars
- 2
- more than 65% of 855 Developer tools servers
Release history: 7 versions in the registry since 2026-10-22, latest 2026-11-03, typically one every 1 day.
Install closure_drift in Claude Code, Cursor or VS Code
claude mcp add closure_drift -- docker run -i --rm ghcr.io/luizfnsilva/closure_drift:1.3.3
What the publisher says
From the closure_drift repository's README, as published. We do not edit it. Read it on GitHub
closure_drift
Does v1.4.2 mean one thing in your repository?
$ git clone -q https://github.com/psf/requests && cd requests
$ closure-drift --compare v2.16.0 v2.16.1
A v2.16.0 (commit bcd0e170ac20)
label 2.16.0
closure 3d2886b87c2a7b94 17 file(s)
B v2.16.1 (commit f687e9f3d8b0)
label 2.16.0
closure 696b71ed6023f563 18 file(s)
changed requests/__init__.py
only in B requests/packages.py
==============================================================
DIFFERS UNDER ONE LABEL: both declare 2.16.0, and the code differs
in 2 path(s). If both were published, that label names two things.Check it without this tool: git show v2.16.1:requests/version.py says 2.16.0. closure_drift reads the git history, not a package index: it shows what the tags contain, not which commit a published package was built from.
A version is a string a human edits. When two releases share a version and differ in code, one address names two artefacts — and nothing notices, because the version is all that was recorded.
One command checks it. Read-only, one file, no dependencies, no network.
Run it
curl -sO https://raw.githubusercontent.com/luizfnsilva/closure_drift/v1.2.0/closure_drift.py
python3 closure_drift.py # inside any git repositoryThat measures your repository. ./reproduce.sh is something else: it validates closure_drift itself (its test suites, a long run) and does not look at your repository.
or pipx run --spec git+https://github.com/luizfnsilva/closure_drift@v1.2.0 closure-drift. Needs Python 3.9+ and git. To see the three possible answers first: python3 examples/demo.py, or read docs/DEMOS.md.
Check before you tag
--would-tag answers: if I tag this commit now, does its version already name different code?
# GitHub Actions
- uses: actions/checkout@v4
with: { fetch-depth: 0 }
- uses: luizfnsilva/closure_drift@v1.2.0Push the workflow before the first tag: a tag pushed together with the workflow that should run on it may not start it (then run it by hand, with workflow_dispatch: in its on:). mode: measure concludes only from two distinct labels; on the first release it is inconclusive, exit 2, so gate with would-tag from the first tag.
# pre-commit, on git push
- repo: https://github.com/luizfnsilva/closure_drift
rev: v1.2.0
hooks: [{ id: closure-drift-would-tag }]Other pipelines: docs/CI.md.
For AI agents
An agent that tags and publishes can ask the same question first, through a Model Context Protocol (MCP) server, standard library only, with a would_tag tool:
claude mcp add closure-drift -- uvx --from git+https://github.com/luizfnsilva/closure_drift closure-drift-mcpCodex CLI, Gemini CLI, Cursor, VS Code, Windsurf, and a rule to paste into AGENTS.md, CLAUDE.md or .cursorrules: integrations/. The server makes the check available; the agent has to call it and respect the answer. The barrier is CI.
The answer
Exit 0 means clean and nothing else. No input we tried produces a traceback, and no failure exits 1.
they point to, or the tag itself when the version is derived from it
- label — the version your project declares at each tag: in its build files, in the module
- closure — SHA-256 over (path, git object id) of the files that determine your output
The report also says how many tags it could not compare.
Options
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
closure_drift: common questions
- Is closure_drift MCP server safe?
- Yes, by our scan: it is graded A (88/100). Read the closure_drift safety report
- How do I install closure_drift?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does closure_drift need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is closure_drift maintained?
- The last commit was 13 days ago (2026-10-22). The latest release is v1.3.3.
- What can I use instead of closure_drift?
- Servers from other publishers that do the same job: SoloMD MCP server, GitLab MCP Server and Repowise MCP server.
- How does closure_drift compare with other Developer tools MCP servers?
- safety score 88/100 (higher than 75% of 1,119 Developer tools servers); github stars 2 (more than 65% of 855 Developer tools servers). Full comparison.
Alternatives to closure_drift
Same job from other publishers: the closest match first, then the best rated.
- SoloMDRead and search a folder of Markdown notes: search, backlinks, tags, tasks, outlines, git history.not reviewedEstablishedB
- GitLab MCP ServerGitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.not reviewedWidely usedB
RepowiseCodebase intelligence for AI coding agents — graph, git history, docs, decisions, code health.not reviewedEstablishedB- GitComprehensive Git MCP server enabling native git tools including clone, commit, worktree, & more.not reviewedEstablishedA
- GitwandAuto-resolves Git merge conflicts so agents only touch the complex hunks.not reviewedEstablishedA