关于 Unsplash MCP Server
Unsplash MCP Server 为 AI 助手提供 Unsplash 照片、合集、主题、用户和统计信息的查询能力。它包含署名和下载追踪功能,登录 OAuth 后还可管理个人资料、合集及照片元数据。
主要功能
- 01搜索和获取照片、合集与用户
- 02浏览主题及统计数据
- 03提供署名并追踪下载
- 04搜索默认启用高内容过滤
- 05OAuth 登录后管理资料和合集
适用场景
- 01查找符合条件的照片并生成署名
- 02搜索主题合集或用户
- 03记录照片的实际下载事件
- 04维护个人资料、合集和照片元数据
MCP 相关
向 MCP 客户端提供 29 个工具,涵盖照片、搜索、用户、合集、主题、统计和个人资料;OAuth 登录后可使用 8 个写入或个人账户工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @hanoak/unsplash-mcp-serverUNSPLASH_ACCESS_KEY密钥Your Unsplash API access key (sent as Authorization: Client-ID).UNSPLASH_APP_NAMERegistered Unsplash app name, used as the attribution utm_source.LOG_LEVELLog verbosity; all logs go to stderr.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
21收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 否 | 将随机选择范围限制为与此搜索词匹配的照片。 |
| topics | string | 否 | 以逗号分隔的主题 ID/别名,用于缩小选择范围。 |
| username | string | 否 | 将选择范围限制为此 Unsplash 用户名发布的照片。 |
| collections | string | 否 | 以逗号分隔的公开合集 ID,用于缩小选择范围。 |
| orientation | enum | 否 | 按照片方向筛选。landscape | portrait | squarish |
| content_filter | enum | 否 | 内容安全筛选级别。默认值为 "high",用于排除可能不安全的内容。low | high |
详细介绍
unsplash-mcp-server
面向生产环境的 Model Context Protocol(MCP)Unsplash API 服务。它为 AI 助手(Claude Desktop、Claude Code、Cursor、VS Code、Windsurf 和任何 MCP 客户端)提供工具,用于搜索和获取 Unsplash 照片、合集、主题、用户及统计数据,并内置符合 Unsplash 指南的功能(可直接使用的署名信息和下载跟踪)。通过 OAuth 登录一次后,还可管理自己的个人资料、合集和照片元数据。
重要
非官方项目。 本项目与 Unsplash 无关,未经其认可或赞助。“Unsplash”是其各自所有者的商标。使用本项目时,您使用的是自己的 Unsplash API 账号,并有责任遵守 Unsplash API 条款和指南。
目录
- 功能
- 快速开始
- 交互示例
- 配置
- OAuth 登录(可选)
- 工具
- 提示词示例
- 署名和合规
- 速率限制
- Unsplash 文本的处理
- 隐私和安全
- 故障排除
- 常见问题
- 要求
- 兼容性
- 路线图
- 贡献
- 联系和社区
- 许可证
功能
- 29 个工具,涵盖照片、搜索、用户、合集、主题、统计数据和个人资料——开箱即用时有 21 个只读工具,登录后还可使用 8 个写入/
me工具(登录)。 - 内置合规功能——每张照片都附带可直接使用的署名信息(纯文本和带 UTM 参数的 HTML),并提供专用的
unsplash_track_download工具,满足下载跟踪指南要求。 - 内容安全——搜索和随机照片默认使用
content_filter=high。 - 灵活的图片 URL——每张照片都返回
raw/full/regular/small/thumb尺寸,以及可用于自定义尺寸的rawimgix 基础 URL(?w=&h=&q=&fm=&fit=)。 - 节省令牌的输出——将完整的 Unsplash 响应精简为紧凑格式(URL 和元数据以文本形式呈现,不包含 base64 图片数据),以缩小模型上下文。
- 健壮可靠——以 MCP
isError结果返回类型化错误,便于模型恢复;并支持重试/退避、超时、403每小时限额处理和速率限制提示。 - 安全可靠——所有错误输出都会隐藏访问密钥;对下载 URL 实施 SSRF 防护,并提供不可信文本处理指南,以防御间接提示注入。
- 精简现代——ESM、Node 20+、通过
npx即可免安装运行,且不收集遥测数据。
快速开始
1. 获取 Unsplash 访问密钥
在 unsplash.com/developers 注册应用 → 选择 New Application → 接受 API 条款 → 复制应用的 Access Key(不是 Secret Key)。新应用默认使用 Demo 级别(每小时 50 次请求);Production 级别(每小时 5,000 次请求)需要 Unsplash 在应用控制面板中审核。请参阅速率限制。
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": {
"unsplash": {
"command": "npx",
"args": ["-y", "@hanoak/unsplash-mcp-server"],
"env": {
"UNSPLASH_ACCESS_KEY": "your_access_key",
"UNSPLASH_APP_NAME": "your_registered_app_name"
}
}
}
}
重启客户端。请参阅配置,了解所有受支持的变量。
其他客户端(Claude Code、Cursor、VS Code、Windsurf、通用 stdio)
Claude Code(CLI):
claude mcp add unsplash \
--env UNSPLASH_ACCESS_KEY=your_access_key \
--env UNSPLASH_APP_NAME=your_registered_app_name \
-- npx -y @hanoak/unsplash-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": {
"unsplash": {
"command": "npx",
"args": ["-y", "@hanoak/unsplash-mcp-server"],
"env": {
"UNSPLASH_ACCESS_KEY": "your_access_key",
"UNSPLASH_APP_NAME": "your_registered_app_name"
}
}
}
}
其他任何 MCP 客户端 — 使用 stdio 运行服务:
UNSPLASH_ACCESS_KEY=your_access_key npx -y @hanoak/unsplash-mcp-server
将客户端的 stdio 传输配置为 command: npx、args: ["-y", "@hanoak/unsplash-mcp-server"],并通过 env 传递密钥。
3. 试用
重启客户端并询问:
“在 Unsplash 上帮我找一张山景照片,并显示署名信息。”
交互示例
一个典型的流程:模型调用 unsplash_search_photos,挑选一条结果,展示图片及其署名,并在实际使用照片时调用 unsplash_track_download。
你: 找一张雾气笼罩的松树林风景照,并注明摄影师。
助手: (调用
unsplash_search_photos,参数为query: "foggy pine forest"、orientation: "landscape",挑选最佳结果,然后调用unsplash_track_download并传入其download_location) 这是一个很好的匹配结果——照片由 Jane Doe 拍摄,来自 Unsplash——并附有可直接嵌入的署名信息和图片 URL。
每个工具都会返回精简的 JSON 载荷。以下是单张照片结果的结构(示例值):
工具输出示例
{
"photo": {
"id": "Dwu85P9SOIk",
"description": "brown rocky mountain under blue sky during daytime",
"width": 6000,
"height": 4000,
"color": "#734940",
"blur_hash": "L6Pj0^i_.AyE_3t7t7R**0o#DgR4",
"urls": {
"raw": "https://images.unsplash.com/photo-1465…?ixid=…",
"full": "https://images.unsplash.com/photo-1465…?ixid=…&q=85",
"regular": "https://images.unsplash.com/photo-1465…?ixid=…&w=1080",
"small": "https://images.unsplash.com/photo-1465…?ixid=…&w=400",
"thumb": "https://images.unsplash.com/photo-1465…?ixid=…&w=200"
},
"photo_page": "https://unsplash.com/photos/Dwu85P9SOIk",
"download_location": "https://api.unsplash.com/photos/Dwu85P9SOIk/download?ixid=…",
"photographer": {
"name": "Jane Doe",
"username": "janedoe",
"profile": "https://unsplash.com/@janedoe"
},
"attribution": {
"text": "Photo by Jane Doe on Unsplash",
"html": "Photo by <a href=\"https://unsplash.com/@janedoe?utm_source=your_app&utm_medium=referral\">Jane Doe</a> on <a href=\"https://unsplash.com/?utm_source=your_app&utm_medium=referral\">Unsplash</a>",
"photographerName": "Jane Doe",
"photographerUrl": "https://unsplash.com/@janedoe?utm_source=your_app&utm_medium=referral",
"unsplashUrl": "https://unsplash.com/?utm_source=your_app&utm_medium=referral"
}
},
"rate_limit": { "limit": 50, "remaining": 49 }
}
每个工具结果都包含一个 rate_limit 对象(limit、remaining),其值取自 Unsplash 响应标头。列表和搜索工具会将结果包装在 photos/collections/users/topics 数组中,并包含分页字段(total、total_pages、count、page、per_page)。
所有配置均通过环境变量完成——无需配置文件,也没有用于指定机密信息的标志。
| 环境变量 | 必需 | 说明 |
|---|---|---|
UNSPLASH_ACCESS_KEY | 是 | 你的 Unsplash API 访问密钥。如果缺失或为空,服务会在启动时退出并显示清晰的提示信息。 |
UNSPLASH_APP_NAME | 建议设置 | 你注册的 Unsplash 应用名称,用作署名中的 utm_source。如果未设置,则使用通用值(并在启动时发出警告)。 |
UNSPLASH_SECRET_KEY | 仅用于 login | 你的 Unsplash 应用密钥。仅运行 login 时需要——参见 OAuth 登录。 |
UNSPLASH_OAUTH_REDIRECT_URI | 仅用于 login | 覆盖 login 使用的默认值 http://localhost:8734/callback。必须与 Unsplash 应用中注册的重定向 URI 匹配。 |
LOG_LEVEL | 否 | debug | info | warn | error(默认值为 info)。所有日志都写入 stderr;stdout 仅传输 MCP 协议。 |
支持 CLI 标志:--version 和 --help(例如 npx @hanoak/unsplash-mcp-server --version)。login/logout 是子命令,不是标志——见下文。
OAuth 登录(可选)
只需设置 UNSPLASH_ACCESS_KEY,即可开箱使用 21 个核心工具。若还要使用 8 个写入/me 工具(更新个人资料、管理合集、编辑照片元数据),请通过 OAuth 登录一次:
-
在 unsplash.com/oauth/applications 的应用页面中,将
http://localhost:8734/callback添加为重定向 URI,并复制 Secret key。 -
在 shell 中设置
UNSPLASH_ACCESS_KEY和UNSPLASH_SECRET_KEY(不能只在 MCP 客户端配置中设置——login需要从终端运行)。 -
运行:
npx @hanoak/unsplash-mcp-server login这会打开浏览器并跳转到 Unsplash 的授权页面,在短暂运行的本地服务上接收重定向,将授权码换成用户访问令牌,并将其保存到
~/.config/unsplash-mcp-server/credentials.json(文件权限仅所有者可访问)。Unsplash 用户访问令牌 不会过期,因此只需执行一次——无需定期重新授权。 -
重启 MCP 客户端。现在即可使用 8 个写入/
me工具;无论是否登录,21 个只读工具都不受影响。
随时运行 npx @hanoak/unsplash-mcp-server logout 即可移除已保存的令牌。若要在服务端撤销令牌,请在 Unsplash 控制面板中重新生成应用密钥。
工具
所有工具均使用命名空间 unsplash_*。大多数工具均为只读(标注为 readOnlyHint: true);例外情况是 unsplash_track_download(用于登记下载事件)以及下面列出的 8 个写入/me 工具,这些工具均标记为非只读,并且需要先通过 OAuth 登录。参数与 Unsplash API 对应;per_page 和统计数据中的 quantity 上限为 30,page 从 1 开始计数。
| 领域 | 工具 |
|---|---|
| 照片 | random_photo, list_photos, get_photo, photo_statistics, track_download, update_photo 🔒 |
| 搜索 | search_photos, search_collections, search_users |
| 用户 | get_user, user_photos, user_collections, user_statistics |
| 合集 | list_collections, get_collection, collection_photos, related_collections, create_collection 🔒, update_collection 🔒, delete_collection 🔒, add_photo_to_collection 🔒, remove_photo_from_collection 🔒 |
| 主题 | list_topics, get_topic, topic_photos |
| 统计数据 | total_stats, month_stats |
| 我的账户 | get_my_profile 🔒, update_my_profile 🔒 |
🔒 = 需要先通过 OAuth 登录(login)。
工具参考
照片
| 工具 | 参数 | 描述 | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | `unsplash_random_photo` | `query?`、`orientation?`(`landscape`\|`portrait`\|`squarish`)、`content_filter?`(`low`\|`high`,默认值为 `high`)、`collections?`、`topics?`、`username?` | 随机获取一张照片,可按条件筛选。 | | `unsplash_list_photos` | `page?`(默认值为 1)、`per_page?`(默认值为 10,最大值为 30) | 分页获取最新精选照片。 | | `unsplash_get_photo` | `id` **(必填)** | 按 ID 或 slug 获取单张照片的完整详情。 | | `unsplash_photo_statistics` | `id` **(必填)**、`quantity?`(天数,默认值为 30,最大值为 30) | 获取某张照片在 N 天内的下载量和浏览量。 | | `unsplash_track_download` | `download_location` **(必填)** — 来自之前照片结果的 `download_location` URL(必须是 `https://api.unsplash.com` URL) | 实际使用时登记下载,并返回一个全新的可用下载 URL。 | | `unsplash_update_photo` 🔒 | `id` **(必填)**、`show_on_profile?`、`description?`、`tags?`(逗号分隔)、`location?`(`city`/`country`/`name`/`latitude`/`longitude`)、`exif?`(`make`/`model`/`exposure_time`/`aperture_value`/`focal_length`/`iso_speed_ratings`) | 更新你拥有的照片的元数据。仅更改你提供的字段。 |搜索
| 工具 | 参数 | 描述 | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | `unsplash_search_photos` | `query` **(必填)**、`page?`、`per_page?`、`order_by?`(`latest`\|`editorial`\|`relevant`)、`orientation?`、`color?`(11 种命名颜色,例如 `blue`)、`content_filter?`(默认值为 `high`)、`collections?`、`lang?` | 使用丰富的筛选条件搜索照片。 | | `unsplash_search_collections` | `query` **(必填)**、`page?`、`per_page?` | 按关键词搜索合集。 | | `unsplash_search_users` | `query` **(必填)**、`page?`、`per_page?` | 按关键词搜索用户。 |用户
| 工具 | 参数 | 描述 |
|---|---|---|
unsplash_get_user | username (必填) | 用户的公开个人资料。 |
unsplash_user_photos | username (必填)、page?、per_page?、order_by?(latest|oldest|popular|views|downloads)、orientation? | 用户的照片,支持分页。 |
unsplash_user_collections | username (必填)、page?、per_page? | 用户的合集,支持分页。 |
unsplash_user_statistics | username (必填)、quantity?(天数,默认值为 30,最大值为 30) | 用户在 N 天内的下载量和浏览量总计。 |
合集
| 工具 | 参数 | 描述 | | ------------------------------------------ | --------------------------------------------------------- | ------------------------------------------------------ | | `unsplash_list_collections` | `page?`, `per_page?` | 最新的精选合集。 | | `unsplash_get_collection` | `id` **(必填)** | 根据 ID 获取单个合集。 | | `unsplash_collection_photos` | `id` **(必填)**、`page?`、`per_page?`、`orientation?` | 分页获取合集中的照片。 | | `unsplash_related_collections` | `id` **(必填)** | 获取与指定合集相关的合集。 | | `unsplash_create_collection` 🔒 | `title` **(必填)**、`description?`、`private?` | 创建一个归你所有的新合集。 | | `unsplash_update_collection` 🔒 | `id` **(必填)**、`title?`、`description?`、`private?` | 更新一个归你所有的合集。仅更改你传入的字段。 | | `unsplash_delete_collection` 🔒 | `id` **(必填)** | 永久删除一个归你所有的合集。此操作无法撤销。 | | `unsplash_add_photo_to_collection` 🔒 | `id` **(必填)**、`photo_id` **(必填)** | 将照片添加到归你所有的合集。 | | `unsplash_remove_photo_from_collection` 🔒 | `id` **(必填)**、`photo_id` **(必填)** | 从归你所有的合集中移除照片。 |我(需要通过 OAuth 登录)
| 工具 | 参数 | 描述 |
|---|---|---|
unsplash_get_my_profile 🔒 | (无) | 你自己的个人资料,包括私密字段(电子邮件、剩余上传次数)。 |
unsplash_update_my_profile 🔒 | username?、first_name?、last_name?、email?、url?、location?、bio?、instagram_username? | 更新你自己的个人资料。仅更改你传入的字段。 |
主题与统计信息
| 工具 | 参数 | 说明 | | ------------------------ | ------------------------------------------------------------------------------------------------------ | ----------------------------- | | `unsplash_list_topics` | `page?`、`per_page?`、`order_by?`(`featured`\|`latest`\|`oldest`\|`position`)、`ids?`(逗号分隔) | 精选主题,支持分页。 | | `unsplash_get_topic` | `id` **(必填)** — ID 或 slug(例如 `nature`、`wallpapers`) | 单个主题。 | | `unsplash_topic_photos` | `id` **(必填)**、`page?`、`per_page?`、`orientation?`、`order_by?`(`latest`\|`oldest`\|`popular`) | 主题中的照片,支持分页。 | | `unsplash_total_stats` | _(无)_ | Unsplash 全站总量(照片、下载量等)。 | | `unsplash_month_stats` | _(无)_ | Unsplash 过去 30 天的全站总量。 |输出格式
工具返回经过精简、节省 token 的 JSON,而非原始 Unsplash 响应:
- 照片 →
id、description、width/height、color、blur_hash、urls(raw/full/regular/small/thumb)、photo_page、download_location、photographer,以及可直接使用的attribution对象。参见交互示例。 - 用户 →
id、username、name、bio、location、profile_url、profile_image、total_photos、total_collections。 - 合集 / 主题 → 标题、说明、数量、页面链接、策展人/所有者,以及精简的
cover_photo。 - 每个结果都包含
rate_limit(limit、remaining);列表/搜索结果还会包含分页字段。
资源与提示词
除了工具,服务还会提供:
-
资源 — 简明指南,客户端可将其作为上下文引入:
unsplash://guides/attribution— 署名、下载追踪、热链和内容安全。unsplash://guides/oauth-setup— 如何登录以使用 8 个写入/me工具。unsplash://guides/prompts— 针对特定任务,应使用下方的哪些提示词。
-
提示词 — 可供客户端直接展示的现成任务;每个提示词都会展开为一个分步骤的工具调用任务:
提示词 参数 功能 find_photosubject(必填),orientation?搜索一张照片并附上署名。 photo_gallerytheme(必填),count?,orientation?,color?制作一组主题照片(最多 10 张),每张均附上署名。 topic_spotlighttopic(必填),count?展示精选主题中的最佳照片。 photographer_spotlightusername(必填),count?展示摄影师的个人资料及其最受欢迎的作品。 platform_pulse(无) 快速了解 Unsplash 全站统计数据。 curate_collection🔒theme(必填),count?,collection_id?搜索并根据匹配结果创建(或扩展)一个实际的合集。 describe_photo🔒id(必填),description?,tags?为你拥有的照片添加描述/标签。 refresh_profile🔒bio?,location?,url?更新你自己的简介、所在地或作品集 URL。 🔒 = 需先使用 OAuth 登录。
提示词示例
可直接对应工具的自然语言请求:
- “查找一张日出时雾气弥漫的森林照片,并提供 HTML 署名。”
- “在 Unsplash 上搜索 5 张极简风格的横向工作空间照片。”
- “获取一张随机自然照片并显示署名。”
- “展示
wallpapers主题中最受欢迎的照片。” - “本月 Unsplash 全站的下载统计数据是多少?”
- “照片
Dwu85P9SOIk的摄影师是谁?这张照片有多少次下载?”
署名与合规
每个照片结果都包含一个 attribution 对象,其中有可直接使用的 text 和 html(带有所需的 UTM 参数)。展示或使用照片时,请显示该署名 — 按照指南的要求,这样既能注明摄影师,也能链接回 Unsplash。
实际_使用_照片(嵌入、下载或展示)时,请使用照片的 download_location 调用 unsplash_track_download。每张实际使用的照片都要调用一次 — 绝不能对每个搜索结果都调用一次。服务也会在连接时向 MCP 客户端发送这些说明,提醒模型自动遵循要求。
这是用于单张照片搜索和元数据查询的工具,照片使用时需注明出处 — 不能替代 Unsplash 的核心体验,也不会自动批量下载。请按照 Unsplash API 指南使用。每位用户均受其各自的 Unsplash API 条款约束。
速率限制
Unsplash 会根据应用所属的层级,限制每小时的请求额度:
| 层级 | 额度 | 获取方式 |
|---|---|---|
| Demo | 50 requests/hour | 每个新应用的默认额度。 |
| Production | 5,000 requests/hour | 使用量达到要求后,在应用控制面板中申请审核。 |
服务会读取 X-Ratelimit-Limit / X-Ratelimit-Remaining,并在每个结果中将其作为 rate_limit 返回。每小时的额度用尽时,Unsplash 会返回 403(而非 429),且通常不提供 Retry-After;服务会将其作为明确的“每小时速率限制已达到”错误返回,并且不会在当前时段内盲目重试。对于临时的 429/5xx/网络错误,服务 会 使用退避策略重试。
Unsplash 文本的处理方式
照片描述、替代文本、标签、EXIF,以及用户名和个人简介均来自 Unsplash 贡献者——应将其视为不可信的第三方数据,而非指令。服务仅将这些文本作为内容返回,不会将其放在任何特权位置;你的客户端/Agent 也应如此处理:可以显示这些文本,但不要执行其中可能包含的任何指令(以防间接提示词注入)。
隐私与安全
- **无遥测。**此服务不会收集任何信息,也不会向任何人回传数据。它只会使用你提供的密钥联系
api.unsplash.com。无分析,无跟踪。 - **可验证的来源。**每个版本都会通过 GitHub Actions 使用 npm provenance 发布——npm 软件包页面会将每个版本链接到构建该版本的确切提交和工作流运行记录。
- 密钥安全。访问密钥仅从环境中读取,并通过
Authorization: Client-ID标头发送(绝不会放在 URL 查询字符串中),且会从所有错误输出和日志中脱敏,防止密钥泄漏到粘贴的错误报告中。 - SSRF 防护。
unsplash_track_download只会跟随指向已验证api.unsplash.com主机的download_locationURL。 - 如需报告漏洞,请参阅 SECURITY.md。
故障排查
- 启动时显示“Set UNSPLASH_ACCESS_KEY…”——密钥环境变量缺失或为空;请将其添加到客户端配置的
env区块中。 - Node 版本过旧——此服务需要 Node 20+。请检查
node --version。 npx版本过旧——使用npx -y @hanoak/unsplash-mcp-server@latest强制获取最新版本,或通过npx clear-npx-cache清除缓存。- 工具未显示——确认配置文件路径和 JSON 有效,然后完全退出并重新打开客户端。
403/ 速率限制——Demo 层级每小时允许 50 个请求;请等待每小时额度重置,或申请 Production 访问权限。请参阅速率限制。401 Unauthorized——访问密钥错误或来自错误的应用;请从应用控制面板复制 Access Key(而非 Secret Key)。
常见问题
需要付费的 Unsplash 账户吗? 不需要。Unsplash API 免费;只需注册一个应用即可获取访问密钥。更高的吞吐量(Production 层级)通过免费审核获得,并非付费方案。
Access Key 和 Secret Key——该用哪个?
对于 21 个只读工具,只需 Access Key。只有 login(8 个写入/me 工具背后的 OAuth 流程)需要 Secret Key——请参阅OAuth 登录。
它会下载或重新托管图片吗?
不会。它会返回由 Unsplash 托管的图片 URL(可直接使用热链),绝不会重新托管图片或返回 base64 数据块。unsplash_track_download 只会登记下载事件并返回一个新的 URL。
它可以创建合集、点赞照片或编辑我的个人资料吗?
可以,完成登录后即可——包括 unsplash_create_collection 等工具,以及 unsplash_update_photo/unsplash_update_my_profile。(目前尚未将点赞照片作为工具提供。)
它能在 Claude 以外的环境中运行吗? 可以——这是一个标准的 stdio MCP 服务。请参阅客户端设置部分,了解 Claude Code、Cursor、VS Code、Windsurf 和通用 stdio 的设置方法。
要求
- Node.js >= 20(Node 18 已结束生命周期)。
- Unsplash API 访问密钥。
兼容性
| 组件 | 支持情况 |
|---|---|
| Node.js | 20 和 22,已在 CI 中测试;要求 >=20(由 engines 和运行时防护机制强制执行)。 |
| OS | Linux、macOS 和 Windows(均已在 CI 中测试)。 |
| MCP SDK | @modelcontextprotocol/sdk ^1.29;协议版本会在连接时与你的客户端协商。 |
| 传输方式 | stdio(未来版本可能会添加 HTTP/SSE)。 |
路线图
完整详情请见 docs/ROADMAP.md。简而言之:
- v1 (已发布) — 21 个只读工具、署名与下载追踪合规、署名资源,以及
find_photo提示词。 - v2 (已发布) — 通过
login/logoutCLI 和 Unsplash 授权码流程提供 8 个 OAuth 写入/me端点(个人资料、合集、照片元数据)。 - v3 (当前) — 新增 7 个 MCP 提示词,覆盖所有工具领域(请参阅资源与提示词)。曾考虑在此阶段推出
.mcpbDesktop Extension,但已将其移至未来待定范围——npx已能在所有受支持的客户端上运行。
变更记录见 CHANGELOG.md;本项目遵循 Semantic Versioning。
贡献
欢迎贡献——请参阅 CONTRIBUTING.md 和我们的行为准则。其中涵盖本地设置、测试套件、使用 MCP Inspector 手动测试工具,以及版本管理/弃用政策。若要报告漏洞,请参阅 SECURITY.md。
联系与社区
由 Hanoak S 维护。获取帮助或提出功能建议的最快方式是提交 Issue——Issue 公开可查,也能帮助整个社区。其他事宜请联系:
如果这个项目对你有帮助,欢迎在 GitHub 上点一个 ⭐——这有助于其他人发现这个 Unsplash MCP 服务。
许可证
MIT © Hanoak S。与 Unsplash 无关联。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。