mcpField
I
image-resolver

image-resolver

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

关于 image-resolver

image-resolver 是面向 AI 主机的 MCP 服务,可从 Pexels 和 Unsplash 搜索免版税图片。它提供查询提取、批量搜索及归属信息生成,并将结果整理为统一结构。

主要功能

  1. 01搜索 Pexels 和 Unsplash 图片
  2. 02从文本提取图片查询词
  3. 03获取单张最佳匹配图片
  4. 04并行执行多组搜索
  5. 05生成符合来源要求的署名
  6. 06返回图片链接与元数据

适用场景

  1. 01为文章或博客寻找配图
  2. 02按自然语言为应用界面找图片
  3. 03从一段需求提取搜索词
  4. 04为图片生成摄影师署名

MCP 相关

作为 stdio MCP 服务向客户端提供图片搜索、查询词提取、最佳图片选择、批量搜索和署名生成工具。至少需要配置 Pexels 或 Unsplash 的 API 密钥。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"ahmaddioxide-image-resolver": {
"command": "npx",
"args": [
"-y",
"@ahmaddioxide/mcp-image-resolver"
],
"env": {
"PEXELS_API_KEY": "<PEXELS_API_KEY>",
"UNSPLASH_ACCESS_KEY": "<UNSPLASH_ACCESS_KEY>"
}
}
}
}
启动命令npx -y @ahmaddioxide/mcp-image-resolver
需要配置的环境变量
PEXELS_API_KEY密钥Pexels API key (free at https://www.pexels.com/api/)
UNSPLASH_ACCESS_KEY密钥Unsplash API key (free at https://unsplash.com/oauth/applications)

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

安装包
npm@ahmaddioxide/mcp-image-resolver0.2.0

工具

5

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

参数类型必填说明
pagenumber否分页页码(默认值:1)
limitnumber否最大结果数(默认:10)
querystring是搜索文本(例如 sunset mosque、zen yoga UI)
orientationenum否按宽高比筛选landscape | portrait | square

详细介绍

MCP 图像解析器服务

这是一个 MCP(Model Context Protocol)服务,可为 Cursor、Claude Desktop、VS Code、Windsurf 等 AI 主机提供免版税图像搜索。用自然语言让 AI 助手查找图像,它会使用 search_images 工具,并返回来自 Pexels 和 Unsplash 的结构化结果。

功能

  • search_images — 搜索免版税图像(支持 limit、page、orientation)
  • extract_image_query — 将自由文本转换为图像搜索查询
  • get_best_image — 为查询返回最合适的单张图像
  • search_images_batch — 并行执行多项搜索
  • resolve_image_attribution — 生成符合提供商要求的署名文本
  • Pexels & Unsplash — 支持多个提供商(两者均提供免费套餐)
  • 统一响应 — 返回包含 url、source、dimensions、photographer、tags 的结构化结果
  • 随处可用 — 适用于任何支持 stdio 服务的 MCP 客户端

要求

快速开始(无需安装)

无需克隆或构建。只需将此配置添加到 MCP 客户端,它便会通过 npx 自动运行:

{
  "mcpServers": {
    "image-resolver": {
      "command": "npx",
      "args": ["-y", "@ahmaddioxide/mcp-image-resolver"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

必须提供至少一个 API 密钥。两者都免费,可在此获取:

架构(高层概览)

┌─────────────────────────────────────────────────────────────────────────────┐
│                           MCP Client (Cursor, Claude, VS Code, etc.)        │
│                                     │                                       │
│                            stdio (stdin/stdout)                             │
└─────────────────────────────────────┼───────────────────────────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                         MCP Image Resolver Server                           │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  index.ts          MCP server entry, registers tools, stdio transport│   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                      │                                      │
│                                      ▼                                      │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │  tools/search-images.ts   Tool handler: search_images(query)         │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                      │                                      │
│                                      ▼                                      │
│  ┌──────────────────────┐  ┌──────────────────────┐                        │
│  │  providers/pexels.ts  │  │ providers/unsplash.ts │                        │
│  │  Pexels API adapter   │  │ Unsplash API adapter  │──▶ ImageResult schema  │
│  └──────────────────────┘  └──────────────────────┘                        │
│               │                        │                                    │
│               └────────────────────────┴────▶ utils/normalize.ts            │
└─────────────────────────────────────┼───────────────────────────────────────┘
                                      │
                    ┌─────────────────┴─────────────────┐
                    ▼                                   ▼
┌──────────────────────────────┐    ┌──────────────────────────────────────────┐
│  Pexels API                  │    │  Unsplash API                             │
│  api.pexels.com              │    │  api.unsplash.com                         │
└──────────────────────────────┘    └──────────────────────────────────────────┘

流程: MCP 客户端 → stdio → index.ts(注册工具)→ search-images.ts → Pexels 和 Unsplash 提供商(设置了密钥时)。结果会合并(先 Pexels,后 Unsplash),并规范化为统一的 ImageResult 架构。

客户端设置

Cursor

添加到 .cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局):

{
  "mcpServers": {
    "image-resolver": {
      "command": "npx",
      "args": ["-y", "@ahmaddioxide/mcp-image-resolver"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

更改配置后重启 Cursor。

Claude Desktop

添加到 Claude 配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json

通过设置操作:Developer → Edit Config

{
  "mcpServers": {
    "image-resolver": {
      "command": "npx",
      "args": ["-y", "@ahmaddioxide/mcp-image-resolver"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

保存后彻底重启 Claude Desktop。

VS Code

添加到 .vscode/mcp.json(工作区级)或用户配置文件中的 mcp.json:

{
  "servers": {
    "image-resolver": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@ahmaddioxide/mcp-image-resolver"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

注意: VS Code 使用 servers(而非 mcpServers),并且要求 "type": "stdio"。

Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "image-resolver": {
      "command": "npx",
      "args": ["-y", "@ahmaddioxide/mcp-image-resolver"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

更改后刷新 MCP 配置。

其他 MCP 客户端

任何支持 stdio MCP 服务的客户端(Amp、Continue.dev、Amazon Q 等)都可以使用此服务:

  • 命令: npx
  • 参数: ["-y", "@ahmaddioxide/mcp-image-resolver"]
  • 环境变量: { "PEXELS_API_KEY": "your-key", "UNSPLASH_ACCESS_KEY": "your-key" }(至少需要一个)

用法

配置完成后,用自然语言让 AI 助手查找图像。它会自动调用 search_images 工具。

提示词示例:

  • “查找日落时的清真寺免版税图像”
  • “搜索适合健康应用的禅意瑜伽图像”
  • “找一些极简风格的办公室工作区照片”
  • “查找适合烹饪博客页眉的图像”

该工具会返回图像 URL 和元数据。使用链接查看或下载图像。

工具架构

工具参数描述
search_imagesquery, limit?, page?, orientation?搜索 Pexels 和 Unsplash 上的图片
extract_image_querycontext从自由格式文本中提取搜索词
get_best_imagequery, orientation?返回一张最佳图片
search_images_batchqueries, limit?并行执行多次搜索
resolve_image_attributionphotographer, source, url?生成署名文本

**响应:**包含 results 数组的 JSON,数组元素格式为 { url, source, width, height, photographer, tags }。每个结果都包含 source("Pexels" 或 "Unsplash"),用于署名。

**注意:**配置了两个提供方时,结果会合并,Pexels 的结果在前,Unsplash 的结果在后。使用 limit: 20 或更高的值,可在一次搜索中查看两个提供方的结果。

测试

用于验证工具的示例提示词:

  • “搜索山地景观图片,limit 设为 20,并告诉我哪些结果来自 Pexels,哪些来自 Unsplash。”
  • “对以下内容使用 extract_image_query:我需要一张适用于冥想应用的山景主图。”
  • “对 'sunset mosque'、'pakistani flag' 和 'zen yoga' 使用 search_images_batch。”
  • “为咖啡店查找一张最佳图片,并为其生成署名。”

开发

如需贡献或在本地运行,请克隆仓库并从源代码构建:

git clone https://github.com/ahmaddioxide/image-resolver-mcp.git
cd image-resolver-mcp
npm install
cp .env.example .env
# Add PEXELS_API_KEY and/or UNSPLASH_ACCESS_KEY to .env
npm run build

或者使用 tsx 在开发模式下运行,无需构建:

{
  "mcpServers": {
    "image-resolver": {
      "command": "npx",
      "args": ["tsx", "/path/to/image-resolver-mcp/src/index.ts"],
      "env": {
        "PEXELS_API_KEY": "your-pexels-api-key",
        "UNSPLASH_ACCESS_KEY": "your-unsplash-access-key"
      }
    }
  }
}

署名

图片来源为 Pexels 和 Unsplash。根据其 API 条款:

  • 显著展示指向 Pexels 和 Unsplash 的链接
  • 为摄影师署名:“照片由 [姓名] 拍摄,来自 Pexels” / “照片由 [姓名] 拍摄,来自 Unsplash”
  • 响应元数据包含 photographer 和 source;使用 resolve_image_attribution 生成符合要求的文本

贡献

欢迎贡献。请阅读 CONTRIBUTING.md 了解指南,并阅读 CODE_OF_CONDUCT.md 了解社区规范。有关漏洞报告,请参阅 SECURITY.md。

许可证

MIT — 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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