Skip to main content
Glama
art-mcp

art-mcp

by puf3zin

art-mcp

npm Nightly smoke test

An MCP server for searching museum collections and viewing artwork images and metadata — right inside Claude (or any MCP client).

It works out of the box with seven sources that need no API key, and can pull in three more if you provide free keys.

Sources

Source

source id

Strongest in

API key

The Metropolitan Museum of Art

met

Encyclopaedic

none

Art Institute of Chicago

artic

European & American

none

Cleveland Museum of Art

cleveland

European & American

none

Rijksmuseum

rijksmuseum

Dutch Golden Age

none

Victoria and Albert Museum

vam

Chinese, Japanese, Korean, South & SE Asian, Islamic, African

none

Japan Search

japansearch

Japanese art, prints, manuscripts

none

Wikidata / Wikimedia Commons

wikidata

Latin America and anywhere without a museum API

none

Harvard Art Museums

harvard

Encyclopaedic

free (request one)

Smithsonian Open Access

smithsonian

African, Asian, Indigenous American

free (sign up)

Museum of New Zealand Te Papa Tongarewa

tepapa

Taonga Māori, Pacific Cultures

free (register)

Looking beyond Europe and the United States

The first four sources are all Western institutions, which meant non-Western art was only visible through a collecting museum's Asian or African department. The six added since address that directly, but the coverage is uneven in ways worth knowing up front:

  • Asia is well served. vam and japansearch are both keyless, and smithsonian adds the National Museum of Asian Art.

  • Africa runs mainly through smithsonian (unit_code:NMAfA) and vam. There is no Africa-based institutional API to point at — Digital Benin is the most significant African digital archive but publishes no public API, and the British Museum's SPARQL endpoint no longer resolves.

  • South America has no museum API at all. Not one Latin American institution publishes a usable collections API. Brazil's federal museums run Tainacan as one WordPress site per museum with no central index and patchy images; Mexico's Mediateca INAH now redirects to a bare repository. So the region is covered by smithsonian (unit_code:NMAI, for Andean and Amazonian material) and by wikidata, which reaches Brazilian and Latin American painting through Wikimedia Commons. This is a real gap, not an oversight — worth revisiting as digitisation programmes there mature.

Why there is no Google Arts & Culture source

