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

priora-portal-mcp

v0.3.0

Published

MCP server that lets Claude keep a client's PRIORA Vault portal (changelog, roadmap, roadmap plans, health, updates, overview metrics) up to date via propose-then-approve writes.

Readme

PRIORA Portal MCP

An MCP server that lets Claude keep one client's PRIORA Vault portal current — changelog, roadmap, health, meeting recaps, and dashboard metrics — without ever writing something the user hasn't approved.

How it works

Every write is two phases:

  1. A propose_* tool validates a draft and returns a preview + token. It writes nothing.
  2. Claude shows the preview to you (via its question UI) and only calls commit_proposal with that token after you approve.

The token encodes the exact previewed content, so a commit can only write what you saw. There is no delete capability, and every commit is appended to an audit log in the portal database.

Per-client setup (one directory per client)

No code to clone or build — the server runs directly via npx. Client identity comes from config + token, never the directory name.

In the client's working directory:

  1. Create .priora-portal.json:

    { "apiUrl": "https://vault.priora.io", "clientSlug": "acme-corp" }

    Replace acme-corp with the client's slug from the PRIORA Vault admin.

  2. Get a token for this client from your PRIORA admin (minted once, then carried to any machine). Keep it secret.

  3. Create .mcp.json:

    {
      "mcpServers": {
        "priora-portal": {
          "command": "npx",
          "args": ["-y", "priora-portal-mcp@latest"],
          "env": { "PRIORA_PORTAL_TOKEN": "pp_..." }
        }
      }
    }

    The @latest tag makes npx re-resolve on each launch, so a published update rolls out with just a Claude Code restart (no cache to clear).

  4. Restart Claude Code. Run portal_status to confirm the connection.

The server refuses to start without a valid .priora-portal.json and token, so it can't be accidentally driven against the wrong client.

Tools

Read

  • portal_status — confirm which client you're locked to and that the API is reachable.
  • get_changelog / get_roadmap / get_health / get_updates / get_overview_metrics — read current state before drafting.
  • get_departments — the client's one department list, shared by the roadmap filter and Departmental Health. A roadmap department has to be a name from here.
  • get_roadmap_plan — read the full Claude scoping plan attached to a roadmap item (get_roadmap shows a hasPlan flag; plans are elided from the list).

Propose (writes nothing; returns a preview + token)

  • propose_changelog_entry — draft a changelog entry.
  • propose_roadmap_update — draft a roadmap item create/update, or mark one shipped (complete: true also drafts a linked changelog entry). department must name an existing department; estimatedHours sets the effort estimate the portal totals.
  • propose_roadmap_plan — attach a Claude scoping plan (Markdown) to an existing roadmap item, with an optional client-visibility toggle.
  • propose_health_update — draft a health check update (stage + five dimensions; status derived automatically).
  • propose_update — draft a meeting recap.
  • propose_overview_metric_update — draft a dashboard metric create/update.

Commit

  • commit_proposal — apply an approved proposal. The only tool that writes.

Develop

npm install
npm run dev    # tsx src/index.ts (stdio)
npm run build  # tsc -> dist/
npm publish    # builds first via prepublishOnly