npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@zevruna/mcp

v1.2.1

Published

Zevruna's MCP server. Gives a coding agent the diff, blast radius and suggested patch for a contract break, and lets it verify the fix.

Readme

@zevruna/mcp

Zevruna's MCP server. Lets a coding agent resolve a contract break end to end.

The zevruna CLI tells you when an MCP contract moved. This gives your agent the tools to do something about it: the classified diff, the blast radius, a suggested patch, and the check that verifies the fix. Zevruna never needs write access to your repository — the agent makes the edits.

Install

npx zevruna registers this server and installs the matching skill, so most people never install it by hand. To wire it up yourself:

claude mcp add zevruna -- npx -y @zevruna/mcp

Any MCP client works — the entry is a stdio command:

{
  "mcpServers": {
    "zevruna": { "command": "npx", "args": ["-y", "@zevruna/mcp"] }
  }
}

Authentication

The server reads ZEVRUNA_TOKEN from the environment, falling back to the .env.zevruna file the wizard writes. Keep the token out of your client config — that file is usually committed.

Without a token the public tools still answer: get_advisories and check_endpoint.

Tools

| Tool | What it does | |---|---| | propose_instrumentation | Where to wrap agent runs in this repo, ranked, with the exact edit for each | | run_doctor | Verifies the install against reality and names the single next step | | list_servers | Monitored servers, latest contract hash, drift status | | list_incidents | Open and recent incidents — start here when no id was given | | get_change | The classified diff behind an incident | | get_blast_radius | Which agents, call sites and fields are affected | | suggest_patch | The edit list for the call sites | | run_check | Re-run the check for a consumer; a green check resolves the incident | | get_advisories | Public advisory feed, all servers or one | | report_upstream | A ready-to-file GitHub issue, when the change looks like an upstream mistake | | check_endpoint | Instant contract report for any MCP endpoint — no account required |

Typical use

Setting it up:

claude "set up Zevruna"

run_doctor reports the next step, propose_instrumentation returns the ranked boundaries and the edit for each, and the agent applies one where you can review the diff. It proposes; it never writes unattended.

Fixing a break:

claude "fix ZV-2481"

The agent pulls the diff, edits the call sites, regenerates manifests, and reruns the check. Nobody marks anything resolved by hand — the green check is the resolution.

Two things worth knowing

An empty answer is not an auth failure. Every account-scoped tool reports whether it is authenticated and says why a list is empty, because [] and "no token" are otherwise indistinguishable — and an agent reading [] will confidently diagnose the wrong cause.

Never apply a browser-side proposal. @zevruna/observe imports node:async_hooks. A bundler stubs that to an empty object, so the wrap builds green and throws when the chunk evaluates. propose_instrumentation marks those candidates and says to wrap the server route instead.

MIT © Zevruna