# Umbraco CMS

.NET CMS configured in appsettings.json, with an official MCP server over its Management API.

Umbraco is an MIT-licensed ASP.NET Core CMS with a back office for documents, media, and content types, a Management API, and a Content Delivery API for headless reads. The Umbraco org publishes @umbraco-cms/mcp-dev, an MCP server that wraps the Management API so an agent can manage documents, media, document types, and data types under a normal API user's permissions.

Alternative to: Sitecore, Optimizely

- Capabilities: adaptable, operable
- Vertical: content-publishing
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/umbraco/Umbraco-CMS (MIT), 5239 stars, last commit 2026-09-03
- Last activity: 2026-09-03
- Page: apps/umbraco--umbraco-cms.html
- JSON: apps/umbraco--umbraco-cms.json

## Use it when

- I run .NET and want a CMS my editors like and my agent can populate through a permissioned API
- I need to bulk-create pages and media for a site launch without clicking through the back office

## Gotchas

- The MCP package is named mcp-dev and pinned to the CMS major (@umbraco-cms/mcp-dev@17); the CMS repo's own MCP.md calls its config local-development-only, though the MCP-Dev repo also ships a Cloudflare Worker hosted mode
- The MCP authenticates as an Umbraco API user with client credentials; create that user and scope its permissions first
- Swagger and the OpenAPI document at /umbraco/openapi are disabled in production
- README says not to run Umbraco from the source checkout; install the NuGet templates and extend

## Editions

- Umbraco CMS: Free, open source
  - source: https://github.com/umbraco/Umbraco-CMS
  - installable: dotnet new install Umbraco.Templates && dotnet new umbraco --name MyProject
- Umbraco Cloud: Free, closed source
  - hosted: https://umbraco.com/products/umbraco-cloud/
- Umbraco Heartcore: Free, closed source
  - hosted: https://umbraco.com/products/umbraco-heartcore/

## Adaptable: make it yours

Effort: config-only (11 things to edit)

A new site is a dotnet template; appsettings.json holds the Umbraco:CMS section (global settings, unattended install, connection string, security) and any key can be overridden with ASP.NET double-underscore env vars. Content types are modelled in the back office, not code. Views are Razor files if you want to change markup. The MCP server is configured entirely by UMBRACO_* env vars.

- Env vars: ConnectionStrings__umbracoDbDSN, Umbraco__CMS__Global__Id, Umbraco__CMS__Unattended__InstallUnattended, UMBRACO_CLIENT_ID, UMBRACO_CLIENT_SECRET, UMBRACO_BASE_URL, UMBRACO_INCLUDE_TOOL_COLLECTIONS
- Config files: appsettings.json, appsettings.Development.json, Views/*.cshtml, .mcp.json
- Prompt files: none
- Accounts you'll need: Umbraco Cloud (only for the hosted edition)

## Operable: what an agent can drive

Operability: official. Interface: mcp at https://github.com/umbraco/Umbraco-CMS-MCP-Dev (published by the builder, both).

### Reach (partial coverage)

- Create and edit content documents: reachable. MCP tool collection 'document' (MCP.md; MCP-Dev README)
- Publish and unpublish content: reachable. document collection wraps Management API document endpoints, which include publish; confirm in tool listing
- Manage media items: reachable. MCP tool collection 'media'
- Define document types (content models): reachable. MCP tool collection 'document-type'
- Define data types (property editors): reachable. MCP tool collection 'data-type'
- Define media types: reachable. MCP tool collection 'media-type'
- Manage users and API users: undetermined. not among the five collections named in MCP.md; full tool listing at docs.umbraco.com/umbraco-developer-mcp not fetched
- Build and read form submissions: undetermined. separate umbraco/Umbraco-Forms-MCP-Dev repo exists; not analyzed
- Serve content headlessly to a front end: not reachable. Content Delivery API is a read interface for sites, not an MCP job
- Edit Razor templates and views: not reachable. templates are code in the project

## Code stack

- Languages: C#, TypeScript
- Frameworks: ASP.NET Core, Razor, Lit (back office)
- Package manager: NuGet
- Database: SQL Server, SQLite
- Hosting target: any .NET host, Azure, Umbraco Cloud, Docker

## Skills

bundled: The official MCP repo ships a plugin with skills for CLI setup and wiring the MCP server; the CMS repo separately carries contributor-only skills.
- Paths: plugins-server/skills/*/SKILL.md
- Install: /plugin marketplace add umbraco/Umbraco-CMS-MCP-Dev

## Evidence and confidence

- formFactor: README: .NET CMS installed with dotnet new templates with a web back office (confidence 0.95)
- executionModel: no model at runtime (confidence 0.95)
- operability: umbraco/Umbraco-CMS-MCP-Dev (MIT, pushed 2026-09-02) on the Umbraco org; documented at docs.umbraco.com/umbraco-developer-mcp; CMS repo ships MCP.md and .mcp.json wiring it (confidence 0.9)
- effort: MCP.md documents UMBRACO_* env vars; appsettings.json is the documented CMS config surface (docs.umbraco.com); triage-confirmed (confidence 0.8)
- editions: README: free and open source .NET CMS; umbraco.com lists Cloud and Heartcore (confidence 0.7)
- active: pushedAt 2026-09-03 (CMS) and 2026-09-02 (MCP-Dev)
- provenance: company-backed project since 2005; no vibe-coded claim (confidence 0.9)
- reach:  (confidence 0.7)

## Open questions

- Fetch the full tool listing at docs.umbraco.com/umbraco-developer-mcp to settle users and publish Reach
- Umbraco Cloud and Heartcore prices
- Confirm the exact appsettings.json keys used for unattended install and connection string

## Sources

- https://github.com/umbraco/Umbraco-CMS (sourcing:content-publishing:curated)
- https://github.com/umbraco/Umbraco-CMS-MCP-Dev (analysis:content-publishing)
- https://docs.umbraco.com/umbraco-cms/develop-with-umbraco/headless-and-apis/management-api (analysis:content-publishing)
