Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Keep your MCP server package maintained

What we checked

We looked at your package’s publish history to gauge whether it’s actively maintained. The signal passes when there’s been a recent release. Otherwise:

Actively maintained: published recently
Infrequently maintained: last published a long time ago
Maintenance not yet verified: the publish date is in the future (anomalous, possibly a registry clock skew), so it can't be graded.
Maintenance history not yet determined.

Why it matters

Maintenance is a leading indicator, not busywork. An unmaintained package is where unpatched vulnerabilities pile up, where dependency advisories go unanswered, and where attackers look for a takeover target precisely because nobody’s watching. A steady release cadence, even small releases, signals that someone is still home and that a security fix would actually ship.

It’s a signal, not a verdict, and the package rubric weights it as one: a small, finished tool can be stable rather than abandoned. But for the median package, recency correlates strongly with being safe to depend on.

How recently must I publish to count as maintained?

There’s no magic number you have to hit; we’re looking for evidence that the package is still tended, not a specific date on the calendar. As a reference point for what “active” tends to mean across the industry, the OpenSSF Scorecard Maintained check awards its top score for roughly a commit a week over the previous 90 days. Small, routine releases (a dependency bump, a docs fix) are enough to read as maintained; a long, silent gap (well over a year without a release) is what tips a package into reading as stale.

How to fix it

Keep a visible cadence and keep dependencies current:

  • Publish regular releases, even small ones: a dependency bump or a docs fix is a real release.
  • Keep dependencies current so security updates flow through (pair this with patching known vulnerabilities).
  • Automate releases so cutting one is cheap. A tag-triggered workflow removes the friction that lets packages drift:
name: release
on:
push:
  tags: ["v*"]

permissions:
contents: read
id-token: write  # enables npm provenance attestations

jobs:
publish:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 20
        registry-url: https://registry.npmjs.org
    - run: npm ci
    - run: npm publish --provenance --access public
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

How we re-check

We re-read your publish history on our next crawl. Once a recent, correctly-dated release is visible, the signal flips to a pass on the following score refresh.

Give this to your AI

Paste this into Claude Code (or any coding agent) from inside your server's repository. It states the failing signal, the outcome we re-check for, and the format the fix has to take.

Prompt
Context: this repository publishes an MCP server. VerifyMCP's maintenance
check failed, which means either there's been no recent release long
enough that the package reads as unmaintained, or the latest release
carries a timestamp in the future.

Goal: a recent, correctly-dated release is visible in the publish
history, so the next crawl records a recent release.

Do this:
1. Check your package's publish history on the registry to see which
   case applies.
2. If stale: if there is real, unreleased work (dependency bumps, fixes,
   docs), cut a genuine release for it. If the project is instead
   intentionally finished and stable, ask me before forcing a release
   just to move the needle, the rubric treats a small, finished tool as
   a legitimate exception, not a defect.
3. Add a tag-triggered release workflow (push a `v*` tag, publish from
   CI) so future releases are cheap and the cadence doesn't drift again.
4. If future: check the system or CI runner clock and your release
   pipeline's timestamp handling, fix the actual source of the bad
   timestamp, then cut a fresh release with a correct date.

Rules:
- Never run the publish command (`npm publish`, `twine upload`, `dotnet nuget
  push`, `cargo publish`, a release tag that triggers one) yourself. A
  published version is permanent and notifies every downstream consumer:
  prepare the change, show me the diff, and let me publish it.
- Never backdate, forward-date, or otherwise hand-edit a release
  timestamp to fake recency; fix the clock or pipeline that produced it.
- Never publish a release whose notes or version bump misrepresent what
  changed, an empty tag pushed purely to trip this check is not a real
  release.
- Ask me before deciding whether the project needs new work or is
  genuinely done.

Report back: which case applied, the release you published (or the clock
fix you made), and where I can see the corrected publish date on the
registry.

Reference: https://verifymcp.io/docs/packages/maintenance

Written by Stuart Blackler · Last reviewed 30 June 2026.