cyanheads avatar

Met Museum Mcp Server

cyanheads/met-museum-mcp-server

Connects Claude to the Metropolitan Museum of Art's public collection API with three focused tools: list all 19 curatorial departments, search 500K+ artworks by keyword with filters for date range, medium, geography, and public domain status, and fetch full object records including provenance, artist bios, Getty and Wikidata links, and CC0 image URLs. Built on the Met's open API, so no authentication required. Handles batch fetching for up to 20 objects at once with partial failure reporting, and surfaces CC0 flags so you know which images are actually usable. Reach for this when you need structured art historical data, open access images for display, or want to let Claude search museum collections with precise filtering rather than keyword scraping.

GitHub stars
4
tools
4
transport
STDIO, HTTP
env vars
7
last updated
Nov 4, 2026

Install

From registry metadata
$ npx add-mcp https://met-museum.caseyjhand.com/mcp --name met-museum

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http met-museum https://met-museum.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 4 tools

Verified live against the running server on Nov 6, 2026.

met_list_departmentsReturn the 19 curatorial departments at The Metropolitan Museum of Art, each with its numeric departmentId and display name — the valid values for the departmentId filter on met_search_collections and met_list_objects.

Return the 19 curatorial departments at The Metropolitan Museum of Art, each with its numeric departmentId and display name — the valid values for the departmentId filter on met_search_collections and met_list_objects.

No parameters. Call it with no arguments.

met_search_collectionsSearch the Metropolitan Museum of Art collection by keyword and optional filters. Returns the total match count and one page of matching object IDs, which met_get_object resolves to full records. Relevance is keyword-based, not semantic; department and geographic filters narro...12 params

Search the Metropolitan Museum of Art collection by keyword and optional filters. Returns the total match count and one page of matching object IDs, which met_get_object resolves to full records. Relevance is keyword-based, not semantic; department and geographic filters narro...

Parameters* required
dateBegininteger
First year of the date window, inclusive. Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd. The window keeps only objects whose whole date span (objectBeginDate to objectEndDate...
dateEndinteger
Last year of the date window, inclusive. Negative integers for BCE. Requires dateBegin. The window keeps only objects whose whole date span (objectBeginDate to objectEndDate on met_get_object) lies...
departmentIdinteger
Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_depa...
geoLocationarray
Filter by geographic origin: one place, whole and case-sensitive as the Met spells it, as a one-element array (e.g., ["Greece"], ["Japan"]). A different case ("greece"), a fragment ("Gree"), or a "...
hasImagesboolean
When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced; false restricts them to objects with none. For freely...
isHighlightboolean
Opt-in filter, true only — omit it rather than passing false, which the search ignores. Selects objects the Met has designated as highlights — major works central to the collection.
isOnViewboolean
When true, restricts results to objects currently on display in a Met gallery; false restricts them to objects not on view. The GalleryNumber field on the met_get_object record identifies the speci...
limitinteger
Maximum number of object IDs to return in this page. A page holds at most 500 IDs, the Met search maximum: a larger value reads a 500-ID page and the notice says so — continue from nextOffset. Pagi...default: 20
matchFieldstring
Restrict the keyword match to one field: "title" matches object titles only, "tags" matches subject tags only, "artistOrCulture" matches the artist an object is attributed to (artistDisplayName on...one of title · tags · artistOrCulture
mediumstring
Filter by one object classification, case-sensitive and spelled as the Met spells it (e.g., "Paintings", "Drawings", "Prints", "Ceramics", "Sculpture", "Photographs", "Textiles") — "paintings" or "...
offsetinteger
Zero-based index of the first match to return (default 0); pass the nextOffset from a previous response to continue paging. Only the first 10,000 matches are reachable, so an offset at or beyond 10...default: 0
q*string
Keyword query, matched across title, artist name, culture, medium, tags, and other text fields; matchField narrows the match to titles, tags, or artists and cultures. Broad terms return large ID se...
met_list_objectsBrowse the Metropolitan Museum of Art collection without a keyword: every object ID in one curatorial department, every object whose record was created or revised on or after a date, or both together. Returns the total count and one page of IDs in ascending order, which met_ge...4 params

Browse the Metropolitan Museum of Art collection without a keyword: every object ID in one curatorial department, every object whose record was created or revised on or after a date, or both together. Returns the total count and one page of IDs in ascending order, which met_ge...

Parameters* required
departmentIdinteger
Restrict the list to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_dep...
limitinteger
Maximum number of object IDs to return in this page. A page holds at most 500 IDs: a larger value reads a 500-ID page and the notice says so — continue from nextOffset.default: 20
offsetinteger
Zero-based index of the first ID to return (default 0); pass the nextOffset from a previous response to continue paging. IDs are in ascending order and every one is reachable; an offset at or past...default: 0
updatedSincestring
List only objects whose record was created or revised on or after this date, the day itself included, as YYYY-MM-DD (e.g., "2026-09-01") — no time part and no other date format. It compares the UTC...
met_get_objectFetch full records for one or more Met Museum object IDs. Fetches up to 20 distinct IDs per call; a list of up to 500 (a full search or list page) is accepted, and the distinct IDs past the first 20 come back unrequested in remainingIDs for a follow-up call. Returns partial su...2 params

Fetch full records for one or more Met Museum object IDs. Fetches up to 20 distinct IDs per call; a list of up to 500 (a full search or list page) is accepted, and the distinct IDs past the first 20 come back unrequested in remainingIDs for a follow-up call. Returns partial su...

Parameters* required
includeImagesboolean
Also attach the web-display image (primaryImageSmall, about 600 px on the long edge) of the first 3 returned records that have hasCC0Image true, in request order, as image blocks in content[], each...default: false
objectIDs*array
One or more Met object IDs to fetch, up to 500 — a full met_search_collections or met_list_objects page. A repeated ID is fetched and returned once, at its first position. The first 20 distinct IDs...

Sponsors

Configuration

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_SESSION_MODEdefault: stateless

HTTP session mode: auto, stateful, or stateless. This server explicitly sets stateless; the framework schema default is auto.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/met-museum-mcp-server

Search the Metropolitan Museum of Art collection, browse it by department or update date, fetch full artwork records and open-access images via MCP. STDIO or Streamable HTTP.

4 Tools

Details

Repository
github.com/cyanheads/met-museum-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/met-museum-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyanheads avatarOpenlibrary Mcp Servercyanheads/openlibrary-mcp-serverSearch books and authors, fetch editions, browse subjects, and resolve cover images.4stars
2ofershap avatarScraperofershap/mcp-server-scraperWeb scraping MCP — extract clean markdown, links, and metadata from any URL.4stars
3thinkchainai avatarUK Parliament MCP Server from MCPBundlesthinkchainai/mcpbundlesSearch MPs and Lords, fetch profiles, synopses, and Westminster constituencies3stars
4cyanheads avatarWikidata Mcp Servercyanheads/wikidata-mcp-serverSearch and fetch Wikidata entities, execute SPARQL queries, and resolve external identifiers.3stars
5diffbot avatarDiffbotdiffbot/diffbot-mcpWeb search, page extraction, crawling, and Knowledge Graph queries from Diffbot's web index.3stars
6ofershap avatarMarkdownofershap/mcp-server-markdownMarkdown MCP — search, extract sections, list headings, find code blocks.3stars