关于 Cloudinary Asset Management
Cloudinary Asset Management 是面向管理 Cloudinary 媒体资产的团队和开发者的 MCP 服务,提供资产操作与转换功能,并支持交互式 Apps 和按需发现工具的动态模式。
主要功能
- 01上传、搜索和整理资产
- 02管理图像、视频和文件
- 03转换现有资产
- 04交互式图库、详情和上传 Apps
- 05按需发现工具的动态模式
适用场景
- 01上传并转换产品图片
- 02查找和整理带标签的媒体
- 03为选定资产创建 ZIP 压缩包
- 04查看账户用量统计
MCP 相关
将 Cloudinary Asset Management API 操作作为 MCP 工具开放,包括自定义转换参考和资产转换工具。还支持交互式 MCP Apps 与动态工具发现。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://asset-management.mcp.cloudinary.com/mcpclaude mcp add --transport http cloudinary-asset-management https://asset-management.mcp.cloudinary.com/mcp{"mcpServers":{"cloudinary-asset-management":{"type":"http","url":"https://asset-management.mcp.cloudinary.com/mcp"}}}在 Cursor 中打开{"servers":{"cloudinary-asset-management":{"type":"http","url":"https://asset-management.mcp.cloudinary.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"cloudinary-asset-management":{"type":"http","url":"https://asset-management.mcp.cloudinary.com/mcp"}}}{"mcpServers":{"cloudinary-asset-management":{"serverUrl":"https://asset-management.mcp.cloudinary.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://asset-management.mcp.cloudinary.com/mcp需要授权工具
详细介绍
Cloudinary Asset Management MCP Server
概要
目录
安装
MCP 服务需要 Node.js 20 或更高版本。
Claude Desktop
使用预构建的 mcp-server.mcpb 文件,将 MCP 服务安装为桌面扩展:
只需将 mcp-server.mcpb 文件拖放到 Claude Desktop,即可安装扩展。
MCP 捆绑包包含 MCP 服务及所有必要的配置。安装后,无需额外设置即可使用该服务。
说明
MCP 捆绑包提供了一种简化的 MCP 服务打包和分发方式。了解有关桌面扩展的更多信息。
Cursor
或手动安装:
- 打开 Cursor 设置
- 选择 Tools and Integrations
- 选择 New MCP Server
- 如果配置文件为空,请将以下 JSON 粘贴到 MCP Server Configuration 中:
{
"command": "npx",
"args": [
"@cloudinary/asset-management-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
Claude Code CLI
claude mcp add CloudinaryAssetMgmt -- npx -y @cloudinary/asset-management-mcp start --api-key --api-secret --cloud-name
Gemini
gemini mcp add CloudinaryAssetMgmt -- npx -y @cloudinary/asset-management-mcp start --api-key --api-secret --cloud-name
Windsurf
最新信息请参阅 Windsurf 官方文档。
- 打开 Windsurf 设置
- 在左侧菜单中选择 Cascade
- 点击
Manage MCPs。(要管理 MCP,您需要登录 Windsurf 账号) - 点击
View raw config,打开 MCP 配置文件。 - 如果配置文件为空,请粘贴完整的 JSON
{
"command": "npx",
"args": [
"@cloudinary/asset-management-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
VS Code
或手动安装:
最新信息请参阅 VS Code 官方文档。
- 打开命令面板
- 搜索并打开
MCP: Open User Configuration。这会打开 mcp.json 文件 - 如果配置文件为空,请粘贴完整的 JSON
{
"command": "npx",
"args": [
"@cloudinary/asset-management-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
通过 npm 使用 Stdio 安装
要启动 MCP 服务,请运行:npx @cloudinary/asset-management-mcp start --api-key --api-secret --cloud-name
要查看完整的服务参数列表,请运行:
npx @cloudinary/asset-management-mcp --help
配置
环境变量
MCP 服务支持以下环境变量:
| 变量 | 描述 | 必需 |
|---|---|---|
CLOUDINARY_CLOUD_NAME | 您的 Cloudinary 云名称 | 是 |
CLOUDINARY_API_KEY | 您的 Cloudinary API 密钥 | 是 |
CLOUDINARY_API_SECRET | 您的 Cloudinary API 密钥 | 是 |
CLOUDINARY_URL | 完整的 Cloudinary URL(可替代单独设置的变量) | 否 |
CLOUDINARY_COLLECT_HEADERS | 收集 API 响应标头(见下文) | 否 |
CLOUDINARY_MCP_APPS | 覆盖 MCP Apps 默认设置(见 MCP Apps) | 否 |
CLOUDINARY_URL 格式
您可以使用单个 CLOUDINARY_URL,而不必单独设置变量:
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
响应标头收集
您可以将服务器配置为在工具输出中包含 Cloudinary API 响应标头(例如 x-request-id 和速率限制信息)。这有助于调试和监控。
设置 CLOUDINARY_COLLECT_HEADERS,以控制要收集的标头:
# Collect all response headers
CLOUDINARY_COLLECT_HEADERS=true
# Collect specific headers by exact name (comma-separated)
CLOUDINARY_COLLECT_HEADERS=x-request-id,x-featureratelimit-limit,x-featureratelimit-remaining
# Mix exact names, prefix matching, and regex matching
CLOUDINARY_COLLECT_HEADERS=x-request-id,prefix:x-featureratelimit-
标头匹配规范
逗号分隔列表中的每个条目都会与响应标头名称进行匹配:
| 格式 | 示例 | 行为 |
|---|---|---|
| 精确名称 | x-request-id | 仅匹配 x-request-id |
prefix:<value> | prefix:x-featureratelimit- | 匹配任何以 x-featureratelimit- 开头的标头 |
regex:<pattern> | regex:ratelimit | 匹配名称中包含 ratelimit 的任何标头 |
您也可以通过 CLOUDINARY_URL 查询参数设置此项:
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME?collect_headers=true
启用后,收集的标头会显示在工具响应的 _headers 字段中。未设置时,不会收集任何标头,响应保持不变。
MCP Apps
服务器可以提供交互式 MCP UI 应用(与 io.modelcontextprotocol/ui 规范对齐),供宿主与工具结果一同呈现,例如列表结果的资源库、单个资源的详情视图,以及上传界面。
默认情况下,应用处于启用状态。使用 --mcp-apps 标志(start 和 serve 均可用)或 CLOUDINARY_MCP_APPS 环境变量可覆盖此行为:
| 值 | 效果 |
|---|---|
| 未设置 | 默认 — 启用所有应用 |
不带值的 --mcp-apps、all 或 true | 启用所有应用(与默认行为相同) |
none 或 false | 禁用所有应用(紧急开关) |
逗号分隔的子集,例如 asset-gallery,asset-details | 仅启用列出的应用 |
可用的应用名称:asset-gallery、asset-details、asset-upload。
# Disable all apps
npx @cloudinary/asset-management-mcp serve --mcp-apps none
# Enable only the gallery
npx @cloudinary/asset-management-mcp start --mcp-apps asset-gallery
# Disable via env var
CLOUDINARY_MCP_APPS=none npx @cloudinary/asset-management-mcp start
优先级:CLI 标志 > 环境变量 > 内置默认值。
身份验证
MCP 服务使用您的 Cloudinary API 密钥和密钥进行身份验证:
{
"env": {
"CLOUDINARY_CLOUD_NAME": "demo",
"CLOUDINARY_API_KEY": "123456789012345",
"CLOUDINARY_API_SECRET": "abcdefghijklmnopqrstuvwxyz12"
}
}
可用工具
MCP 服务将 Cloudinary 的 Asset Management API 作为工具提供。使用您的 AI 应用发现并调用可用工具,以上传、管理、搜索和转换媒体资源。
使用示例
示例 1:上传并转换图像
1. Upload a local image: "Upload file:///Users/me/photo.jpg to Cloudinary as 'hero-image'"
2. Transform it: "Transform asset 'hero-image' with transformations 'c_fill,w_800,h_600/e_sharpen'"
3. Get details: "Show me details for asset with ID [asset-id]"
示例 2:搜索和整理资源
1. Search for images: "Find all images with tag 'product' uploaded in the last 7 days"
2. Create folder: "Create a new folder called 'summer-2024-products'"
3. List assets: "Show me all video assets in the 'marketing' folder"
示例 3:生成归档文件
1. Get transformation docs: "Show me the Cloudinary transformation reference"
2. Apply transformations: "Transform 'banner' asset with 'c_scale,w_1200/f_auto,q_auto'"
3. Create archive: "Generate a ZIP archive of all images with tag 'export-ready'"
示例 4:资源管理工作流
1. Upload multiple files: "Upload all images from folder /assets/new-products/"
2. Add tags: "Update asset [asset-id] and add tags 'featured,homepage'"
3. Get usage stats: "Show my Cloudinary account usage statistics"
自定义工具
此 MCP 服务包含两个强大的自定义工具:
get-tx-reference
获取完整的 Cloudinary 转换参考文档。
使用场景:
- 创建或修改转换之前
- 用户询问图像/视频效果、调整大小、裁剪或滤镜时
示例:
Use get-tx-reference to learn about available transformations
transform-asset
使用 Cloudinary 的显式 API 对现有资源应用转换。
参数:
publicId- 资源的公开 IDtransformations- 转换字符串(例如,c_fill,w_300,h_200)resourceType- 类型:image、video或raw(默认值:image)invalidate- 使 CDN 缓存失效(默认值:false)
示例:
Transform asset "sample" with transformations "c_fill,w_500,h_500/e_sepia"
渐进式发现
包含大量工具的 MCP 服务可能会占满大模型的上下文窗口,导致 Token 用量增加,并使工具选择变得混乱。动态模式通过仅公开一小组元工具,让 Agent 按需逐步发现并调用工具,从而解决这一问题。
要启用动态模式,请在启动服务时传入 --mode dynamic 标志:
{
"mcpServers": {
"CloudinaryAssetMgmt": {
"command": "npx",
"args": ["@cloudinary/asset-management-mcp", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}
在动态模式下,服务只会注册以下元工具,而不是注册每个独立工具:
list_tools:列出所有可用工具及其名称和描述。describe_tool_input:按名称返回一个或多个工具的输入架构。execute_tool:根据名称及其参数执行工具。list_scopes:列出服务上可用的范围。
这种方式可大幅减少每次请求发送给大模型的 Token 数量,尤其适用于工具数量较多的服务。
你可以将动态模式与范围和工具筛选器结合使用:
{
"mcpServers": {
"CloudinaryAssetMgmt": {
"command": "npx",
"args": ["@cloudinary/asset-management-mcp", "start", "--mode", "dynamic", "--scope", "admin"],
// ... other server arguments
}
}
}
开发
从源代码构建
先决条件
- Node.js v20 或更高版本
- npm、pnpm、bun 或 yarn
构建步骤
# Clone the repository
git clone https://github.com/cloudinary/asset-management-mcp.git
cd asset-management-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run locally
npm start
项目结构
asset-management-mcp/
├── src/
│ ├── hooks/ # SDK hooks (manual)
│ │ ├── cloudinaryAuthHook.ts # Auth & file:// handling
│ │ ├── customHeadersHook.ts # Inject custom request headers
│ │ ├── responseHeadersHook.ts # Collect response headers
│ │ ├── userAgentHook.ts # Build User-Agent string
│ │ └── registration.ts # Hook registration
│ ├── mcp-server/ # MCP server implementation
│ │ ├── server.ts # Main server (auto-generated)
│ │ ├── server.extensions.ts # Custom tools & app wiring (manual)
│ │ ├── tools/ # Generated tool wrappers
│ │ └── apps/ # MCP UI Apps (manual)
│ │ ├── config.ts # App registry & --mcp-apps parsing
│ │ ├── cli-flag.ts # stricli flag definition
│ │ ├── extensions.ts # Resource-template registration
│ │ ├── uri.ts # App URI helpers / tool-name injection
│ │ ├── tool-hooks.ts # Per-tool app hooks
│ │ ├── app-shared.ts # Shared app utilities
│ │ ├── asset-gallery-app.ts # List results gallery UI
│ │ ├── asset-details-app.ts # Single-asset detail UI
│ │ └── asset-upload-app.ts # Upload UI
│ ├── funcs/ # API function implementations
│ └── models/ # Type definitions
├── .github/
│ └── workflows/ # CI/CD workflows
└── .speakeasy/ # Speakeasy configuration
贡献
我们欢迎为此 MCP 服务贡献代码,但大部分代码都是根据 Cloudinary API 规范通过程序生成的。对生成文件所做的任何手动更改都会在下次生成时被覆盖——请在以下手动扩展点中进行修改。
你可以贡献的内容:
- 在
src/mcp-server/server.extensions.ts中添加自定义工具和服务配置 - 在
src/mcp-server/apps/中开发 MCP UI 应用(图库、详情、上传及新应用) - 在
src/hooks/中添加 SDK 钩子(身份验证、自定义标头、响应标头、用户代理) - 改进文档(此 README、手动维护文件中的 JSDoc)
- 提交 Bug 报告和功能请求
生成的文件(请勿编辑):
src/mcp-server/server.tssrc/mcp-server/tools/*.tssrc/funcs/*.tssrc/models/*.ts
如果无法避免修改生成文件,请优先更新上游规范或 .speakeasy/ 中的 Speakeasy 配置,以确保更改在重新生成后仍然保留。
我们期待听到你的反馈。欢迎提交包含概念验证的 PR 或 issue,我们会尽力将其纳入未来版本。
MCP 服务由 Speakeasy 创建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。