AI 클라이언트가 Cloudinary의 구조화된 메타데이터 필드, 데이터 소스 및 규칙을 생성하고 관리할 수 있도록 합니다.
다른 이름 cloudinary/structured-metadata-mcp, structured-metadata-mcp, @cloudinary/structured-metadata-mcp
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- 924
- 최신 버전
- 0.6.2
- 마지막 커밋
- 2026년 11월 14일
- 라이선스
- MIT
Cloudinary Structured Metadata MCP란?
Cloudinary Structured Metadata은(는) MCP server입니다. AI 클라이언트가 Cloudinary의 구조화된 메타데이터 필드, 데이터 소스 및 규칙을 생성하고 관리할 수 있도록 합니다.
프로젝트 README에서 생성된 요약
Cloudinary Structured Metadata MCP server 정보
이 MCP server는 개발자와 미디어 관리자가 자연어를 통해 Cloudinary 자산 조직을 관리할 수 있게 해줍니다. AI 클라이언트가 Cloudinary의 Structured Metadata API와 직접 상호작용할 수 있는 인터페이스를 제공하여, 메타데이터 필드, 데이터 소스 및 자동화 규칙을 프로그래밍 방식으로 생성하고 관리할 수 있습니다.
사용자는 이 server를 Claude Desktop, Cursor, VS Code와 같은 환경에 통합하거나 Claude Code, Gemini CLI와 같은 CLI 도구를 통해 사용할 수 있습니다. 설정에는 Node.js 환경과 Cloudinary API key, API secret, cloud name을 통한 인증이 필요하며, 개별 환경 변수 또는 단일 CLOUDINARY_URL로 제공할 수 있습니다.
이 server는 컨텍스트 윈도우 비대화를 방지하기 위해 dynamic mode를 제공한다는 점이 특징입니다. --mode dynamic 플래그를 사용하면 server가 list_tools 및 execute_tool와 같은 meta-tools를 노출하여, 모든 도구를 한 번에 로드하는 대신 AI가 필요에 따라 특정 기능을 탐색할 수 있도록 합니다. 이를 통해 필드 순서 변경, 데이터 소스 업데이트, 규칙 관리와 같은 복잡한 워크플로우를 효율적으로 처리할 수 있습니다.
활용 사례
- 1메타데이터 필드 생성 자동화AI 클라이언트에게 특정 유형과 값을 가진 새로운 메타데이터 필드를 생성하도록 요청합니다.
- 2필드 데이터 소스 관리에이전트에게 기존 필드의 데이터 소스에서 특정 값을 추가하거나 제거하도록 지시합니다.
- 3자산 자동화 규칙 구성특정 폴더 내의 자산에 메타데이터 태그를 자동으로 적용하는 규칙을 설정합니다.
- 4메타데이터 필드 순서 정리AI에게 여러 메타데이터 필드의 위치를 한 번에 재정렬하도록 요청합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Cloudinary Structured Metadata MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Cloudinary Structured Metadata MCP 설치
$ claude mcp add --env 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' --env 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' --env 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' structured-metadata-mcp -- npx -y @cloudinary/structured-metadata-mcpCursor에 Cloudinary Structured Metadata MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"structured-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"@cloudinary/structured-metadata-mcp"
],
"env": {
"CLOUDINARY_API_SECRET": "<YOUR_CLOUDINARY_API_SECRET>",
"CLOUDINARY_API_KEY": "<CLOUDINARY_API_KEY>",
"CLOUDINARY_CLOUD_NAME": "<CLOUDINARY_CLOUD_NAME>"
}
}
}
}VS Code에 Cloudinary Structured Metadata MCP 설치
.vscode/mcp.json
{
"servers": {
"structured-metadata-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cloudinary/structured-metadata-mcp"
],
"env": {
"CLOUDINARY_API_SECRET": "<YOUR_CLOUDINARY_API_SECRET>",
"CLOUDINARY_API_KEY": "<CLOUDINARY_API_KEY>",
"CLOUDINARY_CLOUD_NAME": "<CLOUDINARY_CLOUD_NAME>"
}
}
}
}VS Code CLI에 Cloudinary Structured Metadata MCP 설치
$ code --add-mcp '{"name":"structured-metadata-mcp","type":"stdio","command":"npx","args":["-y","@cloudinary/structured-metadata-mcp"],"env":{"CLOUDINARY_API_SECRET":"<YOUR_CLOUDINARY_API_SECRET>","CLOUDINARY_API_KEY":"<CLOUDINARY_API_KEY>","CLOUDINARY_CLOUD_NAME":"<CLOUDINARY_CLOUD_NAME>"}}'Claude Desktop에 Cloudinary Structured Metadata MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"structured-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"@cloudinary/structured-metadata-mcp"
],
"env": {
"CLOUDINARY_API_SECRET": "<YOUR_CLOUDINARY_API_SECRET>",
"CLOUDINARY_API_KEY": "<CLOUDINARY_API_KEY>",
"CLOUDINARY_CLOUD_NAME": "<CLOUDINARY_CLOUD_NAME>"
}
}
}
}Codex에 Cloudinary Structured Metadata MCP 설치
$ codex mcp add structured-metadata-mcp --env 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' --env 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' --env 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' --env 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' --env 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' --env 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' -- npx -y @cloudinary/structured-metadata-mcpCodex config.toml에 Cloudinary Structured Metadata MCP 설치
~/.codex/config.toml
[mcp_servers.structured-metadata-mcp] command = "npx" args = ["-y", "@cloudinary/structured-metadata-mcp"] [mcp_servers.structured-metadata-mcp.env] CLOUDINARY_API_SECRET = "<YOUR_CLOUDINARY_API_SECRET>" CLOUDINARY_API_KEY = "<CLOUDINARY_API_KEY>" CLOUDINARY_CLOUD_NAME = "<CLOUDINARY_CLOUD_NAME>"
Gemini CLI에 Cloudinary Structured Metadata MCP 설치
$ gemini mcp add -s user -e 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' -e 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' -e 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' -e 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' -e 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' -e 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' structured-metadata-mcp npx -- -y @cloudinary/structured-metadata-mcpGemini settings.json에 Cloudinary Structured Metadata MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"structured-metadata-mcp": {
"command": "npx",
"args": [
"-y",
"@cloudinary/structured-metadata-mcp"
],
"env": {
"CLOUDINARY_API_SECRET": "<YOUR_CLOUDINARY_API_SECRET>",
"CLOUDINARY_API_KEY": "<CLOUDINARY_API_KEY>",
"CLOUDINARY_CLOUD_NAME": "<CLOUDINARY_CLOUD_NAME>"
}
}
}
}구성
CLOUDINARY_API_SECRET필수비밀Your Cloudinary API secret. Found in Dashboard > Settings > Access Keys.
CLOUDINARY_API_SECRET필수비밀Your Cloudinary API secret. Found in Dashboard > Settings > Access Keys.
CLOUDINARY_API_KEY필수Your Cloudinary API key. Found in Dashboard > Settings > Access Keys.
CLOUDINARY_API_KEY필수Your Cloudinary API key. Found in Dashboard > Settings > Access Keys.
CLOUDINARY_CLOUD_NAME필수Your Cloudinary cloud name. Find it in your Cloudinary Dashboard.
CLOUDINARY_CLOUD_NAME필수Your Cloudinary cloud name. Find it in your Cloudinary Dashboard.
CLOUDINARY_URL
| 이름 | 설명 | 유형 |
|---|---|---|
| CLOUDINARY_API_SECRET | Your Cloudinary API secret. Found in Dashboard > Settings > Access Keys. | 필수비밀 |
| CLOUDINARY_API_SECRET | Your Cloudinary API secret. Found in Dashboard > Settings > Access Keys. | 필수비밀 |
| CLOUDINARY_API_KEY | Your Cloudinary API key. Found in Dashboard > Settings > Access Keys. | 필수 |
| CLOUDINARY_API_KEY | Your Cloudinary API key. Found in Dashboard > Settings > Access Keys. | 필수 |
| CLOUDINARY_CLOUD_NAME | Your Cloudinary cloud name. Find it in your Cloudinary Dashboard. | 필수 |
| CLOUDINARY_CLOUD_NAME | Your Cloudinary cloud name. Find it in your Cloudinary Dashboard. | 필수 |
| CLOUDINARY_URL | — |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음통과
- 원격 엔드포인트가 HTTPS 사용통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음통과
README
GitHub에서 보기Cloudinary Structured Metadata MCP Server
Summary
Table of Contents
Installation
The MCP server requires Node.js 20.19.0 or later.
Install the MCP server as a Desktop Extension using the pre-built mcp-server.mcpb file:
Simply drag and drop the mcp-server.mcpb file onto Claude Desktop to install the extension.
The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
[!NOTE] MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more about Desktop Extensions.
Or manually:
- Open Cursor Settings
- Select Tools and Integrations
- Select New MCP Server
- If the configuration file is empty paste the following JSON into the MCP Server Configuration:
{
"command": "npx",
"args": [
"@cloudinary/structured-metadata-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
claude mcp add CloudinarySMD -- npx -y @cloudinary/structured-metadata-mcp start --api-key --api-secret --cloud-name
gemini mcp add CloudinarySMD -- npx -y @cloudinary/structured-metadata-mcp start --api-key --api-secret --cloud-name
Refer to Official Windsurf documentation for latest information
- Open Windsurf Settings
- Select Cascade on left side menu
- Click on
Manage MCPs. (To Manage MCPs you should be signed in with a Windsurf Account) - Click on
View raw configto open up the mcp configuration file. - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@cloudinary/structured-metadata-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
Or manually:
Refer to Official VS Code documentation for latest information
- Open Command Palette
- Search and open
MCP: Open User Configuration. This should open mcp.json file - If the configuration file is empty paste the full json
{
"command": "npx",
"args": [
"@cloudinary/structured-metadata-mcp",
"start",
"--api-key",
"",
"--api-secret",
"",
"--cloud-name",
""
]
}
npx @cloudinary/structured-metadata-mcp start --api-key --api-secret --cloud-name
For a full list of server arguments, run:
npx @cloudinary/structured-metadata-mcp --help
Configuration
Environment Variables
The MCP server supports the following environment variables:
| Variable | Description | Required |
|---|---|---|
CLOUDINARY_CLOUD_NAME |
Your Cloudinary cloud name | Yes |
CLOUDINARY_API_KEY |
Your Cloudinary API key | Yes |
CLOUDINARY_API_SECRET |
Your Cloudinary API secret | Yes |
CLOUDINARY_URL |
Complete Cloudinary URL (alternative to individual vars) | No |
CLOUDINARY_URL Format
You can use a single CLOUDINARY_URL instead of individual variables:
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
Authentication
The MCP server uses your Cloudinary API key and secret for authentication:
{
"env": {
"CLOUDINARY_CLOUD_NAME": "demo",
"CLOUDINARY_API_KEY": "123456789012345",
"CLOUDINARY_API_SECRET": "abcdefghijklmnopqrstuvwxyz12"
}
}
Available Tools
The MCP server exposes Cloudinary's Structured Metadata API as tools. Use your AI application to discover and invoke the available tools for managing metadata fields and rules.
Usage Examples
Example 1: Manage Metadata Fields
1. List fields: "Show me all metadata fields in my account"
2. Create field: "Create a metadata field named 'category' of type 'enum' with values 'product,service,other'"
3. Get field: "Get details for the metadata field 'category'"
4. Update field: "Update the 'category' field to add a new value 'subscription'"
5. Delete field: "Delete the metadata field 'old_field'"
Example 2: Manage Field Datasources
1. Search datasource: "Search for values in the 'category' field datasource"
2. Update datasource: "Add a new value 'enterprise' to the 'category' field datasource"
3. Delete datasource entry: "Remove the value 'old_value' from the 'category' field"
4. Restore datasource: "Restore a deleted datasource entry for field 'category'"
Example 3: Manage Metadata Rules
1. List rules: "Show all metadata rules configured in my account"
2. Create rule: "Create a metadata rule to auto-tag assets in folder 'products' with category 'product'"
3. Update rule: "Update metadata rule [rule-id] to change the target folder"
4. Delete rule: "Delete metadata rule [rule-id]"
Example 4: Reorder Metadata Fields
1. Reorder single field: "Move the 'priority' metadata field to position 2"
2. Reorder multiple fields: "Reorder metadata fields: set 'category' to position 1, 'priority' to position 2"
Development
Building from Source
Prerequisites
- Node.js v20 or higher
- npm, pnpm, bun, or yarn
Build Steps
# Clone the repository
git clone https://github.com/cloudinary/structured-metadata-mcp.git
cd structured-metadata-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run locally
npm start
Project Structure
structured-metadata-mcp/
├── src/
│ ├── hooks/ # Custom authentication hooks
│ ├── mcp-server/ # MCP server implementation
│ │ ├── server.ts # Main server (auto-generated)
│ │ └── tools/ # Generated tool wrappers
│ ├── funcs/ # API function implementations
│ └── models/ # Type definitions
├── .github/
│ └── workflows/ # CI/CD workflows
└── .speakeasy/ # Speakeasy configuration
Contributions
While we value contributions to this MCP Server, the code is generated programmatically. Any manual changes to generated files will be overwritten on the next generation.
What you can contribute:
- ✅ Custom hooks in
src/hooks/ - ✅ Documentation improvements
- ✅ Bug reports and feature requests
Generated files (do not edit):
- ❌
src/mcp-server/server.ts - ❌
src/mcp-server/tools/*.ts - ❌
src/funcs/*.ts - ❌
src/models/*.ts
We look forward to hearing your feedback. Feel free to open a PR or issue with a proof of concept and we'll do our best to include it in a future release.
MCP Server Created by Speakeasy
Progressive Discovery
MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.
To enable dynamic mode, pass the --mode dynamic flag when starting your server:
{
"mcpServers": {
"CloudinarySMD": {
"command": "npx",
"args": ["@cloudinary/structured-metadata-mcp", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}
In dynamic mode, the server registers only the following meta-tools instead of every individual tool:
list_tools: Lists all available tools with their names and descriptions.describe_tool_input: Returns the input schema for one or more tools by name.execute_tool: Executes a tool by name with its arguments.list_scopes: Lists the scopes available on the server.
This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
You can combine dynamic mode with scope and tool filters:
{
"mcpServers": {
"CloudinarySMD": {
"command": "npx",
"args": ["@cloudinary/structured-metadata-mcp", "start", "--mode", "dynamic", "--scope", "admin"],
// ... other server arguments
}
}
}
Cloudinary Structured Metadata MCP 질문
Cloudinary Structured Metadata MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'CLOUDINARY_API_SECRET=<YOUR_CLOUDINARY_API_SECRET>' --env 'CLOUDINARY_API_KEY=<CLOUDINARY_API_KEY>' --env 'CLOUDINARY_CLOUD_NAME=<CLOUDINARY_CLOUD_NAME>' structured-metadata-mcp -- npx -y @cloudinary/structured-metadata-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Cloudinary Structured Metadata MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
어떤 인증 방식이 지원되나요?
이 MCP server는 Cloudinary API key, API secret, cloud name을 사용하여 인증하며, 환경 변수나 단일 CLOUDINARY_URL을 통해 제공할 수 있습니다.
토큰을 절약하기 위해 dynamic mode를 사용할 수 있나요?
네, --mode dynamic 플래그를 전달하여 dynamic mode를 활성화할 수 있습니다. 이 모드에서는 모든 도구를 한 번에 노출하는 대신, 점진적 탐색을 위한 meta-tools를 제공합니다.