# Met Museum MCP

> Met Museum MCP Server provides direct access to the Metropolitan Museum of Art's open API. Your AI agent can search 470,000+ artworks using keywords, filter by department or culture, and retrieve deep metadata (dates, materials, dimensions) instantly. It’s built for researchers who need structured data on art history without scraping websites.

## Overview
- **Category:** knowledge-management
- **Price:** Free
- **Tags:** art-history, museum-api, cultural-heritage, open-access, artwork-metadata

## Description

You're running an art history project, and you need structured data from the Met Collection—not just pretty pictures. This server gives your AI agent direct access to over 470,000 artworks and their metadata. You get clean JSON records every time; no scraping websites necessary.

To start scoping your research, you first call `list_departments`. This tool spits out a complete list of all nineteen museum departments, letting you narrow down the scope of what you're looking for right off the bat. Once you know your department, you use `search_objects` to run targeted searches. You can hit it with keywords—like an artist's name or a specific material—or filter by culture and department to find multiple artworks that fit your criteria.

When you pull up a list of potential objects from `search_objects`, you need the deep background info. You use `get_object` on any single object ID to retrieve every piece of metadata available for that artwork, including precise dimensions, creation dates, and titles. This gives you the full record details for one specific item.

If you're building a database or checking inventory across the whole collection, you execute `list_objects`. That tool returns a massive list of valid object identifiers across all 470,000+ pieces. You can then take any ID returned by `list_objects` and run it through `get_object`. This confirms that the object ID is active in the system and grabs its current record data for validation. Every time you check an ID this way, you're making sure your dataset stays accurate.

The entire process flows like this: You use `list_departments` to define your search area; you run `search_objects` with keywords or filters (like culture or material) to find a list of relevant object IDs; and then, for every single one that matters, you call `get_object` to pull the full metadata—dimensions, dates, titles—or use `list_objects` followed by `get_object` if you just need to confirm the ID's existence. You never have to worry about complex API calls or parsing messy web pages; your agent handles it all with structured JSON output.

## Tools

### list_departments
Lists all available museum departments to define your search scope.

### get_object
Retrieves the full record details for a single object ID.

### list_objects
Returns a list of every valid, existing object ID in the collection.

### search_objects
Searches for artworks using keywords and optional filters like department or culture.

## Prompt Examples

**Prompt:** 
```
Search for 'Van Gogh' paintings that are currently on view in the museum.
```

**Response:** 
```
I found several works by Vincent van Gogh currently on view. Notable Object IDs include 436535 (Wheat Field with Cypresses) and 436533 (Self-Portrait with a Straw Hat). Would you like the full details for any of these?
```

**Prompt:** 
```
List all museum departments and their IDs.
```

**Response:** 
```
The Met has 19 departments. Some examples include: 'American Decorative Arts' (ID: 1), 'Egyptian Art' (ID: 10), and 'Modern Art' (ID: 21). I can use these IDs to filter your future searches.
```

**Prompt:** 
```
Get the detailed record for object ID 436535.
```

**Response:** 
```
Object 436535 is 'Wheat Field with Cypresses' by Vincent van Gogh (1889). It is an oil on canvas from the European Paintings department. I have also retrieved the primary image URL for you.
```

## Capabilities

### Search by Keyword or Filter
Your agent runs `search_objects` to find multiple artworks matching criteria like artist name, culture, or material.

### Identify Available Departments
The agent calls `list_departments` to get a clean list of all 19 museum sections you can narrow your search down to.

### Fetch Full Object Details
Using `get_object`, the agent retrieves every piece of metadata—dimensions, dates, titles—for one specific artwork ID.

### List All Valid IDs
The agent executes `list_objects` to generate a complete list of valid object identifiers across the entire collection.

### Validate Object Existence
You can use `get_object` on any ID returned by `list_objects` to confirm it’s active and retrieve its current record data.

## Use Cases

### Comparing Period Styles
An art historian needs to compare three specific sculptures. They first call `list_departments` to confirm the 'Greek and Roman' ID. Then, they use `search_objects` with keywords like 'bust' and that department ID. Finally, they run `get_object` on each of the resulting IDs to pull identical metadata fields for a direct comparison.

