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

everymuseum-mcp

v0.1.2

Published

MCP server for the EveryMuseum archive — search open-access museum artworks, pull up images, find similar works, and curate boards, all from a conversation with Claude.

Readme

EveryMuseum MCP server

An MCP server that puts the EveryMuseum open-access art archive inside any MCP-capable client (Claude Desktop, Claude Code, Cursor, …). Once added, you can converse with millions of public-domain and openly-licensed artworks from The Met, Rijksmuseum, the Art Institute of Chicago, the V&A, Getty, Smithsonian, Harvard, Cleveland, and more:

  • Pull up images — search by artist, culture, period, medium, or theme and see real artwork images inline in the conversation.
  • Learn — get full curatorial detail (description, medium, dimensions, culture, license, source link) and a high-resolution image for any work.
  • Go deeper — find visually and thematically similar works.
  • Build boards — collect works into persistent local boards (mood boards / reading lists) and export them to a shareable, editorial HTML gallery.

It talks to the live public API at https://everymuseum.org — no database, API key, or local copy of the app required.

Add it to Claude

Claude Desktop

Edit your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "everymuseum": {
      "command": "npx",
      "args": ["-y", "everymuseum-mcp"]
    }
  }
}

Restart Claude Desktop. You'll see the EveryMuseum tools available.

Claude Code

claude mcp add everymuseum -- npx -y everymuseum-mcp

Running from a local checkout (before npm publish)

Build once, then point your client at the compiled entrypoint:

cd mcp
npm install
npm run build
{
  "mcpServers": {
    "everymuseum": {
      "command": "node",
      "args": ["/absolute/path/to/CulturalAtlas/mcp/dist/index.js"]
    }
  }
}

Claude Code equivalent:

claude mcp add everymuseum -- node /absolute/path/to/CulturalAtlas/mcp/dist/index.js

Try it

"Show me some Hokusai prints." "Tell me more about the third one." "Find works similar to it." "Start a board called Edo seascapes and add those two." "Export the board and open it."

Tools

| Tool | What it does | | --- | --- | | search_artworks | Free-text search; returns captioned results with images. | | get_artwork | Full metadata + high-res image for one work (by id). | | find_similar | Related works for a given artwork id. | | suggest_searches | Curated ideas drawn from the archive's top facets. | | create_board | Create a saved board. | | add_to_board | Add works (by id) to a board. | | view_board | Show a board's works with images. | | list_boards | List all saved boards. | | remove_from_board | Remove works from a board. | | export_board | Render a board to a shareable HTML gallery (optionally open it). | | delete_board | Delete a board (requires confirm: true). |

Boards

Boards are stored locally as JSON at ~/.everymuseum/boards.json and persist across conversations. Each added work is snapshotted, so a board still renders even if the archive changes. Exported galleries are written to ~/.everymuseum/boards/<slug>-<id>.html — self-contained, offline-friendly, and safe to share.

Configuration

| Env var | Default | Purpose | | --- | --- | --- | | EVERYMUSEUM_API_BASE | https://everymuseum.org | Archive to query (set to http://localhost:3000 for local dev). | | EVERYMUSEUM_DATA_DIR | ~/.everymuseum | Where boards and exports are stored. |

Develop

npm install
npm run build      # tsc → dist/
npm test           # build + end-to-end stdio smoke test against the live API

The smoke test (test/smoke.mjs) spawns the server, speaks JSON-RPC over stdio, and exercises every tool against the live archive using a throwaway data dir.

Attribution & licensing

Images and rights belong to the source institutions. The archive only surfaces openly-licensed / public-domain records, but always check the per-work license field before reuse. This server's own code is MIT-licensed.