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

@bna-ui/mcp

v1.0.0

Published

MCP server for the BNA UI registry — lets AI assistants browse and read components

Readme

@bna-ui/mcp

A Model Context Protocol server over the BNA UI registry, so Claude Code, Cursor, VS Code and other assistants can list, search and read components — props, usage and full source — instead of recalling the library from training data.

That matters more than it sounds. Asked to "add a BNA UI button", a model with no way to look it up produces web React: <div className="flex">, Tailwind classes, Radix primitives. BNA UI is React Native — it renders through react-native, not the DOM. Every response from this server is prefixed with that constraint, next to the component it is about to be used for.

No configuration, no API key. Everything it serves is the public registry.

Install

Claude Code

claude mcp add bna-ui -- npx -y bna-ui mcp

Any other client — same command, in its config file:

{
  "mcpServers": {
    "bna-ui": {
      "command": "npx",
      "args": ["-y", "bna-ui", "mcp"]
    }
  }
}
  • Cursor.cursor/mcp.json
  • VS Code / Copilot.vscode/mcp.json
  • Windsurf~/.codeium/windsurf/mcp_config.json
  • Codex~/.codex/config.toml

bna-ui mcp hands off to this package, which is why the CLI stays small: the MCP SDK pulls in express, hono, ajv, cors and jose for HTTP and SSE transports this server never uses — 93 packages and 24 MB that no npx bna-ui add should pay for. Only StdioServerTransport is used here.

You can also run it directly, skipping the CLI shim:

npx -y @bna-ui/mcp

Tools

| Tool | What it answers | | ---------------------- | ------------------------------------------------------------------------------------------------------ | | list_components | Everything installable, filterable by component, chart, hook or theme. | | search_components | "Which component does X?" — matches names and descriptions. | | get_component | Description, props, variants, usage, accessibility notes, dependencies, full source and every example. | | get_component_source | Just the source, for when the API is already known. | | get_install_plan | The exact add command, the npm packages, and the files it will write. | | get_docs | Any documentation page as Markdown, with all source expanded inline. |

Nothing is written to disk

get_install_plan returns a command; it does not run it. Installing stays an explicit step you or your assistant takes with npx bna-ui add, so nothing appears in your project without you asking.

Configuration

| Variable | Effect | | ----------------- | --------------------------------------------------------------- | | BNA_UI_REGISTRY | Registry to read from. Defaults to https://ui.ahmedbna.com/r. |

It shares the ~/.cache/bna-ui ETag cache with bna-ui add, so an agent and a human hitting the same registry see byte-identical data, repeat calls are free, and it keeps working offline against a warm cache. Point BNA_UI_REGISTRY at http://localhost:3000/r to develop against a local docs site; get_docs follows it there too.

Requires Node.js 22.12 or newer.

Links

MIT © Ahmed BNA