io. github. cyanheads/ met-museum-mcp-server
by cyanheads · remote · local (npm) · no sign-in to list tools · v0.9.0 · published by GitHub user cyanheads
Search the Met collection, browse by department or update date, fetch full records and CC0 images.
4 tools: 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads4Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http met-museum https://met-museum.caseyjhand.com/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
4 tools
Only reads 4Claude Code: allow
met_get_objectFetch full records for one or more Met Museum object IDs.No findings
Why it is in this group
- The name "met_get_object" says "get": a word for reading.
Description, as the server wrote it 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 success — a single 404 does not fail the whole batch; per-ID failures are reported separately. Object IDs come from met_search_collections (keyword search) or met_list_objects (browse by department or update date). Non-public-domain objects return empty image URLs. The constituents array is null for anonymous or unattributed works; tags and measurements are null when the Met records none. Records are returned whole and never truncated, so a batch of unusually large records may return fewer than requested — any that did not fit are listed in deferred[] with their sizes, to be re-requested in a follow-up call. Set includeImages to also receive the CC0 images of up to 3 returned records as image content a vision-capable model can look at.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
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_se…No findings
Why it is in this group
- The name "met_list_departments" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
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 dat…No findings
Why it is in this group
- The name "met_list_objects" says "list": a word for reading.
Description, as the server wrote it 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_get_object resolves to full records. With no filter the list is the whole collection (over 500,000 IDs). departmentId takes an ID from met_list_departments; updatedSince takes a YYYY-MM-DD date and answers "what has the Met added or revised since this day". Paging has no depth limit — pass nextOffset to continue. For keyword, classification, place, or object-date filters use met_search_collections instead. A list is cached for up to an hour, so a record revised within the last hour may not appear yet.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
met_search_collectionsSearch the Metropolitan Museum of Art collection by keyword and optional filters.No findings
Why it is in this group
- The name "met_search_collections" says "search": a word for reading.
Description, as the server wrote it 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 narrow results more than a longer query. Paging reaches only the first 10,000 matches of any search, so narrow a larger one with filters. The medium parameter takes an object classification as the Met spells it ("Paintings", "Sculpture"), not a material like "Oil on canvas". hasImages also includes copyrighted works; CC0 status is per object, from the isPublicDomain and hasCC0Image fields on met_get_object. isHighlight accepts true only. isOnView restricts results to works currently on display in a Met gallery.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.9.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http met-museum https://met-museum.caseyjhand.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__met-museum__met_list_departments",
"mcp__met-museum__met_search_collections",
"mcp__met-museum__met_list_objects",
"mcp__met-museum__met_get_object"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as met-museum. Review it before you use it.
