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

@su-sws/synthetic-web-team-mcp

v0.1.1

Published

MCP server exposing Stanford Web Services standards, the Global Footer contract, Decanter tokens, and the advisory compliance report to any MCP client.

Readme

@su-sws/synthetic-web-team-mcp

MCP server exposing Stanford Web Services standards to any MCP client.

A second entry point, never a requirement. Everything this server exposes is also a plain file under standards/ that an agent can read directly. If the server will not start, nothing else stops working.

Add it to a client

{ "mcpServers": { "sws": { "command": "npx", "args": ["-y", "@su-sws/synthetic-web-team-mcp"] } } }

npx @su-sws/synthetic-web-team init writes this for you into .mcp.json and .cursor/mcp.json.

Tools

| Tool | What it is for | |---|---| | sws_get_standard | Fetch a policy, pattern, recipe, or fragment. Accepts synonyms: footer, wcag, sso, cookies, tokens. Call with no topic to list everything | | sws_footer_html | Correct Stanford Global Footer markup, generated from the byte-exact contract | | sws_check | The advisory compliance report, structured, with a score out of 100 | | sws_decanter_token | Resolve a Decanter token from the CSS of the version actually installed | | sws_scaffold | Install the contract, standards and per-site record into a project. Dry run by default. Project scope only — the skills install once per machine, outside this tool |

Documents are also exposed as resources at sws://standard/<path>, for clients that support them. Tools are the portable surface; resources are the idiomatic one, and supporting both costs almost nothing.

Why sws_footer_html exists

The Global Footer is immutable, frequently gotten wrong, and mechanically generable. This project typed two of its ten URLs wrong from memory in its own first draft. Generating from the contract means that cannot happen again.

Why sws_decanter_token reads local CSS

Decanter 8 is CSS-first, so its tokens are plain custom properties in files we can read. The tool parses node_modules/decanter/src/css/**, which makes it version-accurate by construction rather than by staying in sync with a separate service. That is also why this project does not depend on decanter-mcp for v8 work.

Design notes

sws_check and sws_scaffold shell out to @su-sws/sws-cli and @su-sws/synthetic-web-team rather than reimplementing them. One implementation means the MCP result and the terminal result can never disagree, which is the drift this project is organised against. The cost is a process spawn.

Nothing is written to stdout except protocol frames. stdout is the transport; a stray console.log corrupts the stream and the client reports a parse error with no clue where it came from. Diagnostics go to stderr.

Tools never throw. A thrown error hands the calling model a stack trace, which it then tries to reason about. Every failure returns text saying what went wrong and what to do about it.

Protocol version

Built against the version @modelcontextprotocol/sdk negotiates — 2025-11-25 latest, down to 2024-11-05.

PROJECT-PLAN.md section 7 specified spec 2026-07-28 (stateless, server/discover). Checked against SDK 1.30.0 on 2026-09-01: that string appears nowhere in the SDK, server/discover appears nowhere in the SDK, and LATEST_PROTOCOL_VERSION is 2025-11-25. Building against a spec no SDK implements would have produced a server that works in no editor, which is the opposite of this project's portability thesis. Revisit when the SDK ships it; the tool surface does not depend on the transport.

Licence

GPL-3.0-or-later, matching Decanter.