Skip to main content
Glama
ashlrai
by ashlrai

webfetch

npm version CI License: MIT Discord GitHub stars

面向 AI 智能体和人类的“许可优先”图像层。

一个 MCP 服务器、一个 CLI 和一个 HTTP 服务器,可联合 25 个图像提供商,按许可优先对结果进行排名,并默认拒绝 UNKNOWN(未知)结果。任何支持 MCP 的智能体(Claude Code、Cursor、Cline、Continue、Roo Code、Codex)只需一行配置即可连接。着陆页、定价和托管服务请访问 getwebfetch.com

安装

平台

一行命令

npm

npm i -g getwebfetch

Homebrew

brew tap ashlrai/webfetch && brew install webfetch

Docker

docker run --rm ghcr.io/ashlrai/webfetch cli help

curl

bash

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

curl | bash 安装程序还会幂等地将 webfetch 写入 Claude Code 的 ~/.claude/settings.json 中。随时重新运行即可更新。

Related MCP server: Multimodal MCP

30 秒上手

CLI:

webfetch search "drake portrait" --limit 5
webfetch artist "Taylor Swift" --kind portrait --min-width 1200
webfetch download <url> --out ./portrait.jpg
printf "drake portrait\nradiohead album\n" | webfetch batch --jsonl --continue-on-error

MCP(在任何支持 MCP 的智能体内部使用):

search_images({ query: "drake portrait", limit: 5 })
search_artist_images({ artist: "Taylor Swift", kind: "portrait" })
download_image({ url: "..." })

TypeScript 库:

import { searchArtistImages, pickBest, downloadImage } from "webfetch-core";

const { candidates } = await searchArtistImages("Drake", "portrait");
const best = pickBest(candidates, { minWidth: 1200 });
if (best) {
  const { cachedPath, sha256 } = await downloadImage(best.url);
  console.log(best.attributionLine, "->", cachedPath);
}

解决的问题

手动获取图像有四种失败模式:

  1. 你不知道许可协议,因此无法安全地发布结果。

  2. 无法脚本化 —— 每增加一个新网站都需要耗费一下午时间。

  3. Google 图像搜索 API 已停用;爬虫技术脆弱且处于服务条款的灰色地带。

  4. 没有共享缓存 —— 你会重复下载同一个文件数十次。

webfetch 通过联合具有稳定条款和结构化许可元数据的直接来源 API,按许可优先对候选结果进行排名,并将结果作为单个 MCP 工具公开,从而解决了上述所有四个问题。

提供商

提供商

覆盖范围

默认许可

认证

可选

wikimedia

人像、活动、Logo、历史

CC_BY_SA (元数据)

openverse

任何 CC 许可内容

CC_BY (元数据)

unsplash

高质量摄影

UNSPLASH_LICENSE

UNSPLASH_ACCESS_KEY

pexels

图库摄影

PEXELS_LICENSE

PEXELS_API_KEY

pixabay

图库照片 + 插图

PIXABAY_LICENSE

PIXABAY_API_KEY

itunes

专辑封面、艺术家肖像

EDITORIAL_LICENSED

musicbrainz-caa

规范专辑封面

EDITORIAL_LICENSED

spotify

艺术家 + 专辑图片

EDITORIAL_LICENSED

SPOTIFY_CLIENT_ID/SECRET

youtube-thumb

视频缩略图

EDITORIAL_LICENSED

brave

通用网页图像搜索

UNKNOWN (+启发式)

BRAVE_API_KEY

bing

通用网页图像搜索

UNKNOWN (+启发式)

BING_API_KEY

serpapi

Google 图片 + 反向搜索

UNKNOWN (+启发式)

SERPAPI_KEY

browser

无头浏览器回退 vs images.google.com

UNKNOWN

managed-browser

Bright Data 托管浏览器回退

UNKNOWN

BRIGHTDATA_API_TOKEN

flickr

CC / 公有领域摄影

CC_BY (元数据)

FLICKR_API_KEY

internet-archive

公有领域 / CC 存档媒体

PUBLIC_DOMAIN

smithsonian

开放获取博物馆媒体

CC0

SMITHSONIAN_API_KEY

nasa

NASA 影像

PUBLIC_DOMAIN

met-museum

大都会博物馆开放获取

CC0

europeana

欧洲文化遗产

CC_BY (元数据)

EUROPEANA_API_KEY

library-of-congress

美国历史档案

PUBLIC_DOMAIN

wellcome-collection

医学/历史影像

CC_BY (元数据)

rawpixel

CC0 图库切片

CC0

RAWPIXEL_API_KEY 可选

burst

Shopify Burst 图库照片

CC0

europeana-archival

Europeana 文本/手稿记录

CC_BY (元数据)

EUROPEANA_API_KEY

请参阅 docs/PROVIDERS.md 了解注意事项和速率限制,参阅 docs/PROVIDER_TUNING.md 了解针对不同用例的选择。

本地和云端模式

