cyanheads avatar

Smithsonian Mcp Server

cyanheads/smithsonian-mcp-server

Wraps the Smithsonian Open Access API to search across 19.4 million catalog objects from 20+ museums and retrieve CC0-licensed images. Exposes five tools: full-text search with filters (museum, decade, culture, object type), single-object metadata retrieval, CC0-gated image access at multiple resolutions, category-based browsing (by museum, culture, period, or medium), and cross-collection discovery via parallel metadata fan-out. Requires a free api.data.gov key. Reach for this when you need programmatic access to Smithsonian collections with guaranteed open-access media, or when you want to surface unexpected connections across NMNH, NASM, SAAM, and other units. Built on the developer's mcp-ts-core framework with STDIO and streamable HTTP transports.

GitHub stars
2
tools
6
auth
Required
transport
STDIO, HTTP
env vars
7
last updated
Nov 1, 2026

Install

From registry metadata
$ npx add-mcp https://smithsonian.caseyjhand.com/mcp --name smithsonian

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http smithsonian https://smithsonian.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 6 tools

Verified live against the running server on Nov 6, 2026.

smithsonian_search_objectsRecommended first step for open-ended or topic discovery: free-text search across 14.5 million Smithsonian objects, with optional exact filters. Filters narrow by museum unit, object type, indexed date term, culture, geographic place, subject topic, named party, and online/CC0...4 params

Recommended first step for open-ended or topic discovery: free-text search across 14.5 million Smithsonian objects, with optional exact filters. Filters narrow by museum unit, object type, indexed date term, culture, geographic place, subject topic, named party, and online/CC0...

Parameters* required
filtersobject
Optional structured filters to narrow the search. A key outside this set is rejected by name.
query*string
Free-text search. Every word is required — OR does not widen a search, while NOT excludes. Use specific terms for precision ("Tlingit totem pole") or broad terms for browsing ("quilt").
rowsinteger
Page size (default 20). A value above 1000 is served at 1000 with a notice.default: 20
startinteger
Pagination offset — 0-indexed. Use with rows for paging through large result sets.default: 0
smithsonian_list_termsEnumerate the valid term vocabulary for an indexed Smithsonian filter field (unit_code, culture, place, date, online_media_type, topic). Terms are a controlled vocabulary — often plural or qualified (e.g. "Paintings", not "Painting") — so guessed filter values tend to return n...4 params

Enumerate the valid term vocabulary for an indexed Smithsonian filter field (unit_code, culture, place, date, online_media_type, topic). Terms are a controlled vocabulary — often plural or qualified (e.g. "Paintings", not "Painting") — so guessed filter values tend to return n...

Parameters* required
containsstring
Case-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. "greek") to its exact controlled-vocabulary term(s). For unit_code the substring also matches each code's mus...
field*string
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...one of unit_code · culture · place · date · online_media_type · topic
rowsinteger
Number of terms to return per page (default 50). A value above 40000 is served at 40000 with a notice.default: 50
startinteger
Pagination offset (0-indexed). Use with rows to page through large vocabularies.default: 0
smithsonian_get_objectFetch a normalized catalog metadata projection for a Smithsonian object by its record_id (from smithsonian_search_objects results). Returns title, dates, description, labeled notes, makers, materials, dimensions, places, cultures, topics, exhibitions, credit line, identifiers,...1 params

Fetch a normalized catalog metadata projection for a Smithsonian object by its record_id (from smithsonian_search_objects results). Returns title, dates, description, labeled notes, makers, materials, dimensions, places, cultures, topics, exhibitions, credit line, identifiers,...

Parameters* required
id*string
Object record_id from smithsonian_search_objects results (e.g. "nasm_A19670093000").
smithsonian_get_mediaReturn every CC0 (open-access) image for a Smithsonian object at multiple resolutions. The tool never returns an empty list — it names the reason instead: an object with nothing digitized, an object whose media is entirely non-image (3D models, scanned books, documents), and a...1 params

