{
  "name": "cloudinary",
  "display_name": "Cloudinary",
  "description": "Cloudinary Model Context Protocol Server to upload media to Cloudinary and get back the media link and details.",
  "repository": {
    "type": "git",
    "url": "https://github.com/felores/cloudinary-mcp-server"
  },
  "homepage": "https://github.com/felores/cloudinary-mcp-server",
  "author": {
    "name": "felores"
  },
  "license": "MIT",
  "categories": [
    "Media Creation"
  ],
  "tags": [
    "cloudinary",
    "images",
    "videos"
  ],
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "@felores/cloudinary-mcp-server@latest"
      ],
      "env": {
        "CLOUDINARY_CLOUD_NAME": "${CLOUDINARY_CLOUD_NAME}",
        "CLOUDINARY_API_KEY": "${CLOUDINARY_API_KEY}",
        "CLOUDINARY_API_SECRET": "${CLOUDINARY_API_SECRET}"
      }
    }
  },
  "examples": [
    {
      "title": "Upload an Image",
      "description": "This example demonstrates how to upload an image to Cloudinary.",
      "prompt": "use_mcp_tool({ server_name: 'cloudinary', tool_name: 'upload', arguments: { file: 'path/to/image.jpg', resource_type: 'image', public_id: 'my-custom-id' }});"
    }
  ],
  "arguments": {
    "CLOUDINARY_CLOUD_NAME": {
      "description": "Your Cloudinary cloud name, used to identify your account and resources.",
      "required": true,
      "example": "my_cloud_name"
    },
    "CLOUDINARY_API_KEY": {
      "description": "Your Cloudinary API key, used to authenticate requests to the Cloudinary API.",
      "required": true,
      "example": "my_api_key"
    },
    "CLOUDINARY_API_SECRET": {
      "description": "Your Cloudinary API secret, used to authenticate requests and secure your Cloudinary account.",
      "required": true,
      "example": "my_api_secret"
    }
  },
  "tools": [
    {
      "name": "upload",
      "description": "Upload media (images/videos) to Cloudinary. For large files, the upload is processed in chunks and returns a streaming response. The uploaded asset will be available at:\n- HTTP: http://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}\n- HTTPS: https://res.cloudinary.com/{cloud_name}/{resource_type}/upload/v1/{public_id}.{format}\nwhere {cloud_name} is your Cloudinary cloud name, resource_type is 'image' or 'video', and format is determined by the file extension.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "description": "Path to file, URL, or base64 data URI to upload"
          },
          "resource_type": {
            "type": "string",
            "enum": [
              "image",
              "video",
              "raw"
            ],
            "description": "Type of resource to upload. For videos, the upload will return a streaming response as it processes in chunks."
          },
          "public_id": {
            "type": "string",
            "description": "Public ID to assign to the uploaded asset. This will be used in the final URL. If not provided, Cloudinary will generate one."
          },
          "overwrite": {
            "type": "boolean",
            "description": "Whether to overwrite existing assets with the same public ID"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags to assign to the uploaded asset"
          }
        },
        "required": [
          "file"
        ]
      }
    }
  ]
}