Skip to main content
Glama
artsmia-mcp

artsmia-mcp

by aminamos

artsmia-mcp

Model Context Protocol (MCP) server, CLI toolkit, and API library for the Minneapolis Institute of Art (Mia) collection (search.artsmia.org).

Search over 90,000 artworks, fetch high-resolution images, explore gallery locations, look up artists and historical constituents, and query collection highlights.

CI License: MIT


Features

  • 🏛️ Full Collection Search: Elasticsearch queries across titles, artists, descriptions, provenance, curatorial text, dates, cultures, and departments.

  • 🖼️ High-Res Imagery: Automatic link resolution for 400px, 600px, 800px, and full-resolution uncompressed master images on Mia's CDN (1.api.artsmia.org).

  • 📍 Gallery Locations & On-View Filter: Discover artworks physically on view on floors 1, 2, or 3, or query specific galleries (e.g., G355).

  • 🎲 Random Art Exploration: Fetch random collection pieces, optionally filtered by gallery floor, genre, or artist.

  • ⭐ Curated Highlights: Access Mia's permanent masterwork collection highlights.

  • 👤 Artist & Constituent Bios: Retrieve artist metadata, Wikidata IDs, Wikipedia links, and cross-museum identifiers (Art Institute of Chicago, MoMA, SAAM).

  • 🤖 MCP Protocol Support: 7 tools, 2 resource templates (artsmia://highlights, artsmia://random, artsmia://artwork/{id}), and 2 guided prompts (curate_tour, artwork_critique).

  • 💻 Dual Mode: Runs as a standard stdio MCP server or as a standalone CLI.


Related MCP server: Museum MCP Server

Installation

Run with npx (No installation needed)

npx artsmia-mcp

Global Installation

npm install -g artsmia-mcp

MCP Client Configuration

Claude Desktop

Add this to your claude_desktop_config.json:

macOS / Linux

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

Windows

{
  "mcpServers": {
    "artsmia": {
      "command": "cmd.exe",
      "args": ["/c", "npx -y artsmia-mcp"]
    }
  }
}

Cursor (.cursor/mcp.json)

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

MCP Tools Reference

Tool Name

Description

Key Arguments

search_artworks

Search artworks with Elasticsearch syntax, filters, and pagination

query (required), size, from, sort

get_artwork

Retrieve complete metadata and high-res image links by object ID

id (required, number)

get_artworks_batch

Retrieve multiple artworks by list of IDs in a single batch

ids (required, number[])

get_random_artwork

Retrieve random artworks, optionally filtered by query/floor

size, query

search_highlights

Discover masterworks and curated collection highlights

query, size, from

get_on_view_artworks

Find artworks on physical exhibition in museum galleries

floor (1-3), room (e.g. 'G355'), size, from

get_person

Look up artist constituent information, Wikidata, and museum IDs

id (required, number)


CLI Usage

Search Artworks

# Search for artist or title
artsmia search "Claude Monet"

# Search with Elasticsearch query syntax
artsmia search "classification:Paintings AND country:Japan"

# Output raw JSON
artsmia search "Vincent van Gogh" --json

Inspect an Artwork

artsmia get 10436

Batch Lookup

artsmia batch 10436,1218,1413

Random Art

artsmia random
artsmia random --query="room:G3*" --size=3

Highlights & On-View

artsmia highlights --size=5
artsmia on-view --room=G355
artsmia on-view --floor=3

Person / Artist Constituent

artsmia person 1

Programmatic Library Usage

You can also import artsmia-mcp directly in Node.js or TypeScript:

import {
  searchArtworks,
  getArtworkById,
  getRandomArt,
  searchHighlights
} from "artsmia-mcp";

// Search artworks
const results = await searchArtworks({ query: "Monet", size: 5 });
for (const hit of results.hits.hits) {
  console.log(hit._source.title, hit._source.image_urls?.large);
}

// Get specific artwork with resolved images
const artwork = await getArtworkById(10436);
console.log(artwork?.title, artwork?.image_urls?.full);

Testing & Quality Assurance

The codebase includes a full test suite with 100% unit and integration test coverage across all tools, CLI flags, error paths, and resource handlers:

npm test
npm run test -- --coverage

License

MIT © Amin

Available Tools

7 tools
get_artworkA

Get complete curatorial metadata, physical dimensions, medium, provenance, labels, and direct high-resolution image links for a specific artwork by its Mia object ID.

Inputs: id (required).

get_artworks_batchC

Fetch multiple artworks by a list of object IDs in a single request.

Inputs: ids (required).

get_on_view_artworksA

Find artworks currently on physical exhibition in the museum galleries. Filter by specific gallery room code (e.g., 'G355') or museum floor (1, 2, or 3).

Inputs: from, room, size, floor.

get_personA

Look up artist or constituent information by ID, including Wikidata identifier, Wikipedia biography link, and IDs in other major museums (Art Institute of Chicago, MoMA, SAAM).

Inputs: id (required).

get_random_artworkA

Retrieve one or more random artworks from the Minneapolis Institute of Art, optionally filtered by gallery floor/room, artist, medium, or custom query.

Inputs: size, query.

search_artworksA

Search the Minneapolis Institute of Art (Mia) collection of over 90,000 artworks. Supports Elasticsearch query syntax, field filters (e.g. artist:"Claude Monet", classification:"Paintings", country:"Japan", room:"G355", rights_type:"Public Domain"), pagination (size, from), and sorting.

Inputs: query (required), from, size, sort.

search_highlightsC

Discover famous masterworks and curated highlight pieces in the Minneapolis Institute of Art permanent collection.

Inputs: from, size, query.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 7 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes: search vs. random vs. highlights vs. on-view vs. person lookup. The only potential confusion is between search_artworks and search_highlights, but their descriptions clarify that one searches the full collection and the other surfaces curated highlights.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern (search_artworks, get_artwork, get_person, etc.). The one compound name, get_on_view_artworks, still fits the established convention.

    Tool Count5/5

    Seven tools is well-scoped for a museum collection server. Each tool earns its place, covering search, retrieval, batch retrieval, random discovery, highlights, on-view browsing, and person lookup without unnecessary bloat.

    Completeness5/5

    For a read-only museum collection API, the surface is complete: full-text search, individual and batch lookup, random exploration, highlights, current exhibitions, and artist metadata. There are no obvious dead ends for typical collection-browsing workflows.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables querying the Cleveland Museum of Art's open access API to search artworks by filters like type, artist, and CC0 status, retrieve details by accession number, find creators, and explore exhibitions.
      304 npm
      1
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI agents to search and explore over 570,000 artworks from the Metropolitan Museum of Art and Art Institute of Chicago without needing an API key.
      9
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables searching the Metropolitan Museum of Art collection by subject, artist, or keyword, retrieving detailed artwork information, and listing curatorial departments via natural language.
      145 npm
      3
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables searching artworks, artists, and exhibitions from the Art Institute of Chicago collection via natural language, returning detailed artwork information, artist biographies, and exhibition status through the ARTIC public API.
      135 npm
      MIT