mcpField
C
Cloudinary Asset Management

Cloudinary Asset Management

远程服务
github.com/cloudinary媒体与设计05 天前更新
代码仓库

关于 Cloudinary Asset Management

Cloudinary Asset Management 是面向管理 Cloudinary 媒体资产的团队和开发者的 MCP 服务,提供资产操作与转换功能,并支持交互式 Apps 和按需发现工具的动态模式。

主要功能

  1. 01上传、搜索和整理资产
  2. 02管理图像、视频和文件
  3. 03转换现有资产
  4. 04交互式图库、详情和上传 Apps
  5. 05按需发现工具的动态模式

适用场景

  1. 01上传并转换产品图片
  2. 02查找和整理带标签的媒体
  3. 03为选定资产创建 ZIP 压缩包
  4. 04查看账户用量统计

MCP 相关

将 Cloudinary Asset Management API 操作作为 MCP 工具开放,包括自定义转换参考和资产转换工具。还支持交互式 MCP Apps 与动态工具发现。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://asset-management.mcp.cloudinary.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://asset-management.mcp.cloudinary.com/mcp需要授权
安装包
npm@cloudinary/asset-management-mcp0.11.5
ocidocker.io/cloudinary/asset-management-mcp:0.11.5

工具

详细介绍

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

安装 MCP 服务

或手动安装:

  1. 打开 Cursor 设置
  2. 选择 Tools and Integrations
  3. 选择 New MCP Server
  4. 如果配置文件为空,请将以下 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 官方文档。

  1. 打开 Windsurf 设置
  2. 在左侧菜单中选择 Cascade
  3. 点击 Manage MCPs。(要管理 MCP,您需要登录 Windsurf 账号)
  4. 点击 View raw config,打开 MCP 配置文件。
  5. 如果配置文件为空,请粘贴完整的 JSON
{
  "command": "npx",
  "args": [
    "@cloudinary/asset-management-mcp",
    "start",
    "--api-key",
    "",
    "--api-secret",
    "",
    "--cloud-name",
    ""
  ]
}
VS Code

在 VS Code 中安装

或手动安装:

最新信息请参阅 VS Code 官方文档。

  1. 打开命令面板
  2. 搜索并打开 MCP: Open User Configuration。这会打开 mcp.json 文件
  3. 如果配置文件为空,请粘贴完整的 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 - 资源的公开 ID
  • transformations - 转换字符串(例如,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.ts
  • src/mcp-server/tools/*.ts
  • src/funcs/*.ts
  • src/models/*.ts

如果无法避免修改生成文件,请优先更新上游规范或 .speakeasy/ 中的 Speakeasy 配置,以确保更改在重新生成后仍然保留。

我们期待听到你的反馈。欢迎提交包含概念验证的 PR 或 issue,我们会尽力将其纳入未来版本。


MCP 服务由 Speakeasy 创建

评论

支持 Markdown

第一次接触 MCP?

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

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