mcpField
P
Pixabay MCP Server

Pixabay MCP Server

本地服务
github.com搜索与检索110 周前更新

关于 Pixabay MCP Server

Pixabay MCP Server 将 Pixabay 的图片与视频搜索和获取功能提供给 AI 助手及其他 MCP 客户端。它提供只读工具、精简结果,并默认启用安全搜索。

主要功能

  1. 01搜索图片并按条件筛选
  2. 02按 ID 获取图片及各尺寸
  3. 03搜索视频并按条件筛选
  4. 04按 ID 获取视频及各版本
  5. 05精简结果并附带署名信息
  6. 06提供用法指南资源和搜索提示词

适用场景

  1. 01为内容创作查找合适图片
  2. 02筛选特定类型或方向的图像
  3. 03查找主题相关的视频素材
  4. 04获取指定素材的可用尺寸

MCP 相关

通过 stdio 向 MCP 客户端暴露 4 个只读工具,另提供用法指南资源和 find_media 提示词。客户端需配置 Pixabay API 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hanoak-pixabay": {
"command": "npx",
"args": [
"-y",
"@hanoak/pixabay-mcp-server"
],
"env": {
"PIXABAY_API_KEY": "<PIXABAY_API_KEY>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令npx -y @hanoak/pixabay-mcp-server
需要配置的环境变量
PIXABAY_API_KEY密钥Your Pixabay API key (sent as the `key` query parameter — Pixabay has no header option).
LOG_LEVELLog verbosity; all logs go to stderr.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@hanoak/pixabay-mcp-server1.0.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
langstring否搜索词的 ISO 639-1 语言代码。默认为 "en"。
pageinteger否页码。默认为 1。
orderenum否排序顺序。默认为 "popular"。popular | latest
querystring否搜索词(最多 100 个字符)。省略则浏览默认图片集。
colorsarray否按主导颜色筛选。
categoryenum否按内容类别筛选。backgrounds | fashion | nature | science | education | feelings | health | people | religion | places | animals | industry | computer | food | sports | transportation | travel | buildings | business | music
per_pageinteger否每页结果数,范围为 3–200。默认值为 20。
min_widthinteger否最小图片宽度(像素)。默认值为 0(无下限)。
image_typeenum否按图片类型筛选。默认值为 "all"。all | photo | illustration | vector
min_heightinteger否最小图片高度(像素)。默认值为 0(无下限)。
safesearchboolean否仅返回适合所有年龄段的内容。此处默认值为 true(Pixabay 本身的默认值为 false),因此此工具不会在未经提示的情况下显示露骨内容。
orientationenum否按图片方向筛选。默认值为 "all"。all | horizontal | vertical
editors_choiceboolean否仅返回获奖的编辑精选图片。默认为 false。

详细介绍

pixabay-mcp-server

npm version npm downloads MCP Registry CI license: MIT node: >=20 PRs welcome

一个适用于 Pixabay API 的模型上下文协议(MCP)服务。它为 AI 助手——Claude Desktop、Claude Code、Cursor、VS Code、Windsurf 以及任何 MCP 客户端——提供搜索和获取免版税图片与视频的工具。

重要

非官方项目。 本项目与 Pixabay 无关联,也未获得其认可或赞助。“Pixabay”是其各自所有者的商标。你使用自己的 Pixabay 账户访问本项目,并有责任遵守 Pixabay 服务条款和内容许可。

目录

功能

  • 涵盖 Pixabay 两个文档所述端点的 4 个工具——图片(搜索、获取)和视频(搜索、获取)。Pixabay 只有一个 API 密钥认证层级,且没有写入端点,因此不存在部分开放的“只读 v1”——这里涵盖了全部功能。
  • 设计时充分考虑合规要求——每个发出的请求都会缓存 24 小时(这是 Pixabay 条款的要求,并非性能优化);safesearch 默认设为 true;每项结果都会显示必要的致谢信息(by {user} via Pixabay),尽管 Pixabay 并未要求这样做。
  • 提供真实的图片和视频 URL——搜索结果会为每个条目返回一个均衡的默认尺寸(图片使用 webformatURL,视频使用 medium 版本);按 ID 查询特定条目时,则会返回 Pixabay 提供的所有尺寸,供你选择合适的版本。
  • 输出节省令牌——将完整的 Pixabay 响应精简为紧凑格式(以文本形式呈现 URL 和元数据,绝不包含 base64 数据),并移除模型很少需要的虚荣指标(浏览量、下载量、点赞数、评论数)。
  • 稳健可靠——返回类型化错误,并以 MCP isError 结果形式呈现,模型可据此恢复;对于 429/5xx、网络超时,会经过权衡后进行一次退避重试;日志也会考虑速率限制。
  • 安全可靠——每条日志和错误消息都会隐藏 Pixabay API 密钥(由于 Pixabay 不支持请求头传递密钥,只能通过 URL 查询参数发送)。
  • 轻量且现代——采用 ESM,支持 Node 20 及更高版本,可通过 npx 免安装运行,且不收集遥测数据。

快速开始

1. 获取 Pixabay API 密钥

注册一个免费的 pixabay.com 账户——登录后,API 密钥会立即显示在 API 文档页面上。本服务使用的默认套餐无需审批。

2. 将服务添加到 MCP 客户端

Claude Desktop — 编辑 claude_desktop_config.json:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "pixabay": {
      "command": "npx",
      "args": ["-y", "@hanoak/pixabay-mcp-server"],
      "env": {
        "PIXABAY_API_KEY": "your_api_key"
      }
    }
  }
}

