Met Museum MCP Server
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.
Features
This server provides AI models the following tools to interact with the art collection of The Met
1. List Departments (list-departments)
Lists all the valid departments at The Met
- Inputs:
- None
- Output:
Department ID: 1, Display Name: American Decorative Arts Department ID: 3, Display Name: Ancient Near Eastern Art ...
2. Search Museum Objects (search-museum-objects)
Search for various objects in The Met based on the inputs.
-
Inputs:
q(string): The search term e.g. sunflowershasImages(boolean, optional, default: false): Only search for objects with imagestitle(boolean, optional, default: false): Returns objects that match the query, specifically searching against the title field for objects.departmentId(number, optional): Returns objects that are a part of a specific department.page(number, optional, default: 1): 1-based page number for results.pageSize(number, optional, default: 24): Number of Object IDs per page (max 100).
-
Outputs:
Total objects found: 54 Page: 1/3 Object IDs: 436532, 789578, 436840, 438722,...
3. Get Museum Objects (get-museum-object)
Get 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).
If there is an image and returnImage is true, it is returned as an image content block in the tool result (base64-encoded JPEG).
Use this tool when the user asks for deeper details on a specific artwork and you already have an objectId.
- Inputs:
objectId(number): The id of the object to retrievereturnImage(boolean, optional, default: true): Whether to include the object's image (if available) in the tool result
- Outputs:
If returnImage is trueTitle: Self-Portrait with a Straw Hat (obverse: The Potato Peeler) Artist: Vincent van Gogh Artist Bio: Dutch, Zundert 1853–1890 Auvers-sur-Oise Department: European Paintings Credit Line: Bequest of Miss Adelaide Milton de Groot (1876-1967), 1967 Medium: Oil on canvas Dimensions: 16 x 12 1/2 in. (40.6 x 31.8 cm) Primary Image URL: https://images.metmuseum.org/CRDImages/ep/original/DT1502_cropped2.jpg Tags: Men, Self-portraits**base64 encoding of jpeg image**
4. Open Met Explorer App (open-met-explorer)
Launches an interactive MCP App (ui://met/explorer.html) that can search, filter, and inspect objects from within MCP clients that support Apps.
Recommended flow:
-
Use
open-met-explorerto launch and browse live search results (passqto start searching immediately). -
After creating a curated list from current results, use
get-museum-objectonly for items the user wants to explore in depth. -
Inputs (all optional):
q(string): Initial search term.hasImages(boolean, default: true): Prefer objects with images.title(boolean, default: false): Search titles only.departmentId(number): Pre-select a department filter.
Transports
This server supports two transports:
- Stdio transport (default): Used by MCP desktop clients (Claude Desktop, LibreChat MCP, etc.).
- Streamable HTTP transport: Run with
--httpto expose an MCP endpoint at/mcp.
Streamable HTTP Transport
Run with npx (recommended for end users):
npx -y metmuseum-mcp --http
Or run from a local clone:
pnpm run build
node dist/index.js --http
The server listens on:
http://localhost:3001/mcp
You can control server behavior with environment variables:
| Variable | Default | Description |
|---|---|---|
PORT |
3001 |
HTTP port used by the Streamable HTTP server. |
HOST |
127.0.0.1 |
Network interface the HTTP server binds to. |
ALLOWED_HOSTS |
localhost,127.0.0.1 |
Comma-separated host allowlist for host header validation (example: localhost,127.0.0.1,my-domain.com). |
MET_API_TIMEOUT_MS |
10000 |
Timeout in milliseconds for outbound requests to the Met Collection API. |
Example:
HOST=127.0.0.1 PORT=8080 ALLOWED_HOSTS=localhost,127.0.0.1 npx -y metmuseum-mcp --http
Usage with Claude Desktop
Via MCP Bundle (MCPB)
- Download the
mcpbfile from the Releases - Open it with Claude Desktop or Go to File -> Settings -> Extensions and drag the .mcpb file to the window to install it
Via npx
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"met-museum": {
"command": "npx",
"args": [
"-y",
"metmuseum-mcp"
]
}
}
}
Usage with LibreChat
Add the following in your librechat.yaml
mcpServers:
metmuseum:
command: npx
args:
- -y
- metmuseum-mcp
Example queries
Here some questions you can ask the AI model when this server in connected:
Can you help me explore the Met?
Can you show me a few painting from the Asian Art department?
Can you find the painting titled "Corridor in the Asylum"?
Can you find any art that has "cat" in the title or features "cats"?
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Development
This project uses pnpm for local development and CI.
corepack enable
pnpm install
pnpm run build
pnpm run check
For non-interactive shells/CI runners, use CI=true pnpm install --frozen-lockfile.
License
This 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.
Disclaimer
This 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 with a MCP Server.
Recommend MCP Servers 💡
@freema/mcp-design-system-extractor
MCP (Model Context Protocol) server that enables AI assistants to interact with Storybook design systems. Extract component HTML, analyze styles, and help with design system adoption and refactoring.
doc-lib-mcp
An MCP server for document ingestion, chunking, semantic search, and note management, supporting various file types and providing tools for content retrieval and management.
@suekou/mcp-notion-server
MCP Server for the Notion API, enabling LLM to interact with Notion workspaces. Additionally, it employs Markdown conversion to reduce context size when communicating with LLMs, optimizing token usage and making interactions more efficient.
@fazer-ai/mcp-obsidian
A Model-Context-Protocol server that lets Claude (or any MCP-compatible LLM) interact with your Obsidian vault through the Local REST API community plugin.
canvas-lms-mcp
A minimal MCP server bridging AI systems with Canvas LMS for accessing education data such as courses, assignments, quizzes, and files.
markitdown-mcp
A lightweight Model Context Protocol (MCP) server from Microsoft's MarkItDown project, providing STDIO, Streamable HTTP, and SSE transports to convert various URIs (http:, https:, file:, data:) into Markdown.
