Enables AI agents to search for images across 25 providers with structured license metadata and automated attribution.
Also known as ashlrai/webfetch, getwebfetch-mcp
- Stars
- 3
- Tools
- 7
- Downloads, 30 days
- —
- Latest version
- 0.1.5
- Last commit
- Oct 13, 2026
- License
- MIT
What is webfetch MCP?
webfetch enables AI agents to search for images across 25 providers with structured license metadata and automated attribution. It exposes 7 tools, such as search_images, search_artist_images, search_album_cover.
Summary generated from the project's README
About webfetch MCP server
webfetch provides AI agents with a specialized way to find and manage images across 25 different providers. Unlike standard search tools that only return URLs, this server attaches structured license metadata such as CC0 or CC_BY and provides ready-to-use attribution strings. It is designed for developers using MCP-compatible clients like Claude Desktop, Cursor, or Cline. The system prioritizes legal safety by ranking results based on license type and confidence scores.
Users can access a default set of 19 providers, including Wikimedia Commons, Openverse, and NASA, without needing any API keys. For more extensive coverage, optional keys for services like Unsplash, Pexels, or SerpApi can be configured via environment variables. The server includes seven distinct tools for tasks ranging from general image searching and album cover retrieval to reverse-image searches and webpage probing. It also supports a CLI for batch processing large numbers of queries through JSONL files.
Written from the project's README. Every use case is checked against a quote from it.
How to install webfetch MCP
Formats verified 10 Nov 2026Install webfetch MCP in Claude Code
$ claude mcp add --env BRAVE_API_KEY=<YOUR_BRAVE_API_KEY> --env PEXELS_API_KEY=<YOUR_PEXELS_API_KEY> --env PIXABAY_API_KEY=<YOUR_PIXABAY_API_KEY> --env SERPAPI_KEY=<YOUR_SERPAPI_KEY> --env UNSPLASH_ACCESS_KEY=<YOUR_UNSPLASH_ACCESS_KEY> webfetch -- npx -y getwebfetch-mcpInstall webfetch MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"webfetch": {
"command": "npx",
"args": [
"-y",
"getwebfetch-mcp"
],
"env": {
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"PEXELS_API_KEY": "<YOUR_PEXELS_API_KEY>",
"PIXABAY_API_KEY": "<YOUR_PIXABAY_API_KEY>",
"SERPAPI_KEY": "<YOUR_SERPAPI_KEY>",
"UNSPLASH_ACCESS_KEY": "<YOUR_UNSPLASH_ACCESS_KEY>"
}
}
}
}Install webfetch MCP in VS Code
.vscode/mcp.json
{
"servers": {
"webfetch": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"getwebfetch-mcp"
],
"env": {
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"PEXELS_API_KEY": "<YOUR_PEXELS_API_KEY>",
"PIXABAY_API_KEY": "<YOUR_PIXABAY_API_KEY>",
"SERPAPI_KEY": "<YOUR_SERPAPI_KEY>",
"UNSPLASH_ACCESS_KEY": "<YOUR_UNSPLASH_ACCESS_KEY>"
}
}
}
}Install webfetch MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"webfetch": {
"command": "npx",
"args": [
"-y",
"getwebfetch-mcp"
],
"env": {
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"PEXELS_API_KEY": "<YOUR_PEXELS_API_KEY>",
"PIXABAY_API_KEY": "<YOUR_PIXABAY_API_KEY>",
"SERPAPI_KEY": "<YOUR_SERPAPI_KEY>",
"UNSPLASH_ACCESS_KEY": "<YOUR_UNSPLASH_ACCESS_KEY>"
}
}
}
}Install webfetch MCP in Codex
~/.codex/config.toml
[mcp_servers.webfetch] command = "npx" args = ["-y", "getwebfetch-mcp"] [mcp_servers.webfetch.env] BRAVE_API_KEY = "<YOUR_BRAVE_API_KEY>" PEXELS_API_KEY = "<YOUR_PEXELS_API_KEY>" PIXABAY_API_KEY = "<YOUR_PIXABAY_API_KEY>" SERPAPI_KEY = "<YOUR_SERPAPI_KEY>" UNSPLASH_ACCESS_KEY = "<YOUR_UNSPLASH_ACCESS_KEY>"
Install webfetch MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"webfetch": {
"command": "npx",
"args": [
"-y",
"getwebfetch-mcp"
],
"env": {
"BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>",
"PEXELS_API_KEY": "<YOUR_PEXELS_API_KEY>",
"PIXABAY_API_KEY": "<YOUR_PIXABAY_API_KEY>",
"SERPAPI_KEY": "<YOUR_SERPAPI_KEY>",
"UNSPLASH_ACCESS_KEY": "<YOUR_UNSPLASH_ACCESS_KEY>"
}
}
}
}webfetch MCP tools 7
Detected from the READMEsearch_imagessearch_artist_imagessearch_album_coverdownload_imagefetch_with_licensefind_similarprobe_page
| search_images | — | |
| search_artist_images | — | |
| search_album_cover | — | |
| download_image | — | |
| fetch_with_license | — | |
| find_similar | — | |
| probe_page | — |
Configuration
BRAVE_API_KEYSecretOptional Brave Search API key for Brave image search results.
PEXELS_API_KEYSecretOptional Pexels API key for Pexels provider results.
PIXABAY_API_KEYSecretOptional Pixabay API key for Pixabay provider results.
SERPAPI_KEYSecretOptional SerpApi key for Google Images results.
UNSPLASH_ACCESS_KEYSecretOptional Unsplash API key for Unsplash provider results.
| Name | Description | |
|---|---|---|
| BRAVE_API_KEY | Optional Brave Search API key for Brave image search results. | Secret |
| PEXELS_API_KEY | Optional Pexels API key for Pexels provider results. | Secret |
| PIXABAY_API_KEY | Optional Pixabay API key for Pixabay provider results. | Secret |
| SERPAPI_KEY | Optional SerpApi key for Google Images results. | Secret |
| UNSPLASH_ACCESS_KEY | Optional Unsplash API key for Unsplash provider results. | Secret |
Automated checks
Ran Nov 13, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachableashlrai/webfetch is public and reachablegithub.com/ashlrai/webfetch ↗Pass
- Package names this repository as its sourcegetwebfetch-mcp names ashlrai/webfetch as sourcenpmjs.com/package/getwebfetch-mcp ↗Pass
- Build provenance (Sigstore attestation)No build attestation published for this releaseNot checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-13github.com/ashlrai/webfetch ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNo popular package one edit away from getwebfetch-mcpPass
- No critical advisory in the package or its dependencies100 resolved dependencies checked; no critical advisoryosv.dev ↗Pass
- No hidden instructions to the model7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubwebfetch 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
attributionLinestring, 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)
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:
{
"mcpServers": {
"webfetch": {
"command": "bun",
"args": ["run", "/path/to/webfetch/packages/mcp/src/index.ts"]
}
}
}
Cursor
Add to ~/.cursor/mcp.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):
{
"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
| Tool | Description | Key params |
|---|---|---|
search_images |
Federated 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_images |
Specialized artist image search with kind-aware provider routing: portrait, album, logo, performing. |
artist, kind, providers[] |
search_album_cover |
Canonical album artwork via MusicBrainz CAA + iTunes + Spotify. Results are EDITORIAL_LICENSED. |
artist, album |
download_image |
Download a URL to local disk cache. 20 MB cap, content-type guard, SHA-256 hash, host blocklist enforced. | url, maxBytes, cacheDir |
fetch_with_license |
Resolve license for any URL via host heuristics + page metadata (<link rel=license>, dc.rights, OG tags). |
url, probe (also download bytes) |
find_similar |
Reverse-image-search a reference URL. Requires SERPAPI_KEY. Returns leads — verify before shipping. |
url, providers[] |
probe_page |
Enumerate 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:
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
| Provider | Env var | Free tier? |
|---|---|---|
| Wikimedia Commons | — | Yes (no key) |
| Openverse | — | Yes (no key) |
| Unsplash | UNSPLASH_ACCESS_KEY |
Demo key rate-limited |
| Pexels | PEXELS_API_KEY |
Free tier available |
| Pixabay | PIXABAY_API_KEY |
Free tier available |
| Spotify | SPOTIFY_CLIENT_ID + SPOTIFY_CLIENT_SECRET |
Dev app required |
| Brave Search | BRAVE_API_KEY |
Free tier available |
| SerpApi | SERPAPI_KEY |
Required for find_similar |
| Bright Data managed browser | BRIGHTDATA_API_TOKEN |
Optional 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
- Landing site + docs: getwebfetch.com
- One-line install guide: docs/QUICKSTART.md
- Provider coverage matrix: docs/PROVIDERS.md
- License policy details: docs/LICENSE_POLICY.md
- Per-agent install guides: Claude Code · Cursor · Cline
- Issues: github.com/ashlrai/webfetch/issues
webfetch MCP questions
How do I add webfetch MCP to Claude Code?
Run claude mcp add --env BRAVE_API_KEY=<YOUR_BRAVE_API_KEY> --env PEXELS_API_KEY=<YOUR_PEXELS_API_KEY> --env PIXABAY_API_KEY=<YOUR_PIXABAY_API_KEY> --env SERPAPI_KEY=<YOUR_SERPAPI_KEY> --env UNSPLASH_ACCESS_KEY=<YOUR_UNSPLASH_ACCESS_KEY> webfetch -- npx -y getwebfetch-mcp in your terminal. Add --scope user to make it available in every project.
How do I add webfetch MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does webfetch MCP provide?
It exposes 7 tools, including search_images, search_artist_images, search_album_cover, download_image, fetch_with_license.
Do I need an API key to use webfetch?
No, many providers like Wikimedia Commons and Openverse do not require an API key for their free tiers.
Can webfetch help with image licensing?
Yes, it provides structured license tags such as CC0, CC_BY, and platform-specific licenses to help classify images for reuse.
How does webfetch handle reverse image searches?
It uses the find_similar tool which requires a SerpApi key to return potential leads.
Can I use webfetch for batch image processing?
Yes, for large volumes of queries, you can use the CLI with the batch command.