Skip to main content
Glama
kintopp

rijksmuseum-mcp+

by kintopp

rijksmuseum-mcp+

MCP Protocol MCP Apps

Overview

rijksmuseum-mcp+ lets you explore the Rijksmuseum's artwork collections through natural conversation with an AI assistant. It does this by creating a bridge between the AI system's chat environment and an enriched copy of the museum's open-access, curated metadata. This in turn enables many additional features beyond those offered by the Rijksmuseum's Search API and collections portal, including full-text semantic search, structured provenance analysis, artwork similarity comparisons, AI-based visual analysis, and geospatial search. Rijksmuseum-mcp+ works best when used together with rijksmuseum-iconclass-mcp, an analogous resource for searching and exploring Iconclass concepts.

Please do not treat the data made available by this resource as current or authoritative. It is based on data copied from the Rijksmuseum on May 2nd, 2026. For current data, please always use the Rijksmuseum's own search portal and APIs. Nor have the (in small part, also LLM based) enrichments of the museum's provenance data been reviewed or endorsed by the Rijksmuseum. This is an early pre-release of a technology demo that is still in active development. It is likely to include errors.

This tool was developed as a technology demo by the Research and Infrastructure Support (RISE) group at the University of Basel. We are particularly interested in exploring the research opportunities, methodological risks, and technical challenges posed by retrieving and analysing data with LLMs. If you are interested in collaborating with us in this area, please get in touch.

Related MCP server: artic-mcp

Quick Start

The best way to get started is with Claude Desktop or claude.ai by adding rijksmuseum-mcp+ as a custom 'Connector' to Claude using the URL below. This currently requires a paid ('Pro') or higher subscription from Anthropic.

https://rijksmuseum-mcp-plus-production.up.railway.app/mcp

Go to CustomizeConnectorsAdd custom connector → Name it as you like and paste the URL into the Remote MCP Server URL field. You can ignore the Authentication section. Once the connector is configured, optionally set the permissions for its tools (e.g. 'Always allow'). See Anthropic's instructions for more detailed instructions.

Afterwards, follow the same procedure to install rijksmuseum-mcp+'s companion IconClass resource, rijksmuseum-iconclass-mcp. This allows you to automatically search and explore c. 1.3 million Iconclass notations, concepts, and descriptive texts alongside the Rijksmuseum's metadata.

It is possible (with some tradeoffs) to use rijksmuseum-mcp+ without a paid subscription. For more details, please see the Choosing an AI system section below.

Research skill

The rijksmuseum-mcp+ skill file (.zip archive) gives the AI assistant detailed guidance in natural language on how to use rijksmuseum-mcp+ effectively: which tool to choose for a given question type, how to combine searches, important metadata distinctions (e.g. subject terms vs iconclass notations), and known limitations. The package also includes reference files with full description of the available provenance search patterns and the find_similar functionality. Making use of a skill is optional but will significantly improve the quality and efficiency of your AI assistant's responses when exploring the collection.

The downloaded skill file can be installed in Claude by following these instructions. Skills were originally developed by Anthropic for their Claude products but have since become an open standard. Even chatbots and applications without explicit support for skill packages can make use of the rijksmuseum-mcp+ skill by uploading/sharing its components with an AI assistant at the start of a research session. Some chatbots (e.g. Mistral's LeChat) allow you to permanently share files such as this with an LLM across sessions by uploading it to a personal library.

Sample Queries

After you've connected the resource to your AI system, you can search, explore and ask questions about the Rijksmuseum's collections in natural language.

  • What German artworks at the Rijksmuseum evoke vanitas and mortality?

  • Which artworks have a provenance linked to Emperor Bonaparte?

  • Show artworks which include an inscription saying, 'Amor vincit omnia'

  • Find artworks similar to SK-A-2350

  • Show me sculptures in the collection by artists born in Leiden

  • What are the three largest paintings in the collection by width?

  • Which 15th-century paintings are listed as workshop productions?

  • Show me the Roermondse passie and highlight the Betrayal of Judas

For examples of more complex queries and responses, please see the research scenarios.

Features

Rijksmuseum-mcp+ provides the following key features and capabilities, all via natural language prompts:

More searchable metadata

Where the Rijksmuseum's own Search API offers around a dozen filter parameters, rijksmuseum-mcp+ provides roughly thirty, and most can be combined freely within a single query.

Beyond the basic maker, object type, material, technique, and date filters, you can search and filter on subject matter, the place where a work was produced, curatorial theme tags,creator demographics (e.g. gender, profession, birthPlace), all title variants for an artwork, and attribution qualifiers (e.g. workshop of, circle of, attributed to). Physical dimension filters support queries about the size of an artwork (e.g. "paintings wider than 3 metres"). You can also search by who or what a work portrays, independently of who made it or where it was produced: a depictedPerson query finds artworks portraying a named individual (e.g. portraits of Willem van Oranje), matching a large set of historical name variants, while a depictedPlace query finds works that depict a given location (e.g. topographical views of Amsterdam), with automatic disambiguation for multi-word or ambiguous place names. To complement query-driven discovery, the collection can also be explored through thematic and sub-collection groupings curated by Rijksmuseum staff — for example sets of drawings or paintings, or works gathered around an iconographic theme.

Full-text queries over the title, description, inscription, and curatorialNarrative fields can optionally be structured. This lets you combine boolean clauses, field scoping, proximity, exact phrases, exclusions, and prefix matching, while simultaneously narrowing results with normal filters such as creator, type, date, material, or technique.

Proximity searches on enriched, geocoded places let you find artworks related to locations already in the museum's catalogue (e.g. "artworks depicting places within 25 km of Leiden"). The necessary geo-coordinates were added only where the Rijksmuseum's own metadata provided a link to an external authority such as the Getty Thesaurus of Geographic Names. Alternatively, proximity searches can also be made on the basis of arbitrary, user or AI provided coordinates.

When searching, matching is accent-insensitive (so "Cezanne" finds "Cézanne") and relevance-ranked. The museum's Search API returns results in a fixed order (by internal identifier), not by relevance — so its first hits are not necessarily the best matches, and an AI assistant (or person) who reads only the top few could miss the most relevant work entirely. Subject searches (i.e. Iconclass themes and depicted scenes) are matched using basic English stemming so that, e.g. cat also finds cats and painting finds paint.

Rijksmuseum-mcp+ adds support for multilingual, concept-based, exploratory searches drawing simultaneously on the full-texts of several metadata fields (title, description, inscription, curatorialNarrative). This allows for broad, interpretive queries of their contents by meaning (e.g. "a sense of loneliness in domestic interiors") that go beyond what structured, keyword-based searches or filters can reveal. For more details, please see semantic search.

Inscriptions

Many artworks carry inscriptions on the object itself — collector's marks, signatures, dates, numbers, and other transcribed text. Rijksmuseum-mcp+ parses these free-text inscription records into structured segments, including recognised Lugt collector's marks, which identify the collectors and dealers through whose hands a work passed. This makes them searchable in their own right (e.g. finding all works bearing a particular collector's mark, signed in a given year, or carrying a specific transcribed phrase).

Iconclass

Iconclass notations can be searched (also semantically) by title and description and explored hierarchically by following their parent and child branches via the companion rijksmuseum-iconclass-mcp resource. Rijksmuseum-iconclass-mcp knows which Iconclass notations are attached to Rijksmuseum artworks and can also provides links to ArtResearch queries to let you view more artworks sharing an Iconclass notation from the collections of the twelve member institutions of the PHAROS consortium.

Analyse provenance (experimental)

The Rijksmuseum records the ownership history of c. 48,000 artworks as free-text provenance narratives following the AAM punctuation convention. Rijksmuseum-mcp+ has parsed and partially enriched these narratives into over 100,000 structured events with a CMOA-aligned transfer vocabulary, making them searchable by party name, transfer type (e.g. sale, gift, bequest, inheritance, confiscation or restitution), date range, location, and price in the original historical currency. This enables structured queries such as tracing a collector's activity across the collection, identifying artworks that were confiscated but never restituted, or comparing auction prices in guilders across centuries.

Every provenance record carries searchable provenance-of-provenance metadata tracking how it was enriched. In addition, because some enrichments are inferred by an LLM rather than derived by rule, whenever a provenance search returns LLM-assisted results the server also generates a custom review webpage that sets each artwork's original narrative next to the parsed events and the model's stated reasoning for every inferred classification.

For more details, please see the provenance reference documentation.

Conservation and technical examinations

For a single artwork, rijksmuseum-mcp+ can assemble its conservation and forensic record: the technical examinations a work has undergone (X-radiography, dendrochronology, infrared reflectography, paint-sample analysis, and the like), its documented restoration and conservation treatments, a count of the signature and inscription marks recorded on it, and a short excerpt of its provenance text for cross-reference.

Bibliography and citations

You can request the citations recorded for a given artwork, each with its linked publication record, page range, and ISBN where known. The relationship can also be followed in reverse: starting from a publication, you can list every artwork in the collection whose references cite it (e.g. "which works in the collection does this publication document?").

Interactive image viewer with AI analysis

Images from the Rijkmuseum's collections can be viewed inline in your chat conversation with an interactive, deep-zoom image viewer that supports pan, zoom, rotation, horizontal flip, and full-screen mode. The AI assistant can analyse what it sees in conjunction with the collection's metadata, and can independently zoom into and annotate regions of interest on request with labelled bounding boxes.

By switching the viewer into interactive mode (press "i" or click on the □ icon), a user can draw a rectangle around an area of interest. This copies its bounding-box coordinates into the prompt and direct the AI assistant's attention to it (e.g. "identify the species of butterfly I've highlighted in the image"). When the displayed artwork has related variants — curator-declared pendants, production stadia, or different examples of the same design — the viewer's < / > buttons let you step through them in place, without leaving the viewer.

Find similar artworks

A search for artworks 'similar to' other artworks (e.g. "find artworks similar to van Gogh's Zelfportret") creates a custom, comparison webpage that places an artwork alongside the works most similar to it, evaluated across nine dimensions: visual appearance, related variant (curator-declared pendants, production stadia, different examples), related object (other curator-declared edges such as pairs, sets, recto/verso, and reproductions), artistic lineage (shared creators, workshops, or attribution chains), Iconclass subject classification, semantic description, curatorial themes, depicted persons, and depicted places. Works that appear across multiple dimensions are listed in a final, combined "pooled" view, highlighting the most broadly connected artworks in the collection.

Here is an example of a custom webpage with a find_similar analysis.

Collection statistics and distributions

Beyond retrieving individual artworks, rijksmuseum-mcp+ can compute aggregate statistics across the whole collection by grouping the collection along a chosen dimension and returning counts, percentages, and histograms (e.g. "how do artwork types break down by century?", "which persons are depicted most often?", or "what is the distribution of provenance transfer types — sale, gift, bequest — for Rembrandt?"). Artwork and provenance filters combine freely, so a single query can ask, for instance, for the type breakdown of an artist's autograph paintings, or for sales by decade between 1600 and 1900.

Command-line interface

Rijksmuseum-mcp+ includes a command-line interface tool (rijks-mcp) for scripting, data pipelines, and reproducible bulk queries. This is itself a lightweight MCP client that drives the same queries the AI assistants use — so a terminal query returns exactly the results an LLM would. It exposes each of the stateless tools as a verb (search, semantic, provenance, details, similar, and more), connecting either to a hosted HTTP server or its own STDIO server. Output is JSONL by default (one JSON object per line) for easy piping into tools such as jq, with --fields, --json, and --table formatting options and rijks-mcp <verb> --help describing each command.

Choosing an AI system

Technically speaking, rijksmuseum-mcp+ works with any chatbot or application supporting the open Model Context Protocol (MCP) and MCP Apps standards. As such, it also works with many other browser based chatbots including those whose large language models (LLMs) can be used without a paid subscription.

Mistral's LeChat is an example (follow these instructions) of a browser based chatbot with very good, basic support of the MCP standard. In addition, many desktop 'LLM client' applications, such as Jan.ai, are also MCP-compatible, and can be used with other LLM models (including local models). Most agentic coding applications (e.g. Claude Code or OpenAI Codex) also support the MCP standard. OpenAI's ChatGPT can also be used as a rijksmuseum-mcp+ MCP client but only in 'developer mode' and in conjunction with a paid subscription. Google has announced MCP support for Gemini but has not indicated when this will be ready.

However, subjectively speaking, most of the LLMs powering alternative AI assistants are not as 'smart' in their use of this MCP server as Anthropic's leading models. For this reason, at present (June, 2026), the best way to use rijksmuseum-mcp+ remains Anthropic's Claude Desktop or claude.ai combined with a paid ('Pro') or higher subscription. ChatGPT plus a supscription is a good second choice. And if a paid subscription is not feasible, Mistral's LeChat using its free model also works well, albeit slowly and with less intelligence.

How it works

When you submit your question, the AI assistant decides on the basis of their descriptions which combination of tools and search parameters provided by rijksmuseum-mcp+ will best answer it by drawing on the the museum's metadata. The assistant might search the collection using structured filters (search_artwork), look up an artwork's full metadata (get_artwork_details), query ownership history (search_provenance), or find artworks by meaning or concept (semantic_search). During this process, it will often chain several tools together in sequence (the so-called 'agentic loop'), each result informing the next query. The results from each tool come back as structured data and text, which the AI assistant interprets, contextualises, and when satisfied, finally sends back as an answer in natural language.

At each step, the AI assistant can combine the retrieved data with its own background knowledge — about artists, periods, iconographic traditions, and historical context — to offer interpretations that go beyond what the museum's metadata alone can provide. But the form and content of these statements will also be 'grounded' and 'constrained' by the curated metadata it has retrieved, by the instructions given to the AI assistant in the MCP server, and by the specialised domain knowledge and guidance it draws on from the optional research skill document. Together, these act as a kind of 'harness' for the AI assistant, keeping it factually grounded on the curated metadata and the user's query.

Because rijksmuseum-mcp+ maintains its own copy of Rijksmuseum and (via rijksmuseum-iconclass-mcp) Iconclass metadata, it can organise, enrich, query and analyse this in ways that are not possible by querying the Rijksmuseum collections portal or search API. A separate database enables, for example:

  • searching full-text metadata in relevance ranked order

  • retrieving metadata semantically by meaning or concept

  • enriching toponyms (places) with long/lat data to permit proximity and region-based search

  • parsing provenance texts to create structured, searchable ownership chains

  • comparing artworks across multiple dimensions of 'similarity'

In essence, rijksmuseum-mcp+ trades the conceptual simplicity of a traditional search interface, where you formulate a keyword-based query, receive results, and interpret these yourself, for a more flexible and powerful but also more complex scenario, where an AI assistant can search metadata, combine, and interpret the results on your behalf. Importantly, because the AI assistant has access not only to what it retrieves but also the way this data is organised, it is also able to offer a certain degree of 'introspection' on its actions – to explain how and why a query was conducted, what the data it retrieved looked like, and recommend options for how best to carry out a query.

flowchart LR
    User["You"] <-->|conversation| AI["AI Assistant"]

    AI <-->|"MCP tool calls
    (agentic loop)"| Server["rijksmuseum-mcp+
    19 tools"]

    Server --> Search["Search & Discovery
    structured filters,
    semantic search,
    collection statistics"]

    Server --> Details["Details & Metadata
    provenance chains,
    bibliography & conservation,
    similarity comparison"]

    Server --> Images["Image Inspection
    deep-zoom viewer,
    region crops for AI vision,
    overlay annotations"]

    Search --> VocabDB[("Vocab DB
    834K artworks
    418K vocab terms
    14.8M mappings")]
    Search --> EmbeddingsDB[("Embeddings DB
    834K vectors
    semantic search")]
    Details --> VocabDB
    Images --> IIIF["IIIF Image API
    iiif.micr.io"]

    subgraph Harvest ["Periodic harvest (offline)"]
        OAI["OAI-PMH
        data.rijksmuseum.nl/oai"]
        LA["Linked Art
        id.rijksmuseum.nl
        (harvest-time)"]
    end
    OAI -.->|"834K records"| VocabDB
    LA -.->|"vocab + artwork
    enrichment"| VocabDB
    VocabDB -.->|"embedding
    generation"| EmbeddingsDB

Tips and Limitations

  • If something fails unexpectedly, try disconnecting and reconnecting the connector. Because rijksmuseum-mcp+ runs as a hosted remote MCP server, changes to its configuration from recent updates can leave the connector in an incorrect state — symptoms include queries never being answered, generic error messages, or the AI assistant reporting that a tool is unavailable. If connecting/disconnecting does not resolve the issue, remove the connector (MCP server) entirely and re-add it.

  • Ask the assistant to explain which tools and filters it used. Because rijksmuseum-mcp+ exposes many overlapping search patterns (e.g. keyword filters, semantic search, spatial queries), the AI assistant sometimes picks a narrower or broader strategy than you intended. If a result seems incomplete or suspiciously tidy, ask follow-ups like "let me the see the remaining artworks for this query as well", or "explain how you reached this result". Being explicit in your prompt about whether you want a structured search (e.g. "all paintings by X made in Y") versus an exploratory search (e.g. "list a few...") will help the AI assistant interpret your question. Drawing on the optional research skill should also improve the quality of the responses.

Technical notes

For local setup (stdio or HTTP, also via cli), deployment, architecture, data sources, and configuration, please see the technical guide.

Roadmap

Ongoing:

  • fix bugs and fine-tune queries and tool descriptions

  • update README and other documentation

Later:

  • paper/presentation

  • investigate DINOv3 image retrieval

  • investigate OCR/HTR of artwork images

Maybe:

  • incorporating historical exhibition data

  • integration with other Linked Open Data resources (e.g. Colonial Collections)

  • supporting inferred geolocation data

  • improving the description signal for find_similar (e.g. via a LLM re-ranker)

Authors

Arno BosseRISE, University of Basel with Claude Code, Anthropic.

Citation

If you use rijksmuseum-mcp+ in your research, please cite it as follows:

APA (7th ed.)

Bosse, A. (2026). rijksmuseum-mcp+ (Version 0.90) [Software]. Research and Infrastructure Support (RISE), University of Basel. https://github.com/kintopp/rijksmuseum-mcp-plus

BibTeX

@software{bosse_2026_rijksmuseum_mcp_plus,
  author    = {Bosse, Arno},
  title     = {{rijksmuseum-mcp+}},
  year      = {2026},
  version   = {0.90},
  publisher = {Research and Infrastructure Support (RISE), University of Basel},
  url       = {https://github.com/kintopp/rijksmuseum-mcp-plus},
  orcid     = {0000-0003-3681-1289},
  note      = {Developed with Claude Code (Anthropic, \url{https://www.anthropic.com})}
}

Image and Data Credits

Collection data and images are provided by the Rijksmuseum, Amsterdam via their Linked Open Data APIs.

Licensing: Information and data that are no longer (or never were) protected by copyright carry the Public Domain Mark and/or CC0 1.0. Where the Rijksmuseum holds copyright, it generally waives its rights under CC0 1.0; in cases where it does exercise copyright, materials are made available under CC BY 4.0. Materials under third-party copyright without express permission are not made available as open data. Individual licence designations appear on the collection website.

Attribution: The Rijksmuseum considers it good practice to provide attribution and/or source citation via a credit line and data citation, regardless of the licence applied. Please see the Rijksmuseum's information and data policy for the full terms.

This project was inspired by @r-huijts/rijksmuseum-mcp, the original Rijksmuseum MCP server based on the museum's now superseded REST API.

License

This project is licensed under the MIT License.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
2dResponse time
5dRelease cycle
26Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kintopp/rijksmuseum-mcp-plus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server