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.
Maintainers
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-mcpRunning 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.jsTry 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 APIThe 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.