Return every CC0 (open-access) image for a Smithsonian object at multiple resolutions. The tool never returns an empty list — it names the reason instead: an object with nothing digitized, an object whose media is entirely non-image (3D models, scanned books, documents), and a...

Parameters* required
id*string
record_id of the object (e.g. "nasm_A19670093000") from smithsonian_search_objects or smithsonian_get_object.
smithsonian_browse_categoryBrowse Smithsonian objects within one exact category — a single museum (mode "museum"), culture, indexed date term (mode "period"), object type (mode "medium"), or subject term (mode "topic"). The value must be an exact indexed category term, not free text: resolve museum, cul...4 params

Browse Smithsonian objects within one exact category — a single museum (mode "museum"), culture, indexed date term (mode "period"), object type (mode "medium"), or subject term (mode "topic"). The value must be an exact indexed category term, not free text: resolve museum, cul...

Parameters* required
mode*string
Browse dimension: "museum" (by unit code), "culture" (by culture term), "period" (by indexed date term like "1940s" or "500-1500"), "medium" (by object type like "Paintings"), "topic" (by subject t...one of museum · culture · period · medium · topic
rowsinteger
Number of sample objects to return (default 10). A value above 1000 is served at 1000 with a notice.default: 10
startinteger
Pagination offset — 0-indexed. Page contiguously by advancing start by the number of objects returned; a truncated page names the next start in its notice.default: 0
value*string
Category value appropriate to the mode. museum: a unit code like "NASM", "SAAM", or "NMNHBIRDS", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified...
smithsonian_find_relatedDiscover objects across Smithsonian collections related to a given anchor object, matched on shared metadata signals — culture, period, object type, named parties, and topic terms. Each related object is tagged with the signals that connected it to the anchor; a named-party si...3 params

Discover objects across Smithsonian collections related to a given anchor object, matched on shared metadata signals — culture, period, object type, named parties, and topic terms. Each related object is tagged with the signals that connected it to the anchor; a named-party si...

Parameters* required
id*string
record_id of the anchor object (e.g. "nasm_A19670093000") from smithsonian_search_objects or smithsonian_get_object.
limitinteger
Maximum number of related objects to return (default 10). A value above 1000 is served at 1000 with a notice.default: 10
startinteger
Pagination offset — 0-indexed. Page contiguously by advancing start by the number of objects returned (a truncated page names the next start in its notice); each signal is reachable to a depth of 5...default: 0

Sponsors

Configuration

SMITHSONIAN_API_KEY*

Required. Free API key from https://api.data.gov/signup — approval is instant.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/smithsonian-mcp-server

Search 14.5M Smithsonian Open Access objects across 20+ museums via MCP, and retrieve CC0 images for the 5.2M that carry openly-licensed media. STDIO or Streamable HTTP.

6 Tools

Details

Repository
github.com/cyanheads/smithsonian-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/smithsonian-mcp-server
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyberpapiii avatarImessage Maxcyberpapiii/imessage-maxAI-optimized MCP server for iMessage on macOS. Read, search, and send messages.2stars
2davooxbv2 avatarClishopdavooxbv2/clishopOrder anything from your terminal — search, buy, track, and manage via MCP tools.2stars
3cotletdev avatarQuora MCP Server and API by Cotletcotletdev/quora-api-mcp-serverQuora questions and answers community MCP server: search questions, post answer, list my answers.0stars
4geiserx avatarLynxPromptgeiserx/lynxprompt-mcpSearch, read and manage AI agent instruction blueprints (AGENTS.md, CLAUDE.md) on LynxPrompt2stars
5gregario avatarDnd Oraclegregario/dnd-oracleD&D 5e SRD MCP server with monster, spell, equipment search and encounter building tools2stars
6cg3-llc avatarPriorcg3-llc/prior_mcpShared knowledge base for AI agents. Search and contribute solutions to technical problems.2stars