### Curating a Design Moodboard
A designer is working on an industrial-era piece and needs inspiration from public domain art. They use `search_objects` with 'metal' or 'industrial' as keywords, limiting the search to specific departments they know contain that material. This provides high-quality source images without needing a visual database.

### Analyzing Collection Growth
A data scientist wants to see how many objects were added last year and what their dominant materials are. They run `list_objects` to get the full list, then filter that dataset using metadata fields (date of update, material) to analyze collection trends.

### Validating Object IDs
Before building a massive research database, you need to know which object IDs are actually active. You call `list_objects` once, and then use the resulting list to confirm every ID works by running `get_object` on a sample batch.

## Benefits

- Get structured, deep metadata instantly. Instead of guessing what details a piece has, `get_object` pulls titles, materials, dimensions, and dates for any given ID.
- Define your search scope immediately. Using `list_departments` gives you the 19 main museum sections right away, letting you filter results before running a single keyword search.
- Avoid massive list dumps. While `list_objects` shows every valid ID, always pair it with `search_objects` and a department ID to keep your queries focused and efficient.
- Streamline research for creatives. You can use `search_objects` combined with image data to find public domain art inspiration based on specific historical periods or mediums.
- Build complex workflows easily. The server allows chaining calls: list departments -> search objects by department ID -> get object details, all in one agent run.

## How It Works

The bottom line is that your AI client chains these tools together: scope it down, search within the scope, and then extract the deep data you need.

1. First, your agent runs `list_departments` to get the scope. This defines which museum wings (e.g., Egyptian Art) you want to focus on.
2. Next, the agent uses `search_objects`, passing in a keyword and a department ID found in step one. This filters down the 470k collection into manageable results.
3. Finally, if you need full details on one result, the agent calls `get_object` with the specific object ID to pull all metadata.

## Frequently Asked Questions

**How do I start searching for objects using the Met Museum MCP Server?**
You should first call `list_departments` to get a list of valid departments. Then, use that department ID in your `search_objects` query along with keywords.

**What is the difference between `get_object` and `search_objects`?**
`search_objects` finds multiple potential objects based on criteria. `get_object` requires a specific ID and pulls every single detail for only that one object.

**Can I use Met Museum MCP Server to find images of artworks?**
Yes, the API provides high-resolution URLs for objects confirmed as being in the public domain. This data is included when you run `get_object` or `search_objects`.

**Do I need to know the object ID before using Met Museum MCP Server?**
No. If you don't know the ID, start with a broader search by running `list_departments`, then use that department in `search_objects`.

**How do I filter my search results using the `list_departments` tool?**
The `list_departments` tool returns all 19 valid museum departments and their corresponding IDs. You use those returned department IDs as filters when calling `search_objects` or `get_object`, which helps narrow down millions of records to a specific collection area.

**If I run many searches, how should I manage my usage with the Met Museum MCP Server?**
The server observes standard API rate limits. If your agent makes too many requests in a short time, you'll get an error. To avoid this, build batch calls where possible or add a slight delay between successive operations.

**What is the purpose of using `list_objects`?**
The `list_objects` tool provides a current list of valid Object IDs across the entire collection. This function lets you audit your data and confirm which specific object identifiers are active in the Met's digital archive.

**Do I need to pass an API key when calling `get_object`?**
You must provide an identifier as required by your proxy setup. If the museum's public access mandates no specific key, simply use 'PUBLIC' as the identifier string in your agent’s workflow.

**How can I search for artworks by a specific artist that have images available?**
You can use the `search_objects` tool. Set the `q` parameter to the artist's name and set `hasImages` to `true`. This will return a list of Object IDs matching those criteria.

**Can I get the full historical record and image URL for a specific piece of art?**
Yes! Use the `get_object` tool with the specific `objectID`. It returns detailed metadata including the artist, medium, dimensions, and `primaryImage` or `additionalImages` URLs.

**How do I find out which departments exist in the Met Museum?**
Use the `list_departments` tool. It will provide a complete list of all valid departments along with their unique `departmentId`, which you can then use to filter your searches.