mcpField
S
Stock Image MCP

Stock Image MCP

本地服务
github.com/Hasilt搜索与检索213 周前更新

关于 Stock Image MCP

Stock Image MCP 是供兼容 MCP 的 Agent 使用的服务,可从已配置的图库提供商搜索和下载图片。它能合并多个提供商的搜索结果,并在适用时返回下载图片的署名文本。

主要功能

  1. 01搜索六个图库提供商
  2. 02并发搜索已配置的提供商
  3. 03选择匹配度较高的图片
  4. 04将图片下载到本地路径
  5. 05查询署名和速率限制状态

适用场景

  1. 01为 SEO 博客内容寻找图片
  2. 02同时搜索多个已配置的图库
  3. 03将选中的图片保存到项目目录
  4. 04查看提供商的请求限制

MCP 相关

MCP 服务向兼容 MCP 的客户端提供图片搜索、跨提供商搜索、最佳图片选择、下载、署名查询和速率限制状态等工具。各用户在本地提供图库密钥;未配置密钥的提供商会被跨站搜索跳过。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"hasilt-images": {
"command": "uvx",
"args": [
"stock-image-mcp"
],
"env": {
"UNSPLASH_ACCESS_KEY": "<UNSPLASH_ACCESS_KEY>",
"PEXELS_API_KEY": "<PEXELS_API_KEY>",
"PIXABAY_API_KEY": "<PIXABAY_API_KEY>",
"FREEPIK_API_KEY": "<FREEPIK_API_KEY>",
"STOCKVAULT_API_KEY": "<STOCKVAULT_API_KEY>",
"DEFAULT_PROVIDER": "<DEFAULT_PROVIDER>"
}
}
}
}
启动命令uvx stock-image-mcp
需要配置的环境变量
UNSPLASH_ACCESS_KEY密钥Unsplash API access key
PEXELS_API_KEY密钥Pexels API key
PIXABAY_API_KEY密钥Pixabay API key
FREEPIK_API_KEY密钥Freepik API key
STOCKVAULT_API_KEY密钥StockVault API key
DEFAULT_PROVIDERProvider used when a tool call passes provider="default"

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

安装包
pypistock-image-mcp0.1.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

stock-image-mcp

一个 MCP 服务,可让 Claude Code(或任何兼容 MCP 的 Agent)通过工具调用搜索和下载图库图片,适合在撰写 SEO 博客文章或其他内容时查找图片。

提供商

提供商API 类型需要密钥默认速率限制
Unsplash官方是演示版 50 次/小时,生产版 5000 次/小时
Pexels官方是200 次/小时
Pixabay官方是100 次/60 秒
Freepik官方是可配置(取决于套餐)
StockVault官方是可配置(未公开说明,默认值较为保守)
Burst (Shopify)非官方抓取否自行设定,默认较为克制

Burst 没有公共 API。此处以尽力而为的 HTML 抓取器形式提供,并在代码中明确标注为不受支持——该功能发生的任何故障都会被捕获,并以空结果报告,而不会导致 search_all_images 出错。

安装

每位用户都在本地运行服务,并提供自己的提供商 API 密钥——不会共享托管,也不会集中保管密钥。

使用 Claude Code:

claude mcp add stock-image-mcp \
  -e UNSPLASH_ACCESS_KEY=... \
  -e UNSPLASH_TIER=demo \
  -e PEXELS_API_KEY=... \
  -e PIXABAY_API_KEY=... \
  -e FREEPIK_API_KEY=... \
  -e FREEPIK_REQUESTS_PER_MINUTE=60 \
  -e STOCKVAULT_API_KEY=... \
  -e STOCKVAULT_REQUESTS_PER_HOUR=60 \
  -e BURST_REQUESTS_PER_MINUTE=10 \
  -e DEFAULT_PROVIDER=pexels \
  -e DOWNLOAD_DIR=./downloads \
  -- uvx stock-image-mcp

使用 OpenAI Codex CLI:

codex mcp add stock-image-mcp \
  --env UNSPLASH_ACCESS_KEY=... \
  --env UNSPLASH_TIER=demo \
  --env PEXELS_API_KEY=... \
  --env PIXABAY_API_KEY=... \
  --env FREEPIK_API_KEY=... \
  --env FREEPIK_REQUESTS_PER_MINUTE=60 \
  --env STOCKVAULT_API_KEY=... \
  --env STOCKVAULT_REQUESTS_PER_HOUR=60 \
  --env BURST_REQUESTS_PER_MINUTE=10 \
  --env DEFAULT_PROVIDER=pexels \
  --env DOWNLOAD_DIR=./downloads \
  -- uvx stock-image-mcp

使用 Gemini CLI:

