smithsonian-mcp-server

v0.1.15 pre-1.0

Search, explore, and retrieve CC0 media from 19.4 million Smithsonian Open Access objects across 20+ museums via MCP. STDIO or Streamable HTTP.

smithsonian.caseyjhand.com/mcp
claude mcp add --transport http smithsonian-mcp-server https://smithsonian.caseyjhand.com/mcp
codex mcp add smithsonian-mcp-server --url https://smithsonian.caseyjhand.com/mcp
{
  "mcpServers": {
    "smithsonian-mcp-server": {
      "url": "https://smithsonian.caseyjhand.com/mcp"
    }
  }
}
gemini mcp add --transport http smithsonian-mcp-server https://smithsonian.caseyjhand.com/mcp
{
  "mcpServers": {
    "smithsonian-mcp-server": {
      "command": "bunx",
      "args": [
        "mcp-remote",
        "https://smithsonian.caseyjhand.com/mcp"
      ]
    }
  }
}
{
  "mcpServers": {
    "smithsonian-mcp-server": {
      "type": "http",
      "url": "https://smithsonian.caseyjhand.com/mcp"
    }
  }
}
curl -X POST https://smithsonian.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

6

smithsonian_list_terms

open-world

Enumerate the valid term vocabulary for an indexed Smithsonian filter field (unit_code, culture, place, date, online_media_type). Smithsonian uses a controlled vocabulary where terms are often plural or qualified (e.g. "Paintings", not "Painting"), so filter values guessed rather than drawn from this vocabulary tend to return empty results. Returns a page of the field's distinct term values; large vocabularies (place has 100k+ terms) page via start and rows.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "smithsonian_list_terms",
    "arguments": {
      "field": "<field>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "field": {
      "type": "string",
      "enum": [
        "unit_code",
        "culture",
        "place",
        "date",
        "online_media_type"
      ],
      "description": "Indexed field to enumerate. Choices: unit_code (museum codes like \"NASM\"), culture (e.g. \"Aztecs\"), place (geographic terms), date (decade/era values like \"1920s\"), online_media_type (media formats like \"Images\", \"3D Models\")."
    },
    "start": {
      "default": 0,
      "description": "Pagination offset (0-indexed). Use with rows to page through large vocabularies.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "rows": {
      "default": 50,
      "description": "Number of terms to return per page (default 50, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "contains": {
      "description": "Case-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. \"greek\") to its exact controlled-vocabulary term(s).",
      "type": "string"
    }
  },
  "required": [
    "field",
    "start",
    "rows"
  ],
  "additionalProperties": false
}
view source ↗

smithsonian_get_object

open-world

Fetch a normalized catalog metadata projection for a Smithsonian object by its record_id (from smithsonian_search results). Returns the exposed catalog fields — title, dates, description, makers, materials, dimensions, place and culture associations, topics, exhibition history, credit line, accession identifiers, rights statement, and a media summary. The media summary is a count; full image URLs come from smithsonian_get_media.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "smithsonian_get_object",
    "arguments": {
      "id": "<id>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Object record_id from smithsonian_search results (e.g. \"nasm_A19670093000\")."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
view source ↗

smithsonian_get_media

open-world

Return all available CC0 images for a Smithsonian object at multiple resolutions. Only CC0 (open access) images are returned; an object whose media is entirely non-CC0 yields no downloadable images. Each image entry includes thumbnail (~120px), screen-size (~800px), and high-resolution JPEG/TIFF URLs with pixel dimensions. The cc0_only filter on smithsonian_search surfaces objects that have downloadable CC0 images.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "smithsonian_get_media",
    "arguments": {
      "id": "<id>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "record_id of the object (e.g. \"nasm_A19670093000\") from smithsonian_search or smithsonian_get_object."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}
view source ↗

smithsonian_explore

open-world

Browse Smithsonian collections by category to answer "what does the Smithsonian have about X?" questions. Constructs and executes a category-constrained search, then returns an overview: total count, a curated set of sample objects, and a breakdown of which museums hold matching objects. Four browse modes: museum (by unit code or name), culture (by culture term), period (by decade), medium (by object type). Use as the entry point for open-ended research.

read
invocation
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "smithsonian_explore",
    "arguments": {
      "mode": "<mode>",
      "value": "<value>"
    }
  }
}
schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "museum",
        "culture",
        "period",
        "medium"
      ],
      "description": "Browse dimension: \"museum\" (by unit code/name), \"culture\" (by culture term), \"period\" (by decade like \"1940s\"), \"medium\" (by object type like \"Paintings\")."
    },
    "value": {
      "type": "string",
      "description": "Category value appropriate to the mode. museum: unit code (\"NMNH\") or full name (\"National Museum of Natural History\"). culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: decade (\"1940s\", \"1860s\"). medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for culture, place, or unit_code, call smithsonian_list_terms to find exact terms."
    },
    "rows": {
      "default": 10,
      "description": "Number of sample objects to return (default 10, max 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "mode",
    "value",
    "rows"
  ],
  "additionalProperties": false
}
view source ↗