@cyanheads/met-museum-mcp-server

v0.1.1 pre-1.0

MCP server for The Metropolitan Museum of Art collection — 500K+ artworks with metadata, provenance, and open-access high-res images.

@cyanheads/met-museum-mcp-server
claude mcp add --transport http met-museum-mcp-server https://met-museum.caseyjhand.com/mcp
codex mcp add met-museum-mcp-server --url https://met-museum.caseyjhand.com/mcp
{
  "mcpServers": {
    "met-museum-mcp-server": {
      "url": "https://met-museum.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http met-museum-mcp-server https://met-museum.caseyjhand.com/mcp
{
  "mcpServers": {
    "met-museum-mcp-server": {
      "command": "bunx",
      "args": [
        "@cyanheads/met-museum-mcp-server@latest"
      ]
    }
  }
}
{
  "mcpServers": {
    "met-museum-mcp-server": {
      "type": "http",
      "url": "https://met-museum.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://met-museum.caseyjhand.com/mcp \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Tools

3

met_list_departments

Return the 19 curatorial departments at The Metropolitan Museum of Art with their numeric IDs and display names. Use before calling met_search to discover valid departmentId values. The department list is fetched live on each call to remain accurate if the Met reorganizes.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "met_list_departments",
    "arguments": {}
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
view source ↗

met_get_object

Fetch full records for one or more Met Museum object IDs. Accepts up to 20 IDs per call, fetches in parallel (concurrency-limited), and returns partial-success — a single 404 does not fail the whole batch. Object IDs come from met_search. Non-public-domain objects return empty image URLs. The constituents array is null for anonymous or unattributed works; tags is null for untagged objects.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "met_get_object",
    "arguments": {
      "objectIDs": "<objectIDs>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "objectIDs": {
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991,
        "description": "A Met object ID from met_search."
      },
      "description": "One or more Met object IDs to fetch. Maximum 20 per call. IDs come from met_search. Fetches run in parallel (concurrency-limited); partial failures are reported per ID rather than failing the whole batch."
    }
  },
  "required": [
    "objectIDs"
  ],
  "additionalProperties": false
}
view source ↗