webfetch

io.github.ashlraiPublished by GitHub account ashlraiv0.1.5Updated Nov 3, 2026

License-first federated image search with attribution, dimensions, and download tooling.

VerifiedSTDIODesktop onlyWeb Search & ScrapingMedia & Design

Overview

AI-generated overview

Federated image search and download for agents, returning license tags, confidence scores and ready-to-use attribution lines.

What you can do
  • Search images across 25 providers with license policy, size filters and attribution
  • Search artist images by kind and canonical album covers
  • Download an image to a local cache with size cap, content-type guard and SHA-256 hash
  • Resolve the license of any URL and enumerate images on a page with heuristic licenses
  • Reverse-image-search a reference URL to find similar images
When to use it
Useful when an assistant needs to find reusable images for a page, deck or liner notes and must know whether each result is open, platform-licensed, editorial-only or exploration-only, with attribution text included.
Requirements
Runs locally via npm package getwebfetch-mcp over stdio; needs Node 18 or newer, or Bun 1.0 or newer. Basic use with Wikimedia Commons and Openverse needs no key. Optional keys: UNSPLASH_ACCESS_KEY, PEXELS_API_KEY, PIXABAY_API_KEY, BRAVE_API_KEY, SERPAPI_KEY (required for reverse image search); the README also lists Spotify and Bright Data variables. Network access required.
Before you install
Optional provider keys are secrets passed as environment variables. download_image writes files to a local cache directory. probe_page and fetch_with_license fetch third-party pages and images, and reverse-image-search results are leads that should be verified. The README's one-line installer downloads and runs a remote script and edits agent settings files; prefer manual configuration.

Installation

In SourceWeft

  1. Open webfetch in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

webfetch MCP

License-first image search and download for any MCP-speaking agent.

Every result ships with a structured license tag (CC0, CC_BY, CC_BY_SA, platform-license tags, EDITORIAL_LICENSED, ...), a confidence score, and a ready-to-render attribution line. Covers 25 providers, with 19 in the default set — no API key needed for Wikimedia Commons, Openverse, iTunes, MusicBrainz CAA, NASA, The Met, Library of Congress, Internet Archive, Wellcome Collection, and Burst.


Why webfetch MCP?

Most image-search tools give you URLs. webfetch gives you URLs plus the legal metadata needed to classify them as open/commercial reusable, platform-license, editorial-only, or exploration-only. The MCP layer exposes seven composable tools — search, specialize by artist/album, download with a hash, resolve an arbitrary URL's license, reverse-image-search, and triage a source page — so an agent can go from prompt to attributed asset in a single conversation turn.

  • 25 providers, 19 in the default set and many requiring no key at all
  • License-first ranking: CC0 floats to the top; heuristic-only results stay below 0.5 confidence
  • Attribution always included: one attributionLine string, ready for a tooltip or credits footer
  • Free tier needs no API key for Wikimedia and Openverse; full provider coverage adds optional keys per provider

Install

One-line (recommended)

bash
curl -fsSL https://raw.githubusercontent.com/ashlrai/webfetch/main/install/install.sh | bash

Installs bun if missing, builds the server, symlinks webfetch onto $PATH, and merges the MCP block into ~/.claude/settings.json.

Claude Desktop / Claude Code

Add to ~/.claude/settings.json:

json
{  "mcpServers": {    "webfetch": {      "command": "bun",      "args": ["run", "/path/to/webfetch/packages/mcp/src/index.ts"]    }  }}

Cursor

Add to ~/.cursor/mcp.json:

json
{  "mcpServers": {    "webfetch": {      "command": "bun",      "args": ["run", "/path/to/webfetch/packages/mcp/src/index.ts"]    }  }}

Cline

Paste into Cline's MCP settings JSON (VSCode sidebar → Cline → MCP Servers):

json
{  "mcpServers": {    "webfetch": {      "command": "bun",      "args": ["run", "/path/to/webfetch/packages/mcp/src/index.ts"],      "disabled": false,      "autoApprove": ["search_images", "search_artist_images", "search_album_cover", "probe_page"]    }  }}

Replace /path/to/webfetch with your clone path (default after installer: ~/.webfetch/repo).


Tools

ToolDescriptionKey params
search_imagesFederated search across 25 providers. Returns the top candidates with license + attribution. Does not download. For large batches, use CLI handoff: webfetch batch --jsonl.query, providers[], licensePolicy, minWidth, minHeight
search_artist_imagesSpecialized artist image search with kind-aware provider routing: portrait, album, logo, performing.artist, kind, providers[]
search_album_coverCanonical album artwork via MusicBrainz CAA + iTunes + Spotify. Results are EDITORIAL_LICENSED.artist, album
download_imageDownload a URL to local disk cache. 20 MB cap, content-type guard, SHA-256 hash, host blocklist enforced.url, maxBytes, cacheDir
fetch_with_licenseResolve license for any URL via host heuristics + page metadata (<link rel=license>, dc.rights, OG tags).url, probe (also download bytes)
find_similarReverse-image-search a reference URL. Requires SERPAPI_KEY. Returns leads — verify before shipping.url, providers[]
probe_pageEnumerate every <img> on a webpage with inferred dimensions and per-image heuristic license. Respects robots.txt.url, respectRobots

License tags

Results carry one of: CC0 · PUBLIC_DOMAIN · CC_BY · CC_BY_SA · UNSPLASH_LICENSE · PEXELS_LICENSE · PIXABAY_LICENSE · EDITORIAL_LICENSED · PRESS_KIT_ALLOWLIST · UNKNOWN (rejected by default). Use open-only when platform/editorial licenses are not acceptable.

Migration note: Unsplash, Pexels, and Pixabay are no longer reported as CC0. Agents should treat UNSPLASH_LICENSE, PEXELS_LICENSE, and PIXABAY_LICENSE as platform-license results, not Creative Commons/public domain results.

Batch handoff

MCP tools are meant for interactive agent calls. For hundreds or thousands of queries, have the agent hand off to the CLI:

bash
webfetch batch --file queries.txt --jsonl --continue-on-error --candidates 3

Input lines are query or query<TAB>provider-a,provider-b. Each output line contains index, query, status, candidateCount, candidates, top, downloads, and provider diagnostics.


Auth / env vars

ProviderEnv varFree tier?
Wikimedia Commons—Yes (no key)
Openverse—Yes (no key)
UnsplashUNSPLASH_ACCESS_KEYDemo key rate-limited
PexelsPEXELS_API_KEYFree tier available
PixabayPIXABAY_API_KEYFree tier available
SpotifySPOTIFY_CLIENT_ID + SPOTIFY_CLIENT_SECRETDev app required
Brave SearchBRAVE_API_KEYFree tier available
SerpApiSERPAPI_KEYRequired for find_similar
Bright Data managed browserBRIGHTDATA_API_TOKENOptional server/cloud fallback

MusicBrainz CAA and iTunes require no key. Missing keys cause the provider to skip gracefully — other providers still respond.


Demo prompts

Try these in Claude Code or Cursor after installing:

Find me a CC-licensed portrait of Miles Davis I can use on an album liner page.
Search for album artwork for "Kind of Blue" by Miles Davis and show me the attribution line.
Probe the page at https://commons.wikimedia.org/wiki/File:Miles_Davis.jpg and tell me if I can use it commercially.

Requirements

  • Node ≥ 18 or Bun ≥ 1.0
  • No API key required for basic use (Wikimedia + Openverse cover most editorial needs)

Links

Source: packages/mcp/README.md at commit 656d37f

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.5LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts