Federated search of open-access museum collections with strict license verification and citation tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Open Museum MCP.
One search across open-access museum collections worldwide, with strict per-museum rights verification and ready-to-use citations.
The Met, Rijksmuseum, the Smithsonian, Cleveland Museum of Art, the Art Institute of Chicago, SMK (National Gallery of Denmark), the Walters, Wellcome Collection, Wikimedia Commons, and Europeana โ searched together, returned in one normalized shape, with the rights gate enforced per museum so you never receive a record whose open-access status is missing or ambiguous. The list keeps growing.
See it in action first โ pramod.ch/open-museum-mcp โ three worked examples (cross-tradition pairing, date-windowed scan, counterpoint discovery), real records, real citations, no install required.
search_artworks, get_artwork, cite) with consistent schemas across sources, instead of installing one MCP per museum.I kept wanting reuse-safe artwork for my writing, and every museum's rights model is different. So I built one MCP interface that only returns records that pass per-museum verification rules, with strict deny on ambiguity. It lets me search by artist, period, region, and other fields, and pulls the image and description back in one normalized shape.
If anyone else is exploring open-access art, I hope this helps. The plan is to keep adding museums from around the world.
There are excellent single-museum servers (metmuseum-mcp, rijksmuseum-mcp, smithsonian-mcp). This one is the multi-museum entry point: install once, query across all sources at the same time, get a single normalized schema across them, with a license gate you can audit per museum in src/licenseGate.ts. If you only ever need one collection, install that museum's MCP. If you want comparisons across institutions, citations across periods, or rights-verified breadth โ install this.
search_artworks for queries like Dutch genre painting 1640โ1680.full, caption, short) generated deterministically from the same record โ paste straight into a paper, a slide caption, or an inline reference.museum://{code}/{id} resources let you bookmark interesting IDs across a session.A search call returns license-verified results in one normalized shape:
Want to see it work before installing? pramod.ch/open-museum-mcp walks through the three core workflows with real records and citations.
For supported clients, no JSON, no Node, no npm โ pick your client:
open-museum-mcp.mcpb from the latest release and double-click it. Claude Desktop opens the bundle and installs the server in one step.For ChatGPT with MCP, Cline, Goose, Continue, Zed, or anything else: paste this into your client's MCP config and restart. npx fetches and runs the server on first launch.
Then point the MCP config at the built binary:
Once installed, paste one of these into your MCP client (Claude Desktop, ChatGPT with MCP, etc.) โ the tools take care of the rest.
Cross-tradition pairing for an essay or slide deck
Find a 17th-century Dutch genre painting and a same-period work from East Asia I can pair as a comparison. Return citations in caption form for both.
The agent will call search_artworks with year_min: 1600, year_max: 1700 plus your two queries, then cite(id, "caption") on the picks.
Date-windowed research scan
Show me Dutch genre painting between 1640 and 1680. Six works, full citations, prefer different artists.
search_artworks({ query: "Dutch genre painting", year_min: 1640, year_max: 1680, limit: 6 }) then cite per result.
Counterpoint to a canonical work
Suggest a non-canonical Edo-period work to pair with Vermeer's Woman Holding a Balance. Explain the contrast.
search_artworks for Vermeer, then discover_random({ region: "japan", period: "edo" }) for the counterpoint, then prose from the agent grounded in both records' metadata.
| Tool | Description |
|---|---|
search_artworks(query, museum?, has_image?, limit?, year_min?, year_max?) | Search across registered museums. Returns only records that pass the rights gate. Supports an inclusive date-range filter via year_min / year_max for queries like "Dutch genre painting 1640โ1680" (BCE = negative integer). |
get_artwork(id) | Fetch a single artwork by its normalized ID (e.g. met:436535). |
cite(id, style?) | Render a citation. style: full (artist, title, date, museum, license, URL), caption (image attribution), short (inline). |
discover_random(region?, period?, not_artist?, museum?) | Pick one random artwork from the local cache that matches the constraints. Operates over what has already been searched and cached. Useful for breaking out of repetitive search territory. |
list_traditions() | List the regions and periods present in the local cache, with per-museum record counts. Lets you see where holdings are well-represented and where they're sparse. |
cite example outputsFor Van Gogh's Wheat Field with Cypresses (met:436535):
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/cfpramod-open-museum-mcp)<a href="https://allmcps.com/mcp/cfpramod-open-museum-mcp"><img src="https://allmcps.com/api/badge/cfpramod-open-museum-mcp?style=directory" alt="Open Museum MCP on AllMCPs" /></a>