gemini mcp add stock-image-mcp \
  -e UNSPLASH_ACCESS_KEY=... \
  -e UNSPLASH_TIER=demo \
  -e PEXELS_API_KEY=... \
  -e PIXABAY_API_KEY=... \
  -e FREEPIK_API_KEY=... \
  -e FREEPIK_REQUESTS_PER_MINUTE=60 \
  -e STOCKVAULT_API_KEY=... \
  -e STOCKVAULT_REQUESTS_PER_HOUR=60 \
  -e BURST_REQUESTS_PER_MINUTE=10 \
  -e DEFAULT_PROVIDER=pexels \
  -e DOWNLOAD_DIR=./downloads \
  -- uvx stock-image-mcp

也可以使用 uvx 手动将其添加到 MCP 配置中(无需克隆或安装步骤——uvx 会在首次运行时从 PyPI 获取软件包):

{
  "mcpServers": {
    "stock-image-mcp": {
      "command": "uvx",
      "args": ["stock-image-mcp"],
      "env": {
        "UNSPLASH_ACCESS_KEY": "...",
        "UNSPLASH_TIER": "demo",
        "PEXELS_API_KEY": "...",
        "PIXABAY_API_KEY": "...",
        "FREEPIK_API_KEY": "...",
        "FREEPIK_REQUESTS_PER_MINUTE": "60",
        "STOCKVAULT_API_KEY": "...",
        "STOCKVAULT_REQUESTS_PER_HOUR": "60",
        "BURST_REQUESTS_PER_MINUTE": "10",
        "DEFAULT_PROVIDER": "pexels",
        "DOWNLOAD_DIR": "./downloads"
      }
    }
  }
}

只有 UNSPLASH_ACCESS_KEY、PEXELS_API_KEY、PIXABAY_API_KEY、FREEPIK_API_KEY 和 STOCKVAULT_API_KEY 是实际的密钥——只需设置要启用的提供商对应的密钥,并删除其余密钥;search_all_images 会跳过未提供密钥的提供商,而直接通过 search_stock_images 查询这些提供商时则会被拒绝。其余变量都是可选的调优参数,上方列出了它们的默认值——完整列表请参见 .env.example。

工具

  • search_stock_images(query, provider="default", orientation=None, per_page=10, page=1)
  • search_all_images(query, orientation=None, per_page=5) — 并发查询所有已配置的提供商
  • get_best_image(query, provider="default")
  • download_image(url, dest_path, provider=None) — 将图片保存到本地;如果图片来自之前的搜索,则返回署名文本
  • get_attribution(provider, image_id)
  • get_rate_limit_status(provider=None)

使用方法

你无需直接调用这些工具,只需与 Agent 对话,它会根据你的请求和上方的工具说明,决定何时使用某个工具。以下几点值得注意:

  • 使用普通英文提问即可。“帮我找 3 张适合博客文章的山景照片”足以触发 search_all_images(如果你指定了提供商,则会触发 search_stock_images)。“将第一个 Unsplash 搜索结果下载到 ./images/hero.jpg”会触发 download_image。“我本小时还剩多少次 Pexels 请求?”会触发 get_rate_limit_status。
  • search_stock_images 需要指定提供商(或使用 "default");search_all_images 则会查询你已配置密钥的所有提供商并合并结果。如果你在意使用哪个提供商,请说“只搜索 Pexels”或类似的话。
  • 有几个提供商(尤其是 Unsplash 和 Pexels)要求你在公开场合使用图片时注明出处。适用时,download_image 会在文件旁附上注明出处的文本——你需要自行将其粘贴到图片最终展示的位置,服务不会替你完成这一步。
  • 想要手动调用工具,而不是通过对话调用?请参阅下方“开发”部分中的 MCP Inspector 章节。

本地开发

如果要基于克隆的仓库进行开发,而不是使用已发布的程序包:

uv sync
cp .env.example .env   # fill in the API keys for providers you want enabled
uv run stock-image-mcp

将 Claude 配置指向本地检出目录,而不是 uvx:

{
  "mcpServers": {
    "stock-image-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/stock-image-mcp",
        "run",
        "stock-image-mcp"
      ],
      "env": {
        "UNSPLASH_ACCESS_KEY": "...",
        "UNSPLASH_TIER": "demo",
        "PEXELS_API_KEY": "...",
        "PIXABAY_API_KEY": "...",
        "FREEPIK_API_KEY": "...",
        "FREEPIK_REQUESTS_PER_MINUTE": "60",
        "STOCKVAULT_API_KEY": "...",
        "STOCKVAULT_REQUESTS_PER_HOUR": "60",
        "BURST_REQUESTS_PER_MINUTE": "10",
        "DEFAULT_PROVIDER": "pexels",
        "DOWNLOAD_DIR": "./downloads"
      }
    }
  }
}

开发

uv run pytest              # test suite (mocked HTTP, no live keys needed)
uv run ruff check .         # lint
uv run ruff format .        # format
uv run mypy src             # type check

要使用真实提供商进行测试,请使用 MCP Inspector:

npx @modelcontextprotocol/inspector uv run stock-image-mcp

评论

支持 Markdown

第一次接触 MCP?

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

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