# https://github.com/ahmaddioxide/image-resolver-mcp Project Manual

Generated on: 2026-05-22 16:50:13 UTC

## Table of Contents

- [Repository Overview](#overview)
- [Entrypoints and Runtime Surface](#entrypoints)
- [Architecture Evidence Map](#architecture)
- [Operations and Verification Boundaries](#operations)

<a id='overview'></a>

## Repository Overview

### Related Pages

Related topics: [Entrypoints and Runtime Surface](#entrypoints), [Architecture Evidence Map](#architecture), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/README.md)
- [package.json](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/package.json)
- [src/index.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/index.ts)
- [src/providers/pexels.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/pexels.ts)
- [src/providers/types.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/types.ts)
- [src/providers/unsplash.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/unsplash.ts)
- [src/tools/extract-image-query.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/extract-image-query.ts)
- [src/tools/get-best-image.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/get-best-image.ts)
- [src/tools/resolve-image-attribution.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/resolve-image-attribution.ts)
- [src/tools/search-images-batch.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images-batch.ts)
- [src/tools/search-images.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images.ts)
- [src/utils/normalize.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/utils/normalize.ts)
</details>

# Repository Overview

This page is generated from repository evidence because the Human Wiki provider was unavailable. It intentionally limits itself to README and file-tree facts.

## README Evidence

# MCP Image Resolver Server

An MCP (Model Context Protocol) server that provides royalty-free image search for AI hosts like Cursor, Claude Desktop, VS Code, Windsurf, and more. Ask your AI assistant to find images by natural language—it uses the `search_images` tool and returns structured results from Pexels and Unsplash.

## Features

- **search_images** — Search for royalty-free images (supports limit, page, orientation)
- **extract_image_query** — Transform free-form text into an image search query
- **get_best_image** — Return a single best image for a query
- **search_images_batch** — Run multiple searches in parallel
- **resolve_image_attribution** — Generate provider-compliant attribution text
- **Pexels & Unsplash** — Multi-provider support (free tier for both)
- **Unified response** — Structured results with url, source, dimensions, photographer, tags
- **Works everywhere** — Any MCP client that supports stdio servers

## Requirements

- Node.js 18+
- At least one API key: Pexels ([pexels.com/api](https://www.pexels.com/api/)) and/or Unsplash ([unsplash.com/oauth/applications](https://unsplash.com/oauth/applications))

## Quick Start (No Installation Required)

No cloning or building needed. Just add this config to your MCP client and it runs via `npx` automatically:

```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"
      }
    }
  }
}
```

At least one API key is required. Both are free — get them here:
- Pexels: [pexels.com/api](https://www.pexels.com/api/)
- Unsplash: [unsplash.com/oauth/applications](https://unsplash.com/oauth/applications)

## Architecture (High-Level)

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                           MCP Client (Cursor, Claude, VS Code, etc.)        │
│                                     │                                       │
│                            stdio (stdin/stdout)                             │
└─────────────────────────────────────┼───────────────────────────────────────┘
                                      │
                                      ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│

[excerpt truncated]

## Selected Source Inventory

- `README.md`
- `package.json`
- `src/index.ts`
- `src/providers/pexels.ts`
- `src/providers/types.ts`
- `src/providers/unsplash.ts`
- `src/tools/extract-image-query.ts`
- `src/tools/get-best-image.ts`
- `src/tools/resolve-image-attribution.ts`
- `src/tools/search-images-batch.ts`
- `src/tools/search-images.ts`
- `src/utils/normalize.ts`

| File | Evidence role | Size |
|---|---|---|
| `README.md` | README/product and usage evidence | 12124 bytes |
| `package.json` | package/runtime metadata | 1054 bytes |
| `src/index.ts` | implementation surface | 4377 bytes |
| `src/providers/pexels.ts` | implementation surface | 1650 bytes |
| `src/providers/types.ts` | implementation surface | 971 bytes |
| `src/providers/unsplash.ts` | implementation surface | 2053 bytes |
| `src/tools/extract-image-query.ts` | implementation surface | 535 bytes |
| `src/tools/get-best-image.ts` | implementation surface | 801 bytes |
| `src/tools/resolve-image-attribution.ts` | implementation surface | 768 bytes |
| `src/tools/search-images-batch.ts` | implementation surface | 1103 bytes |
| `src/tools/search-images.ts` | implementation surface | 2138 bytes |
| `src/utils/normalize.ts` | implementation surface | 1930 bytes |

Source: `[README.md:1-120]()`

---

<a id='entrypoints'></a>

## Entrypoints and Runtime Surface

### Related Pages

Related topics: [Repository Overview](#overview), [Architecture Evidence Map](#architecture), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/README.md)
- [package.json](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/package.json)
- [src/index.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/index.ts)
- [src/providers/pexels.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/pexels.ts)
- [src/providers/types.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/types.ts)
- [src/providers/unsplash.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/unsplash.ts)
- [src/tools/extract-image-query.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/extract-image-query.ts)
- [src/tools/get-best-image.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/get-best-image.ts)
- [src/tools/resolve-image-attribution.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/resolve-image-attribution.ts)
- [src/tools/search-images-batch.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images-batch.ts)
- [src/tools/search-images.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images.ts)
- [src/utils/normalize.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/utils/normalize.ts)
</details>

# Entrypoints and Runtime Surface

The files below are the highest-signal candidates for how the project is installed, started, configured, or embedded. Treat this as an evidence map, not an inferred API contract.

| File | Evidence role | Size |
|---|---|---|
| `README.md` | README/product and usage evidence | 12124 bytes |
| `package.json` | package/runtime metadata | 1054 bytes |
| `src/index.ts` | implementation surface | 4377 bytes |
| `src/providers/pexels.ts` | implementation surface | 1650 bytes |
| `src/providers/types.ts` | implementation surface | 971 bytes |
| `src/providers/unsplash.ts` | implementation surface | 2053 bytes |
| `src/tools/extract-image-query.ts` | implementation surface | 535 bytes |
| `src/tools/get-best-image.ts` | implementation surface | 801 bytes |
| `src/tools/resolve-image-attribution.ts` | implementation surface | 768 bytes |
| `src/tools/search-images-batch.ts` | implementation surface | 1103 bytes |
| `src/tools/search-images.ts` | implementation surface | 2138 bytes |
| `src/utils/normalize.ts` | implementation surface | 1930 bytes |

Source: `[README.md:1-120](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/README.md)`

---

<a id='architecture'></a>

## Architecture Evidence Map

### Related Pages

Related topics: [Repository Overview](#overview), [Entrypoints and Runtime Surface](#entrypoints), [Operations and Verification Boundaries](#operations)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/README.md)
- [package.json](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/package.json)
- [src/index.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/index.ts)
- [src/providers/pexels.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/pexels.ts)
- [src/providers/types.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/types.ts)
- [src/providers/unsplash.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/unsplash.ts)
- [src/tools/extract-image-query.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/extract-image-query.ts)
- [src/tools/get-best-image.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/get-best-image.ts)
- [src/tools/resolve-image-attribution.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/resolve-image-attribution.ts)
- [src/tools/search-images-batch.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images-batch.ts)
- [src/tools/search-images.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images.ts)
- [src/utils/normalize.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/utils/normalize.ts)
</details>

# Architecture Evidence Map

This section maps source paths into likely architectural areas based on repository layout only. Claims that require execution are intentionally not made here.

- `.`: `README.md`, `package.json`
- `src`: `src/index.ts`, `src/providers/pexels.ts`, `src/providers/types.ts`, `src/providers/unsplash.ts`, `src/tools/extract-image-query.ts`, `src/tools/get-best-image.ts`

Source: `[package.json:1-120](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/package.json)`

---

<a id='operations'></a>

## Operations and Verification Boundaries

### Related Pages

Related topics: [Repository Overview](#overview), [Entrypoints and Runtime Surface](#entrypoints), [Architecture Evidence Map](#architecture)

<details>
<summary>Relevant source files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/README.md)
- [package.json](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/package.json)
- [src/index.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/index.ts)
- [src/providers/pexels.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/pexels.ts)
- [src/providers/types.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/types.ts)
- [src/providers/unsplash.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/providers/unsplash.ts)
- [src/tools/extract-image-query.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/extract-image-query.ts)
- [src/tools/get-best-image.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/get-best-image.ts)
- [src/tools/resolve-image-attribution.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/resolve-image-attribution.ts)
- [src/tools/search-images-batch.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images-batch.ts)
- [src/tools/search-images.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/tools/search-images.ts)
- [src/utils/normalize.ts](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/utils/normalize.ts)
</details>

# Operations and Verification Boundaries

Operational guidance is limited to files that are present in the repository. Before using this project in an agent workflow, verify install, quickstart, and runtime behavior in a sandbox.

- Documentation signal: `README.md`
- Runtime/package signal: `package.json`
- Source inspection signal: `src/index.ts`
- Source inspection signal: `src/providers/pexels.ts`
- Source inspection signal: `src/providers/types.ts`
- Source inspection signal: `src/providers/unsplash.ts`
- Source inspection signal: `src/tools/extract-image-query.ts`
- Source inspection signal: `src/tools/get-best-image.ts`
- Source inspection signal: `src/tools/resolve-image-attribution.ts`
- Source inspection signal: `src/tools/search-images-batch.ts`

Source: `[src/index.ts:1-120](https://github.com/ahmaddioxide/image-resolver-mcp/blob/main/src/index.ts)`

---

---

## Doramagic Pitfall Log

Project: ahmaddioxide/image-resolver-mcp

Summary: Found 7 potential pitfall items; 0 are high/blocking. Highest priority: identity - 仓库名和安装名不一致.

## 1. identity · 仓库名和安装名不一致

- Severity: medium
- Evidence strength: runtime_trace
- Finding: 仓库名 `image-resolver-mcp` 与安装入口 `@ahmaddioxide/mcp-image-resolver` 不完全一致。
- User impact: 用户照着仓库名搜索包或照着包名找仓库时容易走错入口。
- Suggested check: 在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。
- Reproduction command: `npx @ahmaddioxide/mcp-image-resolver`
- Guardrail action: 页面必须同时展示 repo 名和真实安装入口，避免用户搜索错包。
- Evidence: identity.distribution | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | repo=image-resolver-mcp; install=@ahmaddioxide/mcp-image-resolver

## 2. capability · 能力判断依赖假设

- Severity: medium
- Evidence strength: source_linked
- Finding: README/documentation is current enough for a first validation pass.
- User impact: 假设不成立时，用户拿不到承诺的能力。
- Suggested check: 将假设转成下游验证清单。
- Guardrail action: 假设必须转成验证项；没有验证结果前不能写成事实。
- Evidence: capability.assumptions | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | README/documentation is current enough for a first validation pass.

## 3. maintenance · 维护活跃度未知

- Severity: medium
- Evidence strength: source_linked
- Finding: 未记录 last_activity_observed。
- User impact: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- Suggested check: 补 GitHub 最近 commit、release、issue/PR 响应信号。
- Guardrail action: 维护活跃度未知时，推荐强度不能标为高信任。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | last_activity_observed missing

## 4. security_permissions · 下游验证发现风险项

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: 下游已经要求复核，不能在页面中弱化。
- Suggested check: 进入安全/权限治理复核队列。
- Guardrail action: 下游风险存在时必须保持 review/recommendation 降级。
- Evidence: downstream_validation.risk_items | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | no_demo; severity=medium

## 5. security_permissions · 存在评分风险

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: 风险会影响是否适合普通用户安装。
- Suggested check: 把风险写入边界卡，并确认是否需要人工复核。
- Guardrail action: 评分风险必须进入边界卡，不能只作为内部分数。
- Evidence: risks.scoring_risks | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | no_demo; severity=medium

## 6. maintenance · issue/PR 响应质量未知

- Severity: low
- Evidence strength: source_linked
- Finding: issue_or_pr_quality=unknown。
- User impact: 用户无法判断遇到问题后是否有人维护。
- Suggested check: 抽样最近 issue/PR，判断是否长期无人处理。
- Guardrail action: issue/PR 响应未知时，必须提示维护风险。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | issue_or_pr_quality=unknown

## 7. maintenance · 发布节奏不明确

- Severity: low
- Evidence strength: source_linked
- Finding: release_recency=unknown。
- User impact: 安装命令和文档可能落后于代码，用户踩坑概率升高。
- Suggested check: 确认最近 release/tag 和 README 安装命令是否一致。
- Guardrail action: 发布节奏未知或过期时，安装说明必须标注可能漂移。
- Evidence: evidence.maintainer_signals | mcp_registry:io.github.ahmaddioxide/image-resolver:0.2.0 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.ahmaddioxide%2Fimage-resolver/versions/0.2.0 | release_recency=unknown

<!-- canonical_name: ahmaddioxide/image-resolver-mcp; human_manual_source: deepwiki_human_wiki -->
