npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

archival-imagery-mcp

v0.2.1

Published

MCP server for browsing and downloading open-licensed imagery from Wellcome Collection, Met Museum, Library of Congress, Smithsonian Open Access, and Europeana (which fully indexes Rijksmuseum + 4000 other institutions). For editorial projects that need a

Readme

archival-imagery-mcp

An MCP server for browsing and downloading open-licensed imagery from six major museum and archive APIs. Built for editorial projects that need authored, archival visual material instead of AI-generated stock.

License: MIT Node 18+ MCP

What this is

When Claude or any other MCP-compatible client needs imagery for an editorial project — a service site, a long-form article, a brand book, a deck — generating images from scratch usually produces something that reads as AI. For brands with editorial bona fides, that signal is fatal.

This server gives the assistant a different option: search the world's open-access museum collections for authored, attributed, often-centuries-old imagery and download it straight into the project's public/ folder. Most results are CC0, CC-BY, or Public Domain Mark — usable with no licensing friction.

Sources

| Source | Coverage | API Key | License Defaults | |---|---|---|---| | Wellcome Collection | UK. Medical, scientific, esoteric, astrological history. ~250k items. | No | CC-BY / PDM | | Met Museum | US. Open Access program. ~470k objects, all CC0 when public domain. | No | CC0 | | Library of Congress | US. Photos, manuscripts, maps, prints, newspapers, film. ~1M items. | No | Mostly PD | | Smithsonian Open Access | US. 4.5M+ CC0 items across 21 museums. | Free | CC0 | | Europeana | EU aggregator — British Library, Louvre, full Rijksmuseum collection, plus 4000+ institutions. | Free | Mixed (filterable) |

Note on Rijksmuseum: the Rijksmuseum's REST API was deprecated in 2024 in favour of OAI-PMH (an XML harvesting protocol designed for institutional bulk-download, not query-by-keyword). Rather than re-implement on a less query-friendly protocol, this server intentionally omits direct Rijksmuseum support. Europeana fully indexes the Rijksmuseum collection — query it via europeana_search with provider="Rijksmuseum".

Installation

From source (current method)

git clone https://github.com/chandhoke/archival-imagery-mcp.git
cd archival-imagery-mcp
npm install

Then add to your MCP client's config. For Claude Code Desktop (~/.claude.json or %USERPROFILE%\.claude.json):

{
  "mcpServers": {
    "archival-imagery": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/archival-imagery-mcp/index.mjs"],
      "env": {
        "SMITHSONIAN_API_KEY": "your-key-here-or-omit",
        "EUROPEANA_API_KEY": "your-key-here-or-omit"
      }
    }
  }
}

API keys are all optional — Wellcome, Met, and Library of Congress work without keys. Smithsonian and Europeana tools return a helpful error message with the signup URL if their key is missing.

From npm (coming soon)

A future release will be published to npm so you can install with npm install -g archival-imagery-mcp and point the config at npx archival-imagery-mcp. For now, install from source above.

Getting the optional API keys

All free, all take under 2 minutes:

  • Smithsonian: api.data.gov/signup/ — email confirmation. The same key works for NASA, NOAA, FCC, and most US government APIs.
  • Europeana: pro.europeana.eu/page/get-api — instant. Covers British Library, Rijksmuseum, Louvre, and 4000+ other institutions in one endpoint.

Tools (12 total)

Search & retrieval

| Tool | Source | Needs Key | |---|---|---| | wellcome_search | Wellcome | — | | wellcome_get_work | Wellcome | — | | wellcome_image_url | Wellcome (utility) | — | | met_search | Met | — | | met_get_object | Met | — | | loc_search | Library of Congress | — | | loc_get_item | Library of Congress | — | | smithsonian_search | Smithsonian | ✓ | | smithsonian_get_object | Smithsonian | ✓ | | europeana_search | Europeana | ✓ | | europeana_get_record | Europeana | ✓ |

Shared utility

| Tool | Purpose | |---|---| | download_image | Save any image URL (from any of the above) to a local path. Creates parent dirs automatically. |

Usage examples (natural language)

Once installed, just describe what you want and the assistant picks the right tool:

"Find Indian astrology pieces at the Met that we could use on /method — show me 5."

"Search Wellcome for nakshatra diagrams and save the best two to my project's public/brand/ folder."

"Use Europeana with provider='Rijksmuseum' to find Vermeer paintings — I want a portrait for the about page."

"Use Europeana to find anything from the British Library tagged 'Sanskrit manuscript' — only CC0/CC-BY please."

Attribution

When using imagery from any of these sources in published work, always check the per-item license (returned with every result) and follow its attribution requirements. Most CC-BY items only need a short credit line:

Imagery courtesy of [Source] (CC BY 4.0).

CC0 / Public Domain Mark items have no attribution requirement but crediting the source is good practice.

Architecture

  • Single-file MCP server (index.mjs), ~400 lines
  • Native fetch (Node 18+), no HTTP library dependency
  • Only one dependency: @modelcontextprotocol/sdk
  • No telemetry, no persistent state, no auth required for the server itself
  • Stateless — every tool call hits the upstream API fresh

Extending

To add another source (e.g. New York Public Library Digital Collections, DPLA, Gallica):

  1. Add a section under // ========================================================================= with xyzSearch, xyzGetObject functions
  2. Add an env-var helper if it needs a key (use the existing requireKey pattern)
  3. Add entries to the TOOLS array with clear descriptions
  4. Add entries to the HANDLERS map

~50 lines per new source.

License

MIT © Harpreet Chandhoke

This server is a client for third-party APIs. Each source has its own terms — respect them in your usage. The MIT license applies only to this server code, not to the content retrieved.