It has no public read API. The only developer-facing programme, Large Scale Data, is a pipeline for institutions to publish into the platform, and artsandculture.google.com/robots.txt explicitly disallows /api/*, so the internal endpoint is off-limits on both robots and terms-of-service grounds. Going direct to the institutions that publish their own open data — which is what most of the sources above are — gets the same collections without the problem.

A note on Smithsonian

One adapter covers 21 museums, so narrowing helps. The API accepts Solr-style field filters straight in the query string: unit_code:NMAfA (African Art), unit_code:FSG (Freer and Sackler, Asian art), unit_code:NMAI (American Indian).

Write the filter as a plain AND term — Nasca AND unit_code:NMAI. Wrapping free text and a field filter in parentheses makes EDAN drop the filter and match most of the institution.

DEMO_KEY works for a first try but is capped at 10 requests/hour.

NMAI is metadata-only in practice. Its records are flagged as having images, but the API returns no media for them — not in search results and not on the detail endpoint — which is consistent with the museum's cultural protocols around Indigenous material. So unit_code:NMAI is genuinely useful for finding and reading about Andean and Amazonian works, and get_artwork_image will almost always come up empty for them. NMAfA and FSG both serve images normally.

Japan Search is the National Diet Library's cross-sector aggregator — national museums, university archives and prefectural collections behind one index. It catalogs in Japanese and has no English titles, so query it in Japanese (北斎, 浮世絵) for decent recall. Results come back with language: "ja" and the native title in titleOriginal; that is correct output, not a failure. It is also the only source that reports a real per-object licence, which lands in license.

A note on Wikidata

This is a fallback for regions no museum API reaches, not a curated catalogue. Metadata quality varies far more per item than a museum's own records, and a search resolves the keyword to an entity and then returns works by it — so it answers "Tarsila do Amaral" well and a subject phrase badly. Images come from Wikimedia Commons.

A note on Rijksmuseum

This uses Rijksmuseum Data Services, which needs no key — the older www.rijksmuseum.nl/api endpoint was retired and now answers 410 Gone.

The new API serves Linked Art and has no free-text search parameter, so search_artworks fans the keyword across title, creator, and description and interleaves the hits. Search also returns bare identifiers, so each result costs a follow-up lookup (plus two more to resolve its image) — expect Rijksmuseum to be the slowest source in an all-museum search.

A note on Art Institute of Chicago

Search and metadata work, but the IIIF image host sits behind a Cloudflare bot challenge, so get_artwork_image will usually fail for artic with a 403.

Related MCP server: artic-mcp

Tools

  • list_sources — which museums are queryable right now.

  • search_artworks { query, source?, limit? } — search one source or all of them; returns compact results with a source + id for each.

  • get_artwork { source, id } — full metadata for one artwork.

  • get_artwork_image { source, id } — downloads the image and returns it so the model can actually see it.

Connect to Claude

No install step — npx fetches the package on demand.

Claude Code

claude mcp add art-mcp -- npx -y art-mcp

Claude Desktop

Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

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

Restart the client, then try: "Search the Met for Van Gogh and show me an image."

Adding API keys

All optional — seven sources work without any key. The server reads keys from the process environment, so pass them through your MCP client's env block; a bare .env file is not loaded automatically.

{
  "mcpServers": {
    "art-mcp": {
      "command": "npx",
      "args": ["-y", "art-mcp"],
      "env": {
        "HARVARD_API_KEY": "your-key-here",
        "SMITHSONIAN_API_KEY": "your-key-here",
        "TEPAPA_API_KEY": "your-key-here"
      }
    }
  }
}

SMITHSONIAN_API_KEY is the one most worth setting: it is instant and self-service from api.data.gov, and it is what unlocks the African, Asian and Indigenous American collections.

Reliability

Museum APIs rot quietly. The Rijksmuseum endpoint this server was originally built on was retired and started answering 410 Gone with no announcement — the kind of break that only surfaces when a user hits it.

So a nightly workflow runs the full search → detail → image path against every live API and opens an issue when a source that used to work stops working. Run it yourself with:

npm run smoke

Known-broken checks (currently the Art Institute's Cloudflare-blocked images) are reported but don't fail the run, so a red badge always means something new actually broke.

Development

npm install
npm run build     # compile to dist/
npm run dev       # run from source with tsx
npm run inspect   # build + open the MCP Inspector
npm run smoke     # exercise every provider against the live APIs

License

MIT

Available Tools

4 tools
get_artworkGet artwork detailsA

Fetch full catalog details for a single artwork by its source and id (as returned by search_artworks) — medium, dimensions, department, culture, where it was made, credit line, and rights where the museum publishes them. Use this to confirm attribution or rights before relying on a work, since search results carry only a summary.

Rights come back in two fields: isPublicDomain is a boolean and is only set when the source states it outright, while license carries the source's own wording (e.g. 'CC0', 'CC BY-NC-SA', 'In copyright'). Prefer license when advising on reuse — an absent isPublicDomain means unknown, not free.

Inputs: id (required), source (required).

get_artwork_imageGet artwork imageA

Download the image for a single artwork (by source and id) and return it so it can actually be viewed, plus a short caption. Use this whenever the user wants to see a work, or when you need to judge what a work actually depicts rather than trusting its title.

Not every record has an image, and the Art Institute ('artic') serves images from a host behind a bot challenge, so those usually fail with a 403 — prefer another source when you need to display something, and fall back to the museumUrl from search results if an image cannot be fetched.

Inputs: id (required), source (required).

list_sourcesList museum sourcesA

List the museum data sources this server can query and whether each is currently available. Sources needing an API key are unavailable until the key is configured.

Inputs: no named parameters.

search_artworksSearch artworksA

Search museum collections for artworks. Returns compact results including a source and id used with get_artwork or get_artwork_image.

IMPORTANT — this matches keywords against catalog metadata; it is not semantic search. Artist names, titles, cultures, and periods work well. Descriptions of subject matter work badly: a query like 'man crossing a bridge' matches any record containing 'man', 'bridge', or names like 'Bridges' and 'Cross', and buries the relevant results.

So translate the user's intent into catalog vocabulary before calling. If you can name a likely artist, school, or title from your own knowledge, search for that instead — e.g. prefer 'Hokusai' or 'Hiroshige Tokaido' over 'japanese painting of a bridge'. Searching a subject phrase directly is a last resort; if you must, use one or two distinctive nouns rather than a sentence.

Results are ordered by each museum's own relevance ranking, which is often weak — scan the whole list rather than assuming the first hit is best.

CHOOSING A SOURCE. 'all' is a fine default, but naming a source is much better when the work has an obvious home. Five of the ten sources hold mostly Western art (met, artic, cleveland, harvard, rijksmuseum); for anything else, reach for these first:

  • Japanese art and objects → 'japansearch' (Japan's national aggregator), then 'vam', 'met'

  • Chinese, Korean, South and Southeast Asian, Islamic → 'vam', then 'smithsonian'

  • African art → 'smithsonian' with unit_code:NMAfA in the query, then 'vam'

  • Indigenous Americas and pre-Columbian → 'smithsonian' with unit_code:NMAI

  • Māori and Pacific → 'tepapa'

  • Latin American art, and anywhere else with no museum API → 'wikidata'

Source-specific quirks worth knowing:

  • 'smithsonian' accepts field filters in the query, so unit_code:NMAfA or unit_code:FSG (Asian art) narrows 21 museums to one. Write it as a plain AND term — 'Nasca AND unit_code:NMAI' — and do not parenthesise it, which makes the filter silently drop. Note that unit_code:NMAI returns metadata but essentially never images, so use it to find and read about Indigenous American works, not to display them.

  • 'japansearch' catalogs in Japanese and has no English titles — query it in Japanese ('北斎', '浮世絵') for good recall, and expect titles to come back in Japanese with a language field marking them; that is correct output, not a failure.

  • 'tepapa' images are mostly 'All Rights Reserved' under Te Papa's cultural protocols for taonga Māori. They can still be fetched and viewed, but check license from get_artwork before suggesting a work can be reused.

Inputs: query (required), limit, source.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a distinct purpose: listing sources, searching for artworks, fetching full details, and retrieving images. No overlap exists.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (list_sources, search_artworks, get_artwork, get_artwork_image) in snake_case.

    Tool Count5/5

    Four tools is well-scoped for a museum art server that needs to discover sources, search, retrieve metadata, and get images.

    Completeness5/5

    The tool surface covers the full workflow: source discovery, search, detail retrieval, and image access. No obvious gaps for the intended use case.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      A MCP Server that lets user ask AI models to discover the collection of the Metropolitan Museum of Art. Adds the discovered art works as Resources on the server.
      4
      175 npm
      35
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      A server that provides access to the Art Institute of Chicago Collection through natural language interactions. This server allows AI models to search the Art Institute of Chicago Collection and have art works available as a Resource.
      6
      9 npm
      5
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server for the ConFd API that enables comprehensive management of museum and organization data. It allows users to search, create, update, and retrieve records, as well as manage logos through natural language commands.
      16 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An MCP server for browsing and downloading open-licensed imagery from major museum and archive APIs including Wellcome, Met, Library of Congress, Smithsonian, and Europeana.
      12
      30 npm
      MIT