whitney-museum-mcp

sam-parsons/whitney-museum-mcp

3.1

If you are the rightful owner of whitney-museum-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This is a minimal Model Context Protocol (MCP) server for the Whitney Museum API, providing read-only access to various resources through a structured protocol.

Tools
12
Resources
0
Prompts
0

MCP Server for Whitney Museum API

CI Docker Hub Docker Image Size

Minimal Model Context Protocol (MCP) server that exposes a few read-only tools backed by the Whitney Museum public API.

References

Use with Cursor and Claude (MCP)

This server supports both stdio and HTTP (Server‑Sent Events) transports. For Cursor and Claude Desktop, the simplest setup is HTTP via url.

Quick start (local HTTP)

  1. Run the server locally over HTTP:
python main.py --http --port 8000
  1. Verify it’s up:
open http://localhost:8000/health
  1. Add to your MCP config as an url server.

** location is not guaranteed **

  • Cursor (macOS): ~/.cursor/mcp.json
  • Claude Desktop (macOS): ~/Library/Application Support/Claude/mcp.json

Example entry:

{
  "mcpServers": {
    "whitney-api": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Restart Cursor/Claude and you should see the whitney-api server with the tools listed below.

Remote (Railway or any HTTPS host)

If you deploy this server (Dockerfile included) and get a public URL, point your MCP client at https://<your-domain>/mcp:

{
  "mcpServers": {
    "whitney-api": {
      "url": "https://whitney-museum-mcp-production.up.railway.app/mcp"
    }
  }
}

Optional: stdio transport

You can also run via stdio if you prefer a command‑based server:

python main.py

MCP config example:

{
  "mcpServers": {
    "whitney-api-stdio": {
      "command": "python",
      "args": ["main.py"]
    }
  }
}

Tools

Registered MCP tools (current set):

  • artists_list — List artists from the public API
  • artist_get(artist_id) — Get a single artist by ID
  • artworks_list — List artworks from the public API
  • artwork_get(artwork_id) — Get a single artwork by ID
  • exhibitions_list — List exhibitions from the public API
  • exhibition_get(exhibition_id) — Get a single exhibition by ID
  • events_list — List events from the public API
  • event_get(event_id) — Get a single event by ID
  • guides_list — List guides from the public API
  • guide_get(guide_id) — Get a single guide by ID
  • pages_list — List pages from the public API
  • page_get(page_id) — Get a single page by ID

Install

Requirements: Python 3.12+

uv venv
source .venv/bin/activate
uv pip install -e .

Alternatively:

python -m venv .venv
source .venv/bin/activate
pip install -e .

Run

Docker (HTTP transport)

Use the published image or build locally. The container serves HTTP on port 8000.

Using Docker Hub image:

docker pull samparsons269/whitney-museum-mcp:latest
docker run --rm -p 8000:8000 samparsons269/whitney-museum-mcp:latest

Build locally:

docker build -t whitney-museum-mcp .
docker run --rm -p 8000:8000 whitney-museum-mcp

Verify:

curl -s http://localhost:8000/health
open http://localhost:8000/docs

Local Python

HTTP (recommended for Cursor/Claude via url):

python main.py --http --port 8000

Stdio (for command/args config):

python main.py

Deploy on Railway

This repo is Docker-ready. Create a new Railway service from this repo or Docker image. Ensure port 8000 is exposed, and Railway will set PORT; the image already reads it.

Once deployed, configure Cursor/Claude with your service URL:

{
  "mcpServers": {
    "whitney-api": {
      "url": "https://<your-railway-subdomain>.up.railway.app/mcp"
    }
  }
}

Development

Run tests:

pytest

License

MIT License. See for details.