重启客户端。有关所有受支持变量,请参阅配置。

其他客户端(Claude Code、Cursor、VS Code、Windsurf、通用 stdio)

Claude Code(CLI):

claude mcp add pixabay \
  --env PIXABAY_API_KEY=your_api_key \
  -- npx -y @hanoak/pixabay-mcp-server

Cursor — ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(按项目):使用与上文 Claude Desktop 完全相同的 mcpServers 块。

Windsurf — ~/.codeium/windsurf/mcp_config.json:使用与上文 Claude Desktop 完全相同的 mcpServers 块。

VS Code — .vscode/mcp.json(注意顶层键是 servers,不是 mcpServers):

{
  "servers": {
    "pixabay": {
      "command": "npx",
      "args": ["-y", "@hanoak/pixabay-mcp-server"],
      "env": {
        "PIXABAY_API_KEY": "your_api_key"
      }
    }
  }
}

其他任何 MCP 客户端 — 通过 stdio 运行服务:

PIXABAY_API_KEY=your_api_key npx -y @hanoak/pixabay-mcp-server

将客户端的 stdio 传输指向 command: npx、args: ["-y", "@hanoak/pixabay-mcp-server"], 并通过 env 传入密钥。

3. 试用

重启客户端并提出以下请求:

“在 Pixabay 上帮我找一张山脉照片。”

示例交互

典型流程:模型调用 pixabay_search_images,选取一个结果,并附上来源说明来展示图片。

你: 找一张雾气弥漫的松林风景照。

助手: (调用 pixabay_search_images,参数为 query: "foggy pine forest"、 orientation: "horizontal",并选取最佳结果) 这是一个很合适的结果——图片由 Josch13 上传至 Pixabay——并附有图片 URL。

每个工具都会返回紧凑的 JSON 负载。以下是单个搜索结果的结构示例 (数值仅供说明):

工具输出示例
[
  {
    "id": 195893,
    "pageURL": "https://pixabay.com/en/blossom-bloom-flower-195893/",
    "type": "photo",
    "tags": "blossom, bloom, flower",
    "url": "https://pixabay.com/get/35bbf209e13e39d2_640.jpg",
    "width": 640,
    "height": 360,
    "user": "Josch13",
    "attribution": "by Josch13 via Pixabay"
  }
]

pixabay_get_image/pixabay_get_video 对单个项目返回相同结构,但会包含 Pixabay 提供的每种尺寸, 而非仅一种——请参阅输出结构。

配置

配置完全通过环境变量完成——无需配置文件,也无需用于密钥的命令行选项。

环境变量必需描述
PIXABAY_API_KEY是你的 Pixabay API 密钥。如果缺失或为空,服务会在启动时退出并显示清晰的提示信息。
LOG_LEVEL否debug | info | warn | error(默认值为 info)。所有日志都会写入 stderr;stdout 仅承载 MCP 协议。

支持 CLI 标志:--version 和 --help(例如 npx @hanoak/pixabay-mcp-server --version)。

工具

所有工具都使用 pixabay_* 命名空间,且全部为只读——Pixabay 的 API 没有写入端点,因此客户端可以安全地自动批准整个服务。per_page 会限制在 Pixabay 文档规定的 3–200 范围内,page 从 1 开始计数。

