{
  "markdown": "# Agility CMS MCP Server\n\nThe official MCP server for [Agility CMS](https://agilitycms.com): a hosted, remote server that gives\nyour AI tools real-time access to the content, models, pages and media in the Agility instances you\nalready have access to — through conversation, not APIs.\n\n![Official Agility CMS server](https://img.shields.io/badge/Agility%20CMS-official%20MCP%20server-5B21B6?style=flat-square)\n![Hosted — nothing to install](https://img.shields.io/badge/hosted-nothing%20to%20install-0EA5E9?style=flat-square)\n![Transport: streamable HTTP](https://img.shields.io/badge/transport-streamable%20HTTP-111827?style=flat-square)\n![Auth: OAuth 2.0](https://img.shields.io/badge/auth-OAuth%202.0-16A34A?style=flat-square)\n![32 tools](https://img.shields.io/badge/tools-32-F59E0B?style=flat-square)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-64748B?style=flat-square)](LICENSE)\n\n[Connect your client](#connect-your-client) · [What you can ask for](#what-you-can-ask-for) ·\n[Tools](#available-mcp-tools) · [Data and security](#data-and-security) ·\n[Troubleshooting](#troubleshooting) · [Support](#support-and-feedback)\n\n**There is nothing to install.** Point your client at `https://mcp.agilitycms.com/api/mcp`, sign in\nwith your Agility account, and your assistant can work with the instances you already have access to.\n\n- **Endpoint:** `https://mcp.agilitycms.com/api/mcp` (streamable HTTP)\n- **Auth:** OAuth 2.0 against your Agility organization — your Agility permissions are the authority\n- **Tools:** 32, covering content, models, components, containers, pages, sitemaps and media\n- **Setup guide with screenshots:** [mcp.agilitycms.com/instructions](https://mcp.agilitycms.com/instructions)\n- **Live tool catalog:** [mcp.agilitycms.com/tools](https://mcp.agilitycms.com/tools)\n\n---\n\n## Connect your client\n\n### One click\n\n[![Install in VS Code](https://img.shields.io/badge/Install%20in-VS%20Code-007ACC?style=for-the-badge&logo=visual-studio-code&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=agility-cms&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.agilitycms.com%2Fapi%2Fmcp%22%7D)\n[![Install in VS Code Insiders](https://img.shields.io/badge/Install%20in-VS%20Code%20Insiders-24B47E?style=for-the-badge&logo=visual-studio-code&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=agility-cms&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.agilitycms.com%2Fapi%2Fmcp%22%7D&quality=insiders)\n[![Install in Cursor](https://img.shields.io/badge/Install%20in-Cursor-000000?style=for-the-badge&logo=cursor&logoColor=white)](https://cursor.com/en/install-mcp?name=agility-cms&config=eyJ1cmwiOiJodHRwczovL21jcC5hZ2lsaXR5Y21zLmNvbS9hcGkvbWNwIn0%3D)\n[![Install in LM Studio](https://img.shields.io/badge/Install%20in-LM%20Studio-4F46E5?style=for-the-badge)](https://lmstudio.ai/install-mcp?name=agility-cms&config=eyJ1cmwiOiJodHRwczovL21jcC5hZ2lsaXR5Y21zLmNvbS9hcGkvbWNwIn0%3D)\n\n### Every supported client\n\n| Client | How to add it |\n|---|---|\n| **VS Code** (GitHub Copilot) | One-click badge above, or Command Palette → **MCP: Add Server** → **HTTP** |\n| **Cursor** | One-click badge above, or Settings → **MCP** → **Add new MCP server** → **HTTP** |\n| **LM Studio** | One-click badge above |\n| **Claude Code** | `claude mcp add --transport http \"Agility-CMS\" https://mcp.agilitycms.com/api/mcp` |\n| **Claude** (desktop & web) | Settings → **Connectors** → **Add custom connector** → paste the endpoint |\n| **Windsurf** | Settings → **Cascade** → **MCP servers** → add the endpoint |\n| **Gemini CLI** | `gemini mcp add --transport http agility-cms https://mcp.agilitycms.com/api/mcp` |\n| **ChatGPT** | Settings → **Apps & Connectors** → **Advanced → Developer mode** → add a connector |\n| **Anything else** | Any client that speaks streamable HTTP — or bridge a stdio-only client with [`mcp-remote`](#anything-else) |\n\nFull walkthroughs with screenshots are at\n[mcp.agilitycms.com/instructions](https://mcp.agilitycms.com/instructions). To wire anything up by\nhand, the only value you need is the endpoint. Details per client follow.\n\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http \"Agility-CMS\" https://mcp.agilitycms.com/api/mcp\n```\n\n### Claude (desktop & web)\n\nSettings → Connectors → **Add custom connector**, then paste the endpoint:\n\n```\nhttps://mcp.agilitycms.com/api/mcp\n```\n\n### VS Code (GitHub Copilot)\n\nCommand Palette → **MCP: Add Server** → **HTTP**, then paste the endpoint. Or add to your MCP config:\n\n```json\n{\n  \"servers\": {\n    \"agility-cms\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.agilitycms.com/api/mcp\"\n    }\n  }\n}\n```\n\n### Cursor\n\nSettings → **MCP** → **Add new MCP server** → type **HTTP**, URL as above. Or in `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"agility-cms\": {\n      \"url\": \"https://mcp.agilitycms.com/api/mcp\"\n    }\n  }\n}\n```\n\n### LM Studio\n\nUse the one-click badge above, or add the endpoint under **Program → Install → Edit mcp.json**:\n\n```json\n{\n  \"mcpServers\": {\n    \"agility-cms\": {\n      \"url\": \"https://mcp.agilitycms.com/api/mcp\"\n    }\n  }\n}\n```\n\n### Windsurf\n\nSettings → **Cascade** → **MCP servers** → add a server with the endpoint above.\n\n### Gemini CLI\n\n```bash\ngemini mcp add --transport http agility-cms https://mcp.agilitycms.com/api/mcp\n```\n\nOr in `~/.gemini/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"agility-cms\": {\n      \"httpUrl\": \"https://mcp.agilitycms.com/api/mcp\"\n    }\n  }\n}\n```\n\n### ChatGPT\n\nSettings → **Apps & Connectors** → **Advanced → Developer mode**, then add a connector with the\nendpoint above.\n\n### Anything else\n\nAny client that speaks streamable HTTP works. Give it the endpoint and let it run the OAuth flow —\nthere is no API key to paste and nothing to keep in a config file.\n\nIf a client only supports local (stdio) servers, bridge to it with\n[`mcp-remote`](https://www.npmjs.com/package/mcp-remote):\n\n```json\n{\n  \"mcpServers\": {\n    \"agility-cms\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-remote\", \"https://mcp.agilitycms.com/api/mcp\"]\n    }\n  }\n}\n```\n\nThat bridge is a general-purpose client-side shim, not an Agility package. **There is no\n`agility-mcp-server` npm package and there won't be one** — a hosted HTTP server has nothing to\ninstall, so if you find a config telling you to `npx` something Agility-named, it's wrong.\n\n---\n\n## What you can ask for\n\nOnce it's connected, talk to your assistant about your content — it will pick the tools. Most tools\ntake an `instanceGuid` (which Agility instance) and, for content, a `locale`; ask it to list your\ninstances first and it will use the right one from then on.\n\n- *\"List the Agility instances I can access, then show me the content models in the marketing site.\"*\n- *\"Add a `Subtitle` text field to the Blog Post model, under the existing SEO tab.\"*\n- *\"Build a Team Member model — name, photo, bio, and a link to their posts — and a container for it.\"*\n- *\"Create a blog post in `en-us` from this outline and give me the editor link.\"*\n- *\"Which pages in the main channel are still unpublished?\"*\n- *\"Publish the three posts I just created.\"*\n\n---\n\n## Data and security\n\n**Authentication is OAuth 2.0** against your Agility organization, over HTTPS. There is no API key to\npaste and nothing to keep in a config file — tokens are held by your MCP client, not by this repo's\nconfiguration or any file you edit.\n\n**Your Agility permissions are the ceiling.** Every call runs as you: the Management API refuses\nanything you personally can't do, so the server cannot exceed the access you already have. It follows\nthat the practical way to limit what an assistant can reach is to sign in as an Agility user that only\nhas the access you're willing to give it.\n\n**Destructive actions are marked and prompted.** The `delete_*`, `unpublish_content` and\n`unpublish_page` tools carry `destructiveHint: true`, so interactive clients ask before running them.\nNon-interactive clients don't prompt at all — they require each write tool to be allow-listed instead.\n\n**Treat content as untrusted input.** This is structural to MCP, not specific to Agility: an assistant\nreads content items, page text and field descriptions, and any of that can contain text that reads like\nan instruction (prompt injection). A client that acts on it does so with your permissions. Use clients\nyou trust, leave confirmation prompts on for destructive tools, and don't hand a broadly-privileged\nAgility account to an unattended agent.\n\n**What gets logged.** The hosted server records operational telemetry to Agility's Application\nInsights: the tool or API method called, duration, success or failure, the Agility instance GUID and\nyour Agility user ID. Request and response payloads are recorded in truncated form for debugging\n(capped, 2 KB by default), so small content values can appear in those logs. There is no client-side\nopt-out on the hosted server; self-host without `APP_INSIGHTS_CONNECTION_STRING` to collect nothing.\n\n---\n\n## Available MCP Tools\n\nThe Agility CMS MCP Server provides **32 powerful tools** organized into categories:\n\n### 🔍 Discovery Tools\n- `get_available_instances` - List all Agility CMS instances you have access to\n- `get_current_user` - Identify the user the current token authenticates as (read-only whoami)\n- `get_containers` - Access content containers organized by category\n\n### 📋 Model Listing Tools\n- `get_content_models` - Retrieve all content models for an instance\n- `get_component_models` - Access page component models\n\n### 🔍 Detail Tools\n- `get_content_model_details` - Get detailed field definitions for a content model\n- `get_component_model_details` - Get detailed field definitions for a component model\n\n### 📝 Content Management Tools\n- `get_locales` - Retrieve available locales for multilingual content\n- `get_content_items` - Fetch multiple content items with filtering and pagination\n- `get_content_item` - Retrieve a single content item by ID\n- `save_content_items` - Create or update content items (returns an editor URL per item)\n- `publish_content` - Publish one or more content items\n- `unpublish_content` - Unpublish (take offline) one or more content items *(destructive)*\n- `manage_content_workflow` - Approve, decline, or request approval for content items\n- `delete_content_item` - Delete content items *(destructive)*\n\n### 📄 Page Management Tools\n- `get_sitemaps` - List all digital channels (sitemaps)\n- `get_sitemap` - Retrieve complete page hierarchy for a channel\n- `get_page` - Retrieve a page by ID\n- `get_page_models` - List available page models (templates)\n- `save_page_model` - Create or update a page model (template) and its content zones\n- `save_page` - Create or update a page\n- `reorder_page_modules` - Reorder modules within a page zone\n- `publish_page` - Publish one or more pages\n- `unpublish_page` - Unpublish (take offline) one or more pages *(destructive)*\n- `manage_page_workflow` - Approve, decline, or request approval for pages\n- `delete_page` - Delete pages *(destructive)*\n\n### 🖼️ Media & Asset Tools\n- `initialize_media_upload` - Get signed upload URLs for media files\n- `list_media` - List media library assets (paged)\n- `delete_media` - Delete a media asset by ID *(destructive)*\n\n### ⚡ Model Creation & Management Tools\n- `save_content_model` - Create or update content models\n- `save_component_model` - Create or update component models\n- `save_container` - Create and configure content containers\n\n> **🔒 Destructive actions are marked.** The `delete_*` tools and the `unpublish_content` / `unpublish_page` tools carry `destructiveHint: true`, so interactive MCP clients prompt before running them (\"Allow this tool to run?\" — choosing **\"always allow\"** opts out). Publish and the approval workflow are additive/reversible and are **not** flagged destructive. See [Data and security](#data-and-security) for how permissions and prompting work, and the [documentation](https://mcp.agilitycms.com/tools) for the per-tool detail.\n\n**📚 Full tool documentation and examples:** [mcp.agilitycms.com/tools](https://mcp.agilitycms.com/tools)\n\n## Supported Field Types\n\nThe Agility CMS MCP Server supports **20+ field types** for building comprehensive content models:\n\n- **📝 Basic Fields**: Text, Long Text, HTML, Boolean, Integer, Decimal, Date\n- **🎯 Selection Fields**: Dropdown List, Link, Search Listbox, Checkboxes\n- **🎨 Media Fields**: Image Attachment, File Attachment\n- **🔗 Content Relationships**: Shared Grid/Link, Nested Grid/Link\n- **📂 Organization**: Tab Field, Custom Section\n- **⚡ Advanced**: Complex Object Fields, Custom Field Types, Rich Text Editor\n\n**📚 Complete field type documentation:** [mcp.agilitycms.com/tools](https://mcp.agilitycms.com/tools)\n\n---\n\n## Troubleshooting\n\n| Symptom | Usually means |\n|---|---|\n| An instance is missing from `get_available_instances` | Your Agility user doesn't have access to it, or it isn't on the production Agility tenant this server talks to. |\n| Calls start failing with an authorization error | The OAuth token expired or was revoked — reconnect the server in your client. |\n| The assistant says it can't write, or silently only reads | Non-interactive clients require each write tool to be allow-listed by name. Check your client's tool permissions. |\n| A one-click install link does nothing | The editor wasn't running, or it blocked the handoff — add the endpoint by hand instead. |\n| A tool rejects a field setting | Agility validates model changes server-side; the error text is passed through verbatim. Linked-content fields, for example, have no `required`, `unique` or `copyAcrossAllLanguages` setting. |\n\nStill stuck: [support@agilitycms.com](mailto:support@agilitycms.com) or\n[our Slack community](https://agilitycms.com/join-slack).\n\n---\n\n## Support and feedback\n\n- 🌐 **Website**: [mcp.agilitycms.com](https://mcp.agilitycms.com)\n- 📖 **Setup Instructions**: [mcp.agilitycms.com/instructions](https://mcp.agilitycms.com/instructions)\n- 🛠️ **Tool Catalog**: [mcp.agilitycms.com/tools](https://mcp.agilitycms.com/tools)\n- 📚 **Agility CMS Docs**: [agilitycms.com/docs](https://agilitycms.com/docs)\n- 💬 **Support**: [support@agilitycms.com](mailto:support@agilitycms.com)\n- 👥 **Community**: [Join our Slack](https://agilitycms.com/join-slack)\n\n## About this repository\n\nThis repository is the public home of the **Agility CMS MCP Server** — the documentation, the licence\nand the security policy for the hosted service at `https://mcp.agilitycms.com`.\n\nThe server is a hosted, remote MCP server: there is nothing to install and no package to pull, so\nthere is no build to reproduce here. Its source is maintained by Agility CMS and is not currently\npublished. Everything you need in order to *use* the server is above.\n\n## License\n\nThe documentation in this repository is licensed under the [Apache License 2.0](LICENSE).\n\nTwo things that licence deliberately does **not** cover:\n\n- **The hosted service.** `https://mcp.agilitycms.com` is operated by Agility CMS under Agility's own\n  terms of service. Your use of the service, and of the Agility CMS Management API behind it, is\n  governed by those terms and your Agility subscription.\n- **The Agility name and marks.** Apache 2.0 §6 grants no trademark rights. See [NOTICE](NOTICE).\n\nSecurity reports: [SECURITY.md](SECURITY.md).\n\n---\n\n**Built with ❤️ by [Agility CMS](https://agilitycms.com)** — The fastest headless CMS for developers and marketers\n",
  "bytes": 15467,
  "sha": "036c4a554912529a6619d1325ce20efce44267a038def6c753f16e06193bfb2b",
  "repo_slug": "agility/mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_agilitycms_mcp_server_941ccecf/readme"
}