Install
$ agentstack add mcp-adaptocms-adapto-cms-cli Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Pipes remote content directly into a shell (remote code execution).
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Adapto CMS CLI
Command-line interface for the Adapto CMS Management API.
Install
Quick install (macOS/Linux)
curl -sSL https://raw.githubusercontent.com/adaptocms/adapto-cms-cli/main/scripts/install.sh | bash
From source
go install github.com/adaptocms/adapto-cms-cli@latest
From releases
Download the binary for your platform from GitHub Releases.
Quick Start
# Login (credentials are saved automatically)
adapto auth login --email you@example.com --password yourpassword
# List articles
adapto articles list
# Get JSON output
adapto articles list --json
# Create an article (interactive prompts for missing fields)
adapto articles create
# Create with flags
adapto articles create \
--title "My Article" \
--content "Hello world" \
--slug "my-article" \
--author "Jane" \
--language "en-US"
LLM Integration
The CLI is built to be driven by LLM agents. One command gives an agent full knowledge of every command, flag, and workflow:
adapto llm-info
Pipe it into your agent's context (Claude Code, Cursor, MCP tools) and the agent can manage content end to end. Every command supports --json for machine-readable output.
Configuration
None needed in the common case: adapto auth login stores credentials in ~/.config/adapto/credentials.json and every command reads them from there.
For scripting and overrides:
| Variable | Description | | ---------------------- | -------------------------------------------------------------- | | ADAPTO_CLI_TOKEN | Bearer token (overrides stored credentials) | | ADAPTO_CLI_API_URL | Management API base URL (default: https://api.adaptocms.com) | | ADAPTO_CLI_TENANT_ID | Tenant ID (overrides stored credentials) |
All variables can also be passed as flags: --token, --api-url, --tenant-id.
> Two APIs. The CLI talks only to the Management API (api.adaptocms.com). The ADAPTO_API_URL / ADAPTO_API_KEY variables found in client site .env files configure the read-only Public API and are ignored by the CLI. Never point ADAPTO_CLI_API_URL at public-api.adaptocms.com.
Commands
adapto
├── articles Manage articles
│ ├── archive Archive an article
│ ├── categories List categories of an article
│ ├── create Create an article
│ ├── create-translation Create an article translation
│ ├── delete Delete an article
│ ├── get Get an article by ID
│ ├── get-by-slug Get an article by slug
│ ├── list List articles
│ ├── publish Publish an article
│ ├── translations List translations of an article
│ └── update Update an article
├── auth Authentication commands
│ ├── activate Activate account with token
│ ├── callback-github Complete GitHub OAuth callback
│ ├── change-password Change your password
│ ├── login Login with email and password
│ ├── login-github Login via GitHub OAuth
│ ├── login-google Login via Google credential
│ ├── logout Logout (revoke refresh token)
│ ├── me Get current user info
│ ├── orgs List your organizations and their tenants
│ ├── refresh Refresh access token
│ ├── register Register a new account
│ ├── request-password-reset Request a password reset email
│ ├── resend-activation Resend activation email
│ ├── reset-password Reset password with token
│ └── switch-tenant Switch active tenant/organization
├── categories Manage categories
│ ├── add-article Add an article to a category
│ ├── articles List articles in a category
│ ├── create Create a category
│ ├── create-translation Create a category translation
│ ├── delete Delete a category
│ ├── get Get a category by ID
│ ├── get-by-slug Get a category by slug
│ ├── list List categories
│ ├── remove-article Remove an article from a category
│ ├── subcategories List subcategories
│ ├── translations List translations of a category
│ └── update Update a category
├── collections Manage custom collections
│ ├── create Create a collection
│ ├── delete Delete a collection
│ ├── get Get a collection by ID
│ ├── get-by-slug Get a collection by slug
│ ├── items Manage collection items
│ │ ├── archive Archive a collection item
│ │ ├── create Create a collection item
│ │ ├── create-batch Create multiple items in batch
│ │ ├── create-translation Create an item translation
│ │ ├── delete Delete a collection item
│ │ ├── get Get a collection item
│ │ ├── get-by-slug Get a collection item by slug
│ │ ├── list List items in a collection
│ │ ├── publish Publish a collection item
│ │ ├── translations List translations of an item
│ │ └── update Update a collection item
│ ├── list List collections
│ └── update Update a collection
├── files Manage files
│ ├── create-metadata Create file metadata (before upload)
│ ├── delete Delete a file
│ ├── get Get file info by ID
│ ├── list List files
│ ├── multipart-abort Abort a multipart upload
│ ├── multipart-complete Complete a multipart upload
│ ├── multipart-init Initialize a multipart upload
│ ├── multipart-upload Upload a part of a multipart upload
│ ├── update Update file metadata
│ ├── upload Upload a file
│ └── upload-by-id Upload file content for an existing file record
├── llm-info Print full CLI reference for LLM consumption
├── microcopy Manage micro copy entries
│ ├── count Count micro copy entries
│ ├── create Create a micro copy entry
│ ├── create-translation Create a micro copy translation
│ ├── delete Delete a micro copy entry
│ ├── get Get micro copy by ID
│ ├── get-by-key Get micro copy by key
│ ├── get-by-language Get all micro copy for a language
│ ├── list List micro copy entries
│ ├── translations List translations of a micro copy entry
│ └── update Update a micro copy entry
├── pages Manage pages
│ ├── archive Archive a page
│ ├── create Create a page
│ ├── create-translation Create a page translation
│ ├── delete Delete a page
│ ├── get Get a page by ID
│ ├── get-by-slug Get a page by slug
│ ├── list List pages
│ ├── publish Publish a page
│ ├── translations List translations of a page
│ └── update Update a page
├── status API status commands
│ └── version Get API version info
└── version Print the CLI version
Output
By default, commands output formatted tables. Use --json for JSON output:
adapto articles list --json
adapto articles get abc123 --json
Interactive Mode
When running in a terminal (TTY), missing required parameters will be prompted interactively. When piped or in scripts, missing parameters produce an error with usage hints.
File Upload
# Single-step upload (creates metadata + uploads content)
adapto files upload ./photo.jpg
# Two-step: create metadata first, then upload by ID
adapto files create-metadata --filename photo.jpg --content-type image/jpeg
adapto files upload-by-id FILE_ID ./photo.jpg
Media Objects
Articles, pages, and collection items support attaching media (images, videos, embeds) via the --media-json flag on create, update, and create-translation commands:
adapto articles create \
--title "My Post" \
--content "Hello" \
--slug my-post \
--author "Jane" \
--language en-US \
--media-json '[{
"placement_key": "hero_image",
"media_object": {
"id": "m1",
"file_id": "FILE_ID",
"url": "https://cdn.example.com/photo.jpg",
"type": "image"
},
"alt_text": "Hero image"
}]'
Each placement object supports:
placement_key: where the media goes (e.g.hero_image,body_image_1)media_object:id,file_id,url,type(image/video/audio/document/other/youtube/vimeo/tiktok/instagramreel/instagrampost),title,descriptioncaption,alt_text,meta_data: optional metadata
The same --media-json flag works on adapto pages create/update and adapto collections items create/update.
Development
Building, testing, and releasing: see [DEVELOPMENT.md](DEVELOPMENT.md).
License
MIT, see [LICENSE](LICENSE).
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: adaptocms
- Source: adaptocms/adapto-cms-cli
- License: MIT
- Homepage: https://adaptocms.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.