
Cldsh Cloudinary Shell
io.github.Sheldon1999由 GitHub 帳號 Sheldon1999 發布v2.0.1更新於 Oct 29, 2026
Unix-style shell, scriptable CLI and MCP server for Cloudinary asset management.
概覽
結合 MCP 伺服器、Shell 與 CLI,讓助手像操作檔案系統一樣瀏覽、上傳、移動、下載和刪除 Cloudinary 帳戶中的資源。
- 可以做什麼
- 列出資料夾與資源、顯示資料夾樹狀結構、讀取資源完整中繼資料
- 產生交付 URL,可選擇加上轉換參數或簽章
- 上傳本機檔案或目錄,並把資源下載到本機磁碟
- 移動、重新命名、建立和刪除資源或資料夾,附預覽與確認權杖
- 查看帳戶的雲端名稱、資料夾模式、憑證來源與剩餘 API 額度
- 適用情境
- 適合讓助手管理既有 Cloudinary 帳戶中的媒體資源,例如檢視目錄、產生 CDN 連結、上傳建置產物或清理舊資源,且不需要託管服務或 OAuth 流程。
- 執行需求
- 需要 Node.js 20 或更新版本,透過 npx 以 stdio 在本機執行。需要 Cloudinary 帳戶的雲端名稱、API key 與 API secret,可透過 CLOUDINARY_URL 或各個 CLOUDINARY_* 環境變數、目前目錄的 .env 檔案,或以 login 儲存的設定檔提供。需能連線 Cloudinary Admin API,該介面有每小時的請求上限。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Cldsh Cloudinary Shell,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Cloudinary Shell (cldsh)
MCP server, interactive shell and scriptable CLI for Cloudinary
[npm version] [License: MIT] [MCP Protocol]
cldsh lets you work with a Cloudinary account like a file system:
- AI agents (Claude Desktop, Claude Code, Cursor) get Cloudinary tools through the Model Context Protocol (MCP), with previews and confirmation before anything is deleted or replaced.
- Developers get an interactive shell with folders, tab completion, history and inline image previews.
- Scripts and CI get single commands with JSON output and meaningful exit codes.
It works with both Cloudinary folder modes: dynamic folders (every account created since June 2024) and the older fixed folders. The mode is detected automatically.
Working on a project that uses Cloudinary? Give
INTEGRATION.mdto your AI agent or team: integration patterns (Next.js, React, Node.js, Python), transformation recipes andcldshworkflows.
How cldsh compares
Cloudinary also publishes an official CLI (cloudinary-cli, Python) and official MCP packages (@cloudinary/*). cldsh is a separate, independent project built for a different workflow: one Node binary that is a shell, a scriptable CLI and an MCP server together, authenticated with your existing API key — no Python runtime, no OAuth browser flow, no hosted service required.
Pick cldsh for one local tool, API-key auth and a safety net on AI-driven changes. Pick the official packages for Cloudinary-maintained, domain-split MCP servers with OAuth and enterprise support.
Quick start
Requires Node.js 20 or newer and a Cloudinary account (cloud name, API key and API secret, or a CLOUDINARY_URL).
Install globally to get the shorter cldsh command: npm install -g cloudinary-shell.
MCP server (for AI agents)
cldsh --mcp runs an MCP server over stdio (JSON-RPC 2.0). It supports protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.
Client setup
Claude Desktop (claude_desktop_config.json):
Claude Code: claude mcp add cloudinary npx -y cloudinary-shell --mcp
Cursor: Settings → MCP → Add new MCP server, type command, command npx -y cloudinary-shell --mcp.
Check the setup with cldsh mcp: it runs the handshake, lists the tools and makes a live call on your account.
Tools
Every tool carries MCP annotations (read-only, destructive, idempotent), so clients can decide when to ask you.
Safety
- Two-step changes.
cloudinary_delete,cloudinary_move,cloudinary_rename_folder, and uploads that would replace existing assets first return a preview with aconfirm_token. Nothing changes until the agent calls again with the same arguments and that token. Tokens are single-use, expire after 5 minutes and stop working if the account changes.dry_run: trueonly previews. - Local files. Uploads and downloads can only reach the folder the server was started in, the folders your MCP client shares as roots, and folders added with
--allow-path. The cldsh credentials folder,~/.sshand hidden files (unless named explicitly) are always refused. Downloads never overwrite a local file unlessoverwrite: true. - Server options:
--read-only: only the read-only tools (list, tree, info, get_url, account).--allow-path <dir>: allow another local folder (repeatable).--no-confirm: run changes in one call, as in cldsh 1.x. Use only for trusted automation.
Command line (for scripts and CI)
Run any command directly: cldsh <command> [arguments] [options].
- Results go to stdout; progress, warnings and errors go to stderr.
--jsonprints machine-readable JSON on stdout (errors are printed as JSON on stderr).- Exit codes:
0success,1error,2wrong usage,3partly failed (for example 2 of 50 uploads failed),4needs confirmation (add--yes) or was cancelled. --profile <name>uses a saved profile for one command.
Quote wildcards. Your shell expands an unquoted
cld*into local file names beforecldshsees it. Writecldsh rm 'cld*'. If every name given tormexists in the local directory,cldshrefuses and reminds you.
Interactive shell
Run cldsh with no arguments.
- The prompt shows the account (and profile) and the current folder.
- Tab completes commands, options, folder paths (
cd apps/<Tab>) and asset names. - History is kept across sessions in
~/.cldsh_history(private file; lines with credentials are never saved). - Paths are relative to the current folder;
/or~is the root,..goes up,cd -goes back. helplists all commands;help <command>lists all options of one command.
Commands
Options shared by many commands:
Assets can be named by their name in the current folder, by path (products/hero), by public ID, or as asset_id:<id>. If a name matches several assets (for example an image and a video called intro), cldsh lists them; add --rt or use the public ID.
Uploading
- The resource type comes from the file extension: images (including PDF and SVG) → image, video and audio → video, everything else → raw.
--rtoverrides it. - Images and videos get a public ID without extension; raw files keep it (
notes.txt). -rincludes subdirectories as subfolders. Dotfiles are skipped.- Existing assets are overwritten and reported as
overwritten;--no-overwritekeeps them (skipped). - When two files would get the same public ID (
photo.jpg,photo.png), both get their extension as suffix (photo_jpg,photo_png). - Files over 20 MB are uploaded in chunks with progress; temporary failures are retried.
--dry-runshows the planned public IDs and works without credentials.
Deleting
rm -rdeletes everything in the folder and its subfolders (all resource and delivery types), then the folder.- Recursive deletes, wildcard deletes and deletes of more than 20 assets show the plan and ask first. Emptying the whole account asks you to type the cloud name.
-yskips the question; scripts need--yes. - Every asset is reported as
deleted,not foundorfailed, and the exit code is3if anything was not found or failed. --skip-backupdeletes folders that still hold backups of deleted assets.
Moving and renaming
- Dynamic folder mode: moving and renaming keep the delivery URL (the folder and display name change).
--public-idalso renames the public ID, which changes the URL. Folders can be moved and renamed:mv products catalog/products. - Fixed folder mode: the folder is part of the public ID, so moving or renaming changes the URL. Cloudinary can't move folders in this mode.
- An existing target stops the move;
-ogoes ahead. In dynamic mode,-oonly replaces an asset with the same public ID; an asset that merely has the same name is kept. --dry-runshows whether the URL will change.
URLs, previews and downloads
- Unsigned URLs without
--tare exactly the asset'ssecure_url. viewprints the preview URL when the terminal can't show images.downloadskips local files that already exist unless-f; private and authenticated assets download through signed URLs.
Accounts and credentials
Profiles are stored in ~/.config/cldsh/credentials.json (%APPDATA%\cldsh on Windows) with owner-only permissions. Writes are atomic, and a damaged file is never overwritten (login --reset moves it aside).
When several sources are present, the strongest wins:
--profile <name>,config use/loginin the current shell, orCLOUDINARY_PROFILECLOUDINARY_URL(orCLOUDINARY_CLOUD_NAME,CLOUDINARY_API_KEY,CLOUDINARY_API_SECRET) in the environment- A
.envfile in the current directory - The saved default profile
cldsh warns at startup, and config shows, when a source is overridden. CLOUDINARY_URL options such as ?upload_prefix=https://api-eu.cloudinary.com (EU/AP data centers) and private CDN settings are supported.
Folder modes and API limits
cldshdetects the folder mode of your account. Override it with--folder-mode=fixed|dynamicorCLDSH_FOLDER_MODE.- Listing folders and assets uses Cloudinary's Admin API, which is rate-limited per hour (500 requests on the Free plan).
cldshcaches listings for a few seconds, warns when less than 10% of the hourly budget is left, andquotashows the remaining requests. Uploads and delivery URLs don't count. - In fixed folder mode, listing a folder also pages through its subfolders' assets, so very large folders cost more requests.
Troubleshooting
License
MIT. See CHANGELOG.md for changes between versions.
來源:README.md,提交 2fe2579
工具
0版本歷史
1- v2.0.1最新Oct 29, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分