CLI 优先采用本地模式:默认情况下 webfetch searchartistalbumdownloadprobelicensebatch 会在进程内调用 webfetch-core 并使用你环境中的提供商 API 密钥。传递 --cloud 或设置 WEBFETCH_MODE=cloud 即可使用 WEBFETCH_API_KEYwebfetch config set apiKey wf_live_... 调用 https://api.getwebfetch.com/v1/*

当你需要直接调用提供商并使用本地缓存时,请使用本地模式。当你需要托管认证、共享提供商密钥池、托管浏览器回退、使用统计或团队控制时,请使用云端模式。

为什么选择“许可优先”

我们默认拒绝的唯一结果是无法证明其合法性的图像。对于需要无需人工审核即可发布的工作流而言,一张许可不明但质量稍好的照片毫无价值。相关性很容易判断,但来源证明则不然。

排序逻辑为:许可标签 -> 元数据置信度 -> 分辨率 -> 提供商优先级UNKNOWN 默认被拒绝(根据伯尔尼公约:除非另有证明,否则大多数网络内容均为版权所有)。请参阅 docs/LICENSE_POLICY.md

迁移:CC0 图库提供商

旧版 webfetch 将 Unsplash、Pexels 和 Pixabay 视为 CC0。当前版本明确公开了它们的平台条款:

旧标签

新标签

检查内容

CC0 来自 Unsplash

UNSPLASH_LICENSE

Unsplash 条款;非知识共享 (Creative Commons)

CC0 来自 Pexels

PEXELS_LICENSE

Pexels 条款;非知识共享

CC0 来自 Pixabay

PIXABAY_LICENSE

Pixabay 条款;非知识共享

大多数调用者应保持 licensePolicy: "safe-only",因为它仍然允许开放、平台许可、编辑和新闻稿类别,同时拒绝 UNKNOWN。仅需要知识共享或公有领域资产的工作流应使用 licensePolicy: "open-only" 并更新类型守卫以分别处理这三个平台标签。

webfetch 与替代方案对比

功能

webfetch

原生 Google 图片

仅 Unsplash

Bing CSE

可通过 API 脚本化

否 (已停用)

每个结果的许可元数据

是 (单一许可)

部分

覆盖编辑类音乐艺术

部分

部分

覆盖 CC / 公有领域

默认安全 (拒绝 UNKNOWN)

不适用

不适用

共享内容寻址缓存

内置归属权行

所有 IDE 共享一行 MCP 配置

默认情况下无单次查询成本

不适用

架构

                             +------------------+
                             |  webfetch-core  |
                             |  (ranker, cache, |
                             |   license coerce)|
                             +---------+--------+
                                       |
          +----------------+-----------+-----------+----------------+
          |                |                       |                |
  +-------v------+  +------v-------+       +-------v------+  +------v-------+
  | webfetch     |  | webfetch-mcp |       | webfetch-    |  | browser      |
  | CLI          |  | (stdio)      |       | server (HTTP)|  | extensions   |
  +-------+------+  +------+-------+       +-------+------+  +------+-------+
          |                |                       |                |
          |                |                       |                |
          +----------------+-----------+-----------+----------------+
                                       |
                 +---------------------v---------------------+
                 |              provider adapters            |
                 |  wikimedia  openverse  unsplash  pexels    |
                 |  pixabay    itunes     mb-caa    spotify   |
                 |  youtube    brave      bing      serpapi   |
                 |  flickr     nasa       met       europeana |
                 |  loc        wellcome   rawpixel  burst     |
                 |  browser + managed-browser + archival opt-in|
                 +-------------------------------------------+

所有界面共享 ~/.webfetch/cache/,并以 SHA-256 为键,因此从 CLI 下载的内容可立即供 MCP 服务器使用,反之亦然。

安全默认设置

  • licensePolicy: "safe-only" — 允许开放、平台许可和编辑/新闻类别;拒绝 UNKNOWN

  • safeSearch: "strict"

  • 可选提供商(youtube-thumbbingserpapibrowsermanaged-browsereuropeana-archival)默认关闭。

  • 每次下载上限 20 MB,内容类型守卫,主机黑名单。

  • 在通用页面探测时遵守 robots.txt

路线图

  • webfetch watch — 用于重复查询/增量刷新的守护进程模式。

  • 自带提供商插件 API。

  • getwebfetch.com 托管层 — 提供商密钥池、托管浏览器回退、团队使用仪表板。

贡献

欢迎提交 Issue 和 PR。运行 bun install && bun test 即可开始。请参阅 docs/ 获取各领域的参考文档。

许可

MIT。

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server for searching and retrieving photos from Unsplash with proper attribution, designed for LLMs building content pages.
    3
    16
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables semantic image search using CLIP embeddings and visual question answering through MCP tools, allowing natural language interaction with images.
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for searching and retrieving Creative-Commons-licensed images and audio from Openverse. Enables AI agents to query open media content.
    6
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for searching and attributing images from Openverse and Wikimedia Commons, enabling insertion via insertUrl and attribution formatting.
    2
    290
    MIT

View all related MCP servers

Related MCP Connectors

  • Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.

  • Licensed, rights-cleared content for AI agents - verifiable license keys + EU AI Act attestation.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

Latest Blog Posts

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/ashlrai/webfetch'

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