Skip to main content
Glama

Smithsonian Open Access MCP Server

by molanojustin
MIT License
233
2
  • Apple
  • Linux
constants.py9.97 kB
""" Constants and static mappings used by the MCP server. """ from typing import Dict, List from ._version import __version__ SERVER_VERSION = __version__ MUSEUM_MAP: Dict[str, str] = { "american history": "NMAH", "ahm": "NMAH", # Common wrong abbreviation for American History Museum "natural history": "NMNH", "american art": "SAAM", "american indian": "NMAI", "air and space": "NASM", "asian art": "FSG", "portrait gallery": "NPG", "african art": "NMAfA", "hirshhorn": "HMSG", "sculture garden": "HMSG", "cooper hewitt": "CHNDM", "design": "CHNDM", "african american history": "NMAAHC", "freer": "FSG", "sackler": "FSG", "renwick": "SAAM", "postal": "NPM", "zoo": "NZP", "smithsonian archives": "SIA", "anacostia": "ACM", # Additional common variations for better matching "smithsonian asian art": "FSG", "smithsonian asian art museum": "FSG", "national museum of asian art": "FSG", "freer and sackler galleries": "FSG", "freer gallery": "FSG", "sackler gallery": "FSG", "smithsonian american art": "SAAM", "smithsonian american art museum": "SAAM", "national museum of american art": "SAAM", "renwick gallery": "SAAM", "smithsonian natural history": "NMNH", "smithsonian natural history museum": "NMNH", "national museum of natural history": "NMNH", "smithsonian air and space": "NASM", "smithsonian air and space museum": "NASM", "national air and space museum": "NASM", "smithsonian portrait gallery": "NPG", "national portrait gallery": "NPG", "smithsonian african art": "NMAfA", "smithsonian african art museum": "NMAfA", "national museum of african art": "NMAfA", "smithsonian hirshhorn": "HMSG", "hirshhorn museum": "HMSG", "hirshhorn museum and sculpture garden": "HMSG", "sculpture garden": "HMSG", "smithsonian cooper hewitt": "CHNDM", "cooper hewitt museum": "CHNDM", "smithsonian design museum": "CHNDM", "smithsonian african american history": "NMAAHC", "smithsonian african american history museum": "NMAAHC", "national museum of african american history and culture": "NMAAHC", "smithsonian postal": "NPM", "smithsonian postal museum": "NPM", "national postal museum": "NPM", "smithsonian zoo": "NZP", "national zoo": "NZP", "smithsonian national zoo": "NZP", "smithsonian anacostia": "ACM", "anacostia community museum": "ACM", "smithsonian archives": "SIA", "smithsonian institution archives": "SIA", "minerals": "NMNHMINSCI", "mineral": "NMNHMINSCI", "dinosaur": "NMNHPALEO", "paleontology": "NMNHPALEO", "anthropology": "NMNHANTHRO", "birds": "NMNHBIRDS", "botony": "NMNHBOTANY", "plants": "NMNHBOTANY", "education": "NMNHEDUCATION", "entomology": "NMNHENTO", "fish": "NMNHFISHES", "fishes": "NMNHFISHES", "herpetology": "NMNHHERPS", "invertebrate": "NMNHINV", "mammal": "NMNHMAMMALS", } VALID_MUSEUM_CODES: List[str] = [ "NMAH", "NMNH", "SAAM", "NASM", "NPG", "FSG", "HMSG", "NMAfA", "NMAI", "ACM", "NMAAHC", "SIA", "NPM", "NZP", "CHNDM", "NMNHMINSCI", "NMNHPALEO", "NMNHANTHRO", "NMNHBIRDS", "NMNHBOTANY", "NMNHEDUCATION", "NMNHENTO", "NMNHFISHES", "NMNHHERPS", "NMNHINV", "NMNHMAMMALS", ] SIZE_GUIDELINES: Dict[str, str] = { "small": "15-25 objects", "medium": "30-50 objects", "large": "60+ objects", } # URL construction patterns for different Smithsonian museums # Each museum may have different URL formats and identifier requirements MUSEUM_URL_PATTERNS: Dict[str, Dict[str, str]] = { "NMAH": { "base_url": "https://americanhistory.si.edu", "path_template": "/collections/object/{record_ID}", "identifier": "record_ID", "example": "https://americanhistory.si.edu/collections/object/nmah_1448973" }, "FSG": { "base_url": "https://asia.si.edu", "path_template": "/object/{accession}", "identifier": "accession", "example": "https://asia.si.edu/object/F1900.47/" }, "NMAAHC": { "base_url": "https://nmaahc.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://nmaahc.si.edu/object/nmaahc_2022.91.10ab" }, "NMNHMINSCI": { "base_url": "https://naturalhistory.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example":"https://naturalhistory.si.edu/object/nmnhmineralsciences_17183750" }, "NMNHPALEO": { "base_url": "https://naturalhistory.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://naturalhistory.si.edu/object/nmnhpaleobiology_17134484" }, "NMNHANTHRO": { "base_url": "https://naturalhistory.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://naturalhistory.si.edu/object/nmnhanthropology_8352715" }, "NMNHEDUCATION": { "base_url": "https://naturalhistory.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://naturalhistory.si.edu/object/nmnheducation_10841904" }, "NMNHINV": { "base_url": "https://naturalhistory.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://naturalhistory.si.edu/object/nmnhinvertebratezoology_14688577" }, "SAAM": { "base_url": "{record_link}", # uses americanart.si.edu, but record_link has full link "path_template": "", "identifier": "record_link", "example": "https://americanart.si.edu/collections/search/artwork/?id=30913" }, "NASM": { "base_url": "{record_link}", # uses n2t link that redirects to the actual link "path_template": "", "identifier": "record_link", "example": "http://n2t.net/ark:/65665/nv913e903df-63e7-4cad-aa80-ca3dfda681a4" }, "NPG": { "base_url": "https://npg.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://npg.si.edu/object/npg_NPG.2002.184" }, "HMSG": { "base_url": "https://hirshhorn.si.edu", "path_template": "/collection/artwork/?edanUrl={url}", "identifier": "url", "example": "https://hirshhorn.si.edu/collection/artwork/?edanUrl=edanmdm:hmsg_66.1608" }, "NMAfA": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/ys7a3f230ba-972a-4ddf-82be-269516cb20ed" }, "NMAI": { "base_url": "{record_link}", # uses americanindian.si.edu, but record_link has full link "path_template": "", "identifier": "record_link", "example": "http://n2t.net/ark:/65665/ws69d7d97b6-84fc-4f08-883e-ecc2ee0e38c7" }, "ACM": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/dl8b7ab6959-5362-49e1-84a3-f8dbd0c3e2e0" }, "SIA": { "base_url" : "https://siarchives.si.edu", "path_template": "/collections/{record_ID}", "identifier": "record_ID", "example": "https://siarchives.si.edu/collections/siris_arc_403511" }, "NPM": { "base_url": "https://postalmuseum.si.edu", "path_template": "/object/{record_ID}", "identifier": "record_ID", "example": "https://postalmuseum.si.edu/object/npm_0.293996.232" }, "NZP": { "base_url": "https://ids.si.edu", "path_template": "/ids/deliveryService?id={idsId}", "identifier": "idsId", "example": "https://ids.si.edu/ids/deliveryService?id=NZP-20190815_002RP" }, "CHNDM": { "base_url": "{record_link}", "path_template": "", "identifier": "record_link", "example": "https://collection.cooperhewitt.org/view/objects/asitem/id/33665" }, "NMNHBIRDS": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/352f6df2a-7cf0-42ad-b9ad-dbaaff2bbc25" }, "NMNHBOTANY": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/32cbf4c79-da2d-4333-81db-ae926c2bd536" }, "NMNHENTO": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/339e344dc-c269-435f-99ef-d009f12fd5d5" }, "NMNHFISHES": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/3ccbe2c66-aa94-4570-88b1-44896089cfa1" }, "NMNHHERPS": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/359523727-cb45-403c-bb71-e3c31b743355" }, "NMNHMAMMALS": { "base_url": "{guid}", "path_template": "", "identifier": "guid", "example": "http://n2t.net/ark:/65665/30b523759-352a-478c-b8ed-62dc1b38dd6f" } } # Backward compatibility imports - these have been moved to museum_data.py # Import them here for backward compatibility try: from .museum_data import ( MUSEUM_OBJECT_TYPES, get_museum_object_types, museum_has_object_type ) except ImportError: # Fallback if museum_data.py doesn't exist MUSEUM_OBJECT_TYPES = {} def get_museum_object_types(museum_code: str) -> List[str]: return [] def museum_has_object_type(museum_code: str, object_type: str) -> bool: return False

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/molanojustin/smithsonian-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server