A Model Context Protocol (MCP) server that provides access to the Metropolitan Museum of Art Collection through natural language interactions. This server allows AI models to search The Met's art collection and retrieve artwork details (including images) via tool results. - List Departments - Search Museum Objects - Get Museum Object - Open Met Explorer App - Prerequisites - Quick Start - Configur
Add this skill
npx mdskills install mikechao/metmuseum-mcpWell-documented MCP server providing rich access to Met Museum's collection with clear tool descriptions and setup
1[](https://www.metmuseum.org/)23# Met Museum MCP Server45A Model Context Protocol (MCP) server that provides access to the Metropolitan Museum of Art Collection through natural language interactions. This server allows AI models to search The Met's art collection and retrieve artwork details (including images) via tool results.67<a href="https://glama.ai/mcp/servers/@mikechao/metmuseum-mcp"><img width="380" height="200" src="https://glama.ai/mcp/servers/@mikechao/metmuseum-mcp/badge" alt="Met Museum MCP Server" /></a>89[](https://mseep.ai/app/mikechao-metmuseum-mcp)1011[](https://mseep.ai/app/ccc75a48-9b33-4a9a-8ef7-8dc3848db263)1213## Table of Contents1415- [Features](#features)16 - [List Departments](#1-list-departments-list-departments)17 - [Search Museum Objects](#2-search-museum-objects-search-museum-objects)18 - [Get Museum Object](#3-get-museum-object-get-museum-object)19 - [Open Met Explorer App](#4-open-met-explorer-app-open-met-explorer)20- [MCP Apps](#mcp-apps)21- [Prerequisites](#prerequisites)22- [Quick Start](#quick-start)23- [Configuration](#configuration)24- [Transports](#transports)25 - [Streamable HTTP Transport](#streamable-http-transport)26- [Usage with ChatGPT](#usage-with-chatgpt)27- [Usage with Claude Desktop](#usage-with-claude-desktop)28- [Usage with LibreChat](#usage-with-librechat)29- [Example Queries](#example-queries)30- [Development](#development)31- [Contributing](#contributing)32- [License](#license)33- [Disclaimer](#disclaimer)3435## Features3637This server provides AI models the following tools to interact with the art collection of The Met:3839### 1. List Departments (list-departments)4041Lists all the valid departments at The Met4243- Inputs:44 - None45- Output:46 ```47 Department ID: 1, Display Name: American Decorative Arts48 Department ID: 3, Display Name: Ancient Near Eastern Art49 ...50 ```5152### 2. Search Museum Objects (search-museum-objects)5354Search for various objects in The Met based on the inputs.5556- Inputs:57 - `q` (string): The search term e.g. sunflowers58 - `hasImages` (boolean, optional, default: false): Only search for objects with images59 - `title` (boolean, optional, default: false): Returns objects that match the query, specifically searching against the title field for objects.60 - `departmentId` (number, optional): Returns objects that are a part of a specific department.61 - `page` (number, optional, default: 1): 1-based page number for results.62 - `pageSize` (number, optional, default: 24): Number of Object IDs per page (max 100).63- Outputs:6465 ```66 Total objects found: 5467 Page: 1/368 Object IDs: 436532, 789578, 436840, 438722,...69 ```7071### 3. Get Museum Object (get-museum-object)7273Get a specific object from The Met containing all open access data about that object, including its image (if the image is available under Open Access).7475If there is an image and `returnImage` is true, it is returned as an image content block in the tool result (base64-encoded JPEG).7677Use this tool when the user asks for deeper details on a specific artwork and you already have an `objectId`.7879- Inputs:80 - `objectId` (number): The id of the object to retrieve81 - `returnImage` (boolean, optional, default: true): Whether to include the object's image (if available) in the tool result82- Outputs:83 ```84 Title: Self-Portrait with a Straw Hat (obverse: The Potato Peeler)85 Artist: Vincent van Gogh86 Artist Bio: Dutch, Zundert 1853–1890 Auvers-sur-Oise87 Department: European Paintings88 Credit Line: Bequest of Miss Adelaide Milton de Groot (1876-1967), 196789 Medium: Oil on canvas90 Dimensions: 16 x 12 1/2 in. (40.6 x 31.8 cm)91 Primary Image URL: https://images.metmuseum.org/CRDImages/ep/original/DT1502_cropped2.jpg92 Tags: Men, Self-portraits93 ```94 If returnImage is true95 ```96 **base64 encoding of jpeg image**97 ```9899### 4. Open Met Explorer App (open-met-explorer)100101Launches an interactive MCP App (`ui://met/explorer.html`) that can search, filter, and inspect objects from within MCP clients that support Apps.102103Recommended flow:104105- Use `open-met-explorer` to launch and browse live search results (pass `q` to start searching immediately).106- After creating a curated list from current results, use `get-museum-object` only for items the user wants to explore in depth.107108- Inputs (all optional):109 - `q` (string): Initial search term.110 - `hasImages` (boolean, default: true): Prefer objects with images.111 - `title` (boolean, default: false): Search titles only.112 - `departmentId` (number): Pre-select a department filter.113- Output:114 ```115 Opens the Met Explorer app in the client UI.116 ```117118## MCP Apps119120<p align="center">121 <a href="https://www.youtube.com/watch?v=kFxVjg-TYhM">122 <img src="https://img.youtube.com/vi/kFxVjg-TYhM/maxresdefault.jpg" alt="Watch the demo" width="80%">123 </a>124 <br>125 <a href="https://www.youtube.com/watch?v=kFxVjg-TYhM"><em>▶️ Click to watch the demo video</em></a>126</p>127128There are now [MCP Apps](https://modelcontextprotocol.io/docs/extensions/apps) in this MCP Server. There is a UI component for the [Open Met Explorer App](#4-open-met-explorer-app-open-met-explorer) tool and the [Get Museum Object](#3-get-museum-object-get-museum-object) tool.129130## Prerequisites131132- [Node.js](https://nodejs.org/) v18 or later133134## Quick Start135136Run the server directly with `npx` — no install required:137138```bash139npx -y metmuseum-mcp140```141142This starts the server using **stdio transport**, which is what most MCP desktop clients expect.143144For client-specific setup, see:145146- [Usage with Claude Desktop](#usage-with-claude-desktop)147- [Usage with ChatGPT](#usage-with-chatgpt) (requires [Streamable HTTP transport](#streamable-http-transport))148- [Usage with LibreChat](#usage-with-librechat)149150## Configuration151152The following environment variable applies to **all transports**:153154| Variable | Default | Description |155| -------------------- | ------- | -------------------------------------------------------------------------------------------------------------------- |156| `MET_API_TIMEOUT_MS` | `10000` | Timeout in milliseconds for outbound requests to the Met Collection API. |157| `MET_API_DEBUG` | `false` | Enables debug logging to `stderr` for schema validation failures (accepted truthy values: `1`, `true`, `yes`, `on`). |158159## Transports160161This server supports two transports:162163- **Stdio transport (default):** Used by MCP desktop clients (Claude Desktop, LibreChat MCP, etc.).164- **Streamable HTTP transport:** Run with `--http` to expose an MCP endpoint at `/mcp`.165166### Streamable HTTP Transport167168Run with `npx` (recommended for end users):169170```bash171npx -y metmuseum-mcp --http172```173174Or run from a local clone:175176```bash177pnpm run build178node dist/index.js --http179```180181The server listens on:182183```text184http://localhost:3001/mcp185```186187You can control HTTP server behavior with environment variables:188189| Variable | Default | Description |190| --------------- | --------------------- | --------------------------------------------------------------------------------------------------------- |191| `PORT` | `3001` | HTTP port used by the Streamable HTTP server. |192| `HOST` | `127.0.0.1` | Network interface the HTTP server binds to. |193| `ALLOWED_HOSTS` | `localhost,127.0.0.1` | Comma-separated host allowlist for host header validation (example: `localhost,127.0.0.1,my-domain.com`). |194195Example:196197```bash198HOST=127.0.0.1 PORT=8080 ALLOWED_HOSTS=localhost,127.0.0.1 npx -y metmuseum-mcp --http199```200201## Usage with ChatGPT202203The following steps allow you to use Met Museum MCP with the web UI of ChatGPT204205### 1. Enable Developer Mode in ChatGPT206207Settings → Apps → Advanced settings → Developer mode208209Additional instructions [here](https://platform.openai.com/docs/guides/developer-mode)210211### 2. Run the Met Museum MCP Server with Streamable HTTP Transport212213```bash214npx -y metmuseum-mcp --http215```216217By default the server will be listening on218http://127.0.0.1:3001/mcp219220### 3. Create a local tunnel to expose the MCP Server to ChatGPT221222Sign up and configure [ngrok](https://ngrok.com/), the free plan works.223224```bash225ngrok http http://127.0.0.1:3001 --host-header=rewrite226```227228Take note of the forwarding URL.229230```bash231...232Forwarding https://john-joe-asdf.ngrok-free.dev -> http://localhost:3001233...234```235236### 4. Add Met Museum MCP as a Connector to ChatGPT237238Open [ChatGPT Apps settings](https://chatgpt.com/#settings/Connectors)239240Click Apps241242Click Create Apps243244Fill out the form using the URL from step 3 as the MCP Server URL, but add `/mcp`.245246```247https://john-joe-asdf.ngrok-free.dev/mcp248```249250For Authentication, select 'No Auth'251252Tick the checkbox for 'I understand and want to continue'253254Then click Create.255256### 5. Using the Met Museum MCP Server257258In the prompt input field you can use @name-of-server-from-step3 or259In the ChatGPT UI, click the '+' button, scroll to '...more', select the newly created Met app, and enter your query.260261## Usage with Claude Desktop262263### Via MCP Bundle (MCPB)2642651. Download the `mcpb` file from the [Releases](https://github.com/mikechao/metmuseum-mcp/releases)2662. Open it with Claude Desktop267 or268 Go to File -> Settings -> Extensions and drag the .mcpb file to the window to install it269270### Via npx271272Add this to your `claude_desktop_config.json`:273274```json275{276 "mcpServers": {277 "met-museum": {278 "command": "npx",279 "args": [280 "-y",281 "metmuseum-mcp"282 ]283 }284 }285}286```287288## Usage with LibreChat289290Add the following in your `librechat.yaml`291292```yaml293mcpServers:294 metmuseum:295 command: npx296 args:297 - -y298 - metmuseum-mcp299```300301## Example Queries302303Here are some questions you can ask the AI model when this server is connected:304305```306Can you help me explore the works of Vincent Van Gogh?307Can you help me explore the Met?308Can you show me a few paintings from the Asian Art department?309Can you find the painting titled "Corridor in the Asylum"?310Can you find any art that has "cat" in the title or features "cats"?311```312313## Development314315This project uses `pnpm` for local development and CI.316317```bash318corepack enable319pnpm install320pnpm run build321pnpm run check322```323324For non-interactive shells/CI runners, use `CI=true pnpm install --frozen-lockfile`.325326## Contributing327328Contributions are welcome! Please feel free to submit a Pull Request.329330## License331332This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.333334## Disclaimer335336This library is not officially associated with The Metropolitan Museum of Art in New York. It is a third-party implementation of the [The Metropolitan Museum of Art Collection API](https://metmuseum.github.io/) with a MCP Server.337
Full transparency — inspect the skill content before installing.