关于 Pixabay MCP Server
Pixabay MCP Server 将 Pixabay 的图片与视频搜索和获取功能提供给 AI 助手及其他 MCP 客户端。它提供只读工具、精简结果,并默认启用安全搜索。
主要功能
- 01搜索图片并按条件筛选
- 02按 ID 获取图片及各尺寸
- 03搜索视频并按条件筛选
- 04按 ID 获取视频及各版本
- 05精简结果并附带署名信息
- 06提供用法指南资源和搜索提示词
适用场景
- 01为内容创作查找合适图片
- 02筛选特定类型或方向的图像
- 03查找主题相关的视频素材
- 04获取指定素材的可用尺寸
MCP 相关
通过 stdio 向 MCP 客户端暴露 4 个只读工具,另提供用法指南资源和 find_media 提示词。客户端需配置 Pixabay API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @hanoak/pixabay-mcp-serverPIXABAY_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | string | 否 | 搜索词的 ISO 639-1 语言代码。默认为 "en"。 |
| page | integer | 否 | 页码。默认为 1。 |
| order | enum | 否 | 排序顺序。默认为 "popular"。popular | latest |
| query | string | 否 | 搜索词(最多 100 个字符)。省略则浏览默认图片集。 |
| colors | array | 否 | 按主导颜色筛选。 |
| category | enum | 否 | 按内容类别筛选。backgrounds | fashion | nature | science | education | feelings | health | people | religion | places | animals | industry | computer | food | sports | transportation | travel | buildings | business | music |
| per_page | integer | 否 | 每页结果数,范围为 3–200。默认值为 20。 |
| min_width | integer | 否 | 最小图片宽度(像素)。默认值为 0(无下限)。 |
| image_type | enum | 否 | 按图片类型筛选。默认值为 "all"。all | photo | illustration | vector |
| min_height | integer | 否 | 最小图片高度(像素)。默认值为 0(无下限)。 |
| safesearch | boolean | 否 | 仅返回适合所有年龄段的内容。此处默认值为 true(Pixabay 本身的默认值为 false),因此此工具不会在未经提示的情况下显示露骨内容。 |
| orientation | enum | 否 | 按图片方向筛选。默认值为 "all"。all | horizontal | vertical |
| editors_choice | boolean | 否 | 仅返回获奖的编辑精选图片。默认为 false。 |
详细介绍
pixabay-mcp-server
一个适用于 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_images | query?、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_image | id (必填) | 根据数字 ID 获取单张图片及其所有尺寸。 |
视频
| 工具 | 参数 | 描述 |
|---|---|---|
pixabay_search_videos | query?、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_video | id (必填) | 根据数字 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.js | 20 和 22,已在 CI 中测试;要求 >=20(由 engines 和运行时检查强制执行)。 |
| OS | Linux、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 无关。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。