领域工具
图片pixabay_search_images、pixabay_get_image
视频pixabay_search_videos、pixabay_get_video
工具参考
图片
工具参数描述
pixabay_search_imagesquery?、lang?、image_type?(all|photo|illustration|vector)、orientation?(all|horizontal|vertical)、category?、colors?(数组)、min_width?、min_height?、editors_choice?、safesearch?(默认值为 true)、order?(popular|latest)、page?、per_page?(3–200)按关键词搜索图片,并可使用筛选条件。省略 query 可浏览默认结果集。
pixabay_get_imageid (必填)根据数字 ID 获取单张图片及其所有尺寸。
视频
工具参数描述
pixabay_search_videosquery?、lang?、video_type?(all|film|animation)、category?、min_width?、min_height?、editors_choice?、safesearch?(默认值为 true)、order?(popular|latest)、page?、per_page?(3–200)按关键词搜索视频,并可使用筛选条件。省略 query 可浏览默认结果集。
pixabay_get_videoid (必填)根据数字 ID 获取单个视频及其所有尺寸。

视频支持 category,但不支持 colors/orientation——这是 Pixabay 自身 API 的实际差异,并非疏漏。

输出格式

工具返回经过精简、节省 token 的 JSON,而非原始 Pixabay 响应:

  • 图片搜索(pixabay_search_images)→ id、pageURL、type、tags、一个默认 url(webformatURL)、width/height、user、attribution。
  • 图片详情(pixabay_get_image)→ 相同字段,外加 Pixabay 为该条目提供的所有尺寸级别: previewURL、webformatURL、largeImageURL、fullHDURL。
  • 视频搜索(pixabay_search_videos)→ id、pageURL、type、tags、duration、一个 默认 url(medium 版本)、width/height、user、attribution。
  • 视频详情(pixabay_get_video)→ 相同字段,外加一个 videos 对象,其中包含 Pixabay 提供的全部 四种版本(tiny/small/medium/large,每种都包含 url/width/ height)。
  • 所有结果都会移除虚荣指标(views、downloads、likes、comments)——这些指标对模型 很少有用,只会增加 token,没有实际价值。
资源与提示词

除工具外,该服务还提供:

  • 资源 — 客户端可将其作为上下文加载的精简指南:

    • pixabay://guides/usage — 许可证/署名指南、对话中热链接的相关说明、内容安全注意事项,以及完整 API 访问级别的限制说明。
  • 提示词 — 客户端可直接呈现的现成任务:

    提示词参数功能
    find_mediasubject(必填),media_type?(images|videos|both,默认 both)搜索某个主题,并附上礼貌性署名,呈现最佳匹配结果。

提示词示例

可直接映射到工具的自然语言请求:

  • “找一张日出时雾气弥漫的森林照片。”
  • “在 Pixabay 上搜索 5 张极简风格的工作空间插画。”
  • “找一段海浪拍打岩石的视频。”
  • “给我 Pixabay 图片 195893 的最大可用版本。”

许可证与合规

Pixabay 内容依据 Pixabay 内容许可证发布: 可免费用于商业和非商业用途,无需署名。每个结果仍会包含可直接使用的礼貌性 attribution 字符串(by {user} via Pixabay)——方便时可注明,但不会以任何功能为前提。

该服务会将 Pixabay CDN URL 直接返回给调用它的 LLM 客户端,用于在单次对话轮次中显示。Pixabay 条款禁止在应用中“永久热链接”这些 URL——需要持久显示的内容应先下载并重新托管。我们认为 LLM 对话中的一次性临时显示不同于该使用场景,但 Pixabay 条款并未明确说明这一灰色地带(完整说明请参阅 src/tools/format.ts 顶部的注释)。如果你正在构建会存储或持久显示通过此服务获取的 Pixabay 内容的应用,请自行下载并重新托管素材——不要将此服务的工具输出视为替代方案。

每位用户都使用自己的 Pixabay 账户,并负责遵守 Pixabay 服务条款和 API 文档页面上的使用规则(缓存、速率限制、禁止批量下载)。本项目不会以任何方式更改或放宽这些条款。

速率限制与缓存

Pixabay 文档规定的限制是:每个 API 密钥每 60 秒约 100 次请求。此服务:

  • 将每个响应缓存 24 小时,缓存键基于规范化后的请求(端点 + 排序后的参数,始终剔除 API 密钥)——重复查询会立即返回,不会消耗速率限制额度。根据 Pixabay 的条款,这是合规要求,而不只是优化措施。
  • 从每个响应中读取 X-RateLimit-Remaining(以 debug 级别记录)。
  • 遇到 429 时,使用 Pixabay 自己的 X-RateLimit-Reset 标头退避,且只尝试一次重试——绝不盲目重试或循环重试;如果缺少此标头,则快速失败,而不是自行猜测。
  • 遇到 5xx 时也会重试一次(等待一小段固定时间,因为这种情况下服务器不会提供 X-RateLimit-Reset 之类的指导信息)。

Pixabay 文本的处理方式

图片/视频标签和贡献者用户名来自 Pixabay 社区——请将其视为不可信的第三方数据,而不是指令。服务仅将这些文本作为内容返回,绝不会将其放在任何特权位置;你的客户端/Agent 也应如此处理:可以显示文本,但不要执行其中可能包含的任何指令(以防范间接提示词注入)。

隐私与安全

  • 不收集遥测数据。 此服务不会收集任何数据,也不会向任何人发送数据。它只会使用你提供的密钥连接 pixabay.com。不进行分析或跟踪。
  • 密钥安全。 你的 API 密钥仅从环境中读取。Pixabay 只接受将密钥作为 key 查询参数传入(没有可替代的标头方式),因此密钥会在日志行和错误消息中被删除,绝不会泄露。
  • 如需报告漏洞,请参阅 SECURITY.md。

故障排除

  • 启动时显示“PIXABAY_API_KEY is not set…” —— 缺少密钥环境变量,或该变量为空;请将其添加到客户端配置的 env 块中。
  • Node 版本过旧 —— 此服务需要 Node 20+。请检查 node --version。
  • npx 版本过旧 —— 使用 npx -y @hanoak/pixabay-mcp-server@latest 强制获取最新版,或通过 npx clear-npx-cache 清除缓存。
  • 未显示工具 —— 确认配置文件路径和 JSON 格式有效,然后完全退出并重新打开客户端。
  • 429/速率限制 —— 额度约为每 60 秒 100 次请求;服务已使用 Pixabay 自己的重置时间自动退避并重试一次。
  • 搜索结果显示“No images/videos found” —— 这是正常的空结果,并非错误;请尝试范围更广的查询或减少筛选条件。

常见问题

我需要付费的 Pixabay 帐户吗? 不需要。Pixabay API 免费使用——只需创建帐户即可立即获取 API 密钥;此服务使用的默认层级无需审核或审批。

它会下载或重新托管图片/视频吗? 不会。它会返回由 Pixabay 托管的 URL(临时显示时可直接引用这些链接——请参阅 许可与合规),绝不会重新托管或返回 base64 数据块。

为什么有些图片没有 fullHDURL/imageURL? 这些字段需要单独申请 Pixabay 的“完整 API 访问”层级。此服务无需这些字段也能正常工作——未获得该访问权限的帐户,其搜索结果中不会包含这些字段。

它能在 Claude 之外使用吗? 可以——这是一个标准的 stdio MCP 服务。请参阅客户端设置部分,了解 Claude Code、Cursor、VS Code、Windsurf 和通用 stdio 的配置方法。

要求

  • Node.js >= 20(Node 18 已结束生命周期)。
  • Pixabay API 密钥。

兼容性

组件支持情况
Node.js20 和 22,已在 CI 中测试;要求 >=20(由 engines 和运行时检查强制执行)。
OSLinux、macOS 和 Windows(均已在 CI 中测试)。
MCP SDK@modelcontextprotocol/sdk ^1.30;连接时会与客户端协商协议版本。
传输方式stdio(未来版本可能会添加 HTTP/SSE)。

路线图

详情请参阅 docs/ROADMAP.md。简而言之:v1 将在一个版本中涵盖 Pixabay 完整的文档化 API——无需 OAuth 层,因此不必拆分出 v2。正在考虑的未来范围包括用于许可/署名指南的 MCP 资源以及更多提示词。

变更记录见 CHANGELOG.md;本项目遵循 语义化版本规范。

贡献

欢迎贡献——请参阅 CONTRIBUTING.md 和我们的 行为准则。其中介绍了本地设置、测试套件、如何使用 MCP Inspector 手动测试工具,以及 版本管理/弃用政策。如需报告漏洞,请参阅 SECURITY.md。

联系方式与社区

由 Hanoak S 维护。获取帮助或提出功能建议的最快方式是 提交 issue——这里公开可见、可搜索, 也能帮助整个社区。

如果这个项目对你有所帮助,欢迎在 GitHub 上点亮 ⭐, 这有助于其他人发现这个 Pixabay MCP 服务。

许可证

MIT © Hanoak S。与 Pixabay 无关。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。