AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Umbraco Mcp

mcp-matthew-wise-umbraco-mcp · by Matthew-Wise

A model context protocol (MCP) server for Umbraco

No reviews yet
0 installs
23 views
0.0% view→install

Install

$ agentstack add mcp-matthew-wise-umbraco-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-matthew-wise-umbraco-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
Archived

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Umbraco Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

THIS REPO HAS NOW MOVED - https://github.com/umbraco/Umbraco-Cms-MCP-Dev

Umbraco MCP

An MCP (Model Context Protocol) server for Umbraco CMS it provides access to key parts of the Management API enabling you to do back office tasks with your agent.

Intro

The MCP server uses an Umbraco API user to access your Umbraco Management API, mean the tools available to the AI can be controlled using normal Umbraco user permissions.

Getting Started

Umbraco

In order for the MCP to talk to the Management API you will need to create a API user if you are unsure how to do this follow Umbraco's documentation.

The level of access you provider this user will determine what your agent is able to do.

Installation

First, create an Umbraco API user with appropriate permissions. You can find instructions in Umbraco's documentation.

Claude Desktop

To get started with using the Umbraco MCP with Claude, first download and install the Claude.ai desktop app.

Start up your Umbraco instance (currently working with version 15.latest) and create new API user credentials. You can see instructions on how to do that on the Umbraco docs.

Once you have this information head back into Claude desktop app and head to Settings > Developer > Edit Config. Open the json file in a text editor of your choice and add the below, replacing the UMBRACO_CLIENT_ID, UMBRACO_CLIENT_SECRET and UMBRACO_BASE_URL with your local connection information. The addition of the NODE_TLS_REJECT_UNAUTHORIZED env flag is to allow Claude to connect to the MCP using a self-signed cert.

{
  "mcpServers": {
    "umbraco-mcp": {
      "command": "npx",
      "args": ["@umbraco-mcp/umbraco-mcp-cms@alpha"],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "0",
        "UMBRACO_CLIENT_ID": "umbraco-back-office-mcp",
        "UMBRACO_CLIENT_SECRET": "1234567890",
        "UMBRACO_BASE_URL": "https://localhost:44391"
      }
    }
  }
}

Restart Claude and try it out with a simple prompt such as Tell me the GUID of the home page document type. You'll need to allow each one of the tools as the Umbraco MCP starts to work its way through. If you receive a connection error with the Umbraco MCP click the button to open the logs and review the file mcp-server-umbraco-mcp.log for extra information on how to fix the issue.

> [!NOTE] > You may need to update to a paid version of Claude.ai in order to have a large enough context window to run your prompts.

Claude Code

Use the Claude Code CLI to add the Umbraco MCP server:

claude mcp add umbraco-mcp npx @umbraco-mcp/umbraco-mcp-cms@alpha

Or configure environment variables and scope:

# Install Claude Code globally (if not already installed)
npm install -g @anthropic-ai/claude-code

# Add with environment variables
claude mcp add umbraco-mcp --env UMBRACO_CLIENT_ID="your-id" --env UMBRACO_CLIENT_SECRET="your-secret" --env UMBRACO_BASE_URL="https://your-domain.com" -- npx @umbraco-mcp/umbraco-mcp-cms@alpha

# Verify installation
claude mcp list

This will add umbraco-mcp to the existing project in the claude.json config file.

VS Code

Click the button to install:

[](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522umbraco-mcp%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540umbraco-mcp%252Fumbraco-mcp-cms%2540alpha%2522%255D%252C%2522env%2522%253A%257B%2522UMBRACOCLIENTID%2522%253A%2522%253CAPI%2520user%2520name%253E%2522%252C%2522UMBRACOCLIENTSECRET%2522%253A%2522%253CAPI%2520client%2520secert%253E%2522%252C%2522UMBRACOBASEURL%2522%253A%2522https%253A%252F%252F%253Cdomain%253E%2522%252C%2522EXCLUDEMANAGEMENTTOOLS%2522%253A%2522%253Ctoolname%253E%252C%253Ctoolname%253E%2522%257D%257D)

Requirements: VS Code 1.101+ with GitHub Copilot Chat extension installed.

Or install manually: Follow the MCP install guide, use this config.

{
  "servers": {
    "umbraco-mcp": {
      "type": "stdio",
      "command": "npx", 
      "args": ["@umbraco-mcp/umbraco-mcp-cms@alpha"],
      "env": {
        "UMBRACO_CLIENT_ID": "",
        "UMBRACO_CLIENT_SECRET": "",
        "UMBRACO_BASE_URL": "https://",
        "EXCLUDE_MANAGEMENT_TOOLS": ","
      }
    }
  }
}

Cursor

Or install manually:

Go to Cursor Settings -> Tools & Integrations -> Add new MCP Server.

Add the following to the config file and update the env variables.

{
  "mcpServers": {
    "umbraco-mcp": {
      "command": "npx", 
      "args": ["@umbraco-mcp/umbraco-mcp-cms@alpha"],
      "env": {
        "UMBRACO_CLIENT_ID": "",
        "UMBRACO_CLIENT_SECRET": "",
        "UMBRACO_BASE_URL": "https://",
        "EXCLUDE_MANAGEMENT_TOOLS": ","
      }
    }
  }
}

Configuration Environment Variables

UMBRACO_CLIENT_ID

Umbraco API User name

UMBRACO_CLIENT_SECRET

Umbraco API User client secert

UMBRACO_BASE_URL

Url of the site you want to connect to, it only needs to be the scheme and domain e.g https://example.com

EXCLUDE_MANAGEMENT_TOOLS

The allows you to specify tools by name if you wish to exclude them for the usable tools list. This is helpful as some Agents, cant handle so many tools. This is a commma seperated list of tools which can be found below.

Umbraco Management API Tools

View Tool list

Culture

get-culture - gets all cultures avaliable to Umbraco

Data Type

get-data-type-search - Search for data types get-data-type - Get a specific data type by ID get-data-type-references - Get references to a data type is-used-data-type - Check if a data type is in use get-data-type-root - Get root level data types get-data-type-children - Get child data types get-data-type-ancestors - Get ancestor data types get-all-data-types - Get all data types delete-data-type - Delete a data type create-data-type - Create a new data type update-data-type - Update an existing data type copy-data-type - Copy a data type move-data-type - Move a data type to a different location create-data-type-folder - Create a folder for organizing data types delete-data-type-folder - Delete a data type folder get-data-type-folder - Get information about a data type folder update-data-type-folder - Update a data type folder details

Dictionary

get-dictionary-search - Search for dictionary items get-dictionary-by-key - Get a dictionary item by key create-dictionary - Create a new dictionary item update-dictionary - Update a dictionary item delete-dictionary - Delete a dictionary item

Document

get-document-by-id - Get a document by ID get-document-publish - Get document publish status get-document-configuration - Get document configuration copy-document - Copy a document create-document - Create a new document post-document-public-access - Set document public access delete-document - Delete a document delete-document-public-access - Remove public access from a document get-document-urls - Get document URLs get-document-domains - Get document domains get-document-audit-log - Get document audit log get-document-public-access - Get document public access settings move-document - Move a document move-to-recycle-bin - Move document to recycle bin get-document-notifications - Get document notifications publish-document - Publish a document publish-document-with-descendants - Publish a document and its descendants sort-document - Sort document order unpublish-document - Unpublish a document update-document - Update a document put-document-domains - Update document domains put-document-notifications - Update document notifications put-document-public-access - Update document public access delete-from-recycle-bin - Delete document from recycle bin empty-recycle-bin - Empty the recycle bin get-recycle-bin-root - Get root items in recycle bin get-recycle-bin-children - Get child items in recycle bin search-document - Search for documents validate-document - Validate a document get-document-root - Get root documents get-document-children - Get child documents get-document-ancestors - Get document ancestors

Document Blueprint

get-blueprint - Get a document blueprint delete-blueprint - Delete a document blueprint update-blueprint - Update a document blueprint create-blueprint - Create a new document blueprint get-blueprint-ancestors - Get blueprint ancestors get-blueprint-children - Get blueprint children get-blueprint-root - Get root blueprints

Document Type

get-document-type - Get a document type get-document-type-configuration - Get document type configuration get-document-type-blueprint - Get document type blueprint get-document-type-by-id-array - Get document types by IDs get-document-type-available-compositions - Get available compositions get-document-type-composition-references - Get composition references update-document-type - Update a document type copy-document-type - Copy a document type move-document-type - Move a document type create-document-type - Create a new document type delete-document-type - Delete a document type create-element-type - Create an element type get-icons - Get available icons get-document-type-allowed-children - Get allowed child types get-all-document-types - Get all document types create-document-type-folder - Create a folder delete-document-type-folder - Delete a folder get-document-type-folder - Get folder info update-document-type-folder - Update folder details get-document-type-root - Get root document types get-document-type-ancestors - Get document type ancestors get-document-type-children - Get document type children

Language

get-language-items - Get all languages get-default-language - Get default language create-language - Create a new language update-language - Update a language delete-language - Delete a language get-language-by-iso-code - Get language by ISO code

Log Viewer

get-log-viewer-saved-search-by-name - Get saved search by name get-log-viewer-level-count - Get log level counts post-log-viewer-saved-search - Save a log search delete-log-viewer-saved-search-by-name - Delete saved search get-log-viewer - Get logs get-log-viewer-level - Get log levels get-log-viewer-search - Search logs get-log-viewer-validate-logs - Validate logs get-log-viewer-message-template - Get message template

Media

get-media-by-id - Get media by ID get-media-ancestors - Get media ancestors get-media-children - Get media children get-media-root - Get root media items create-media - Create new media delete-media - Delete media update-media - Update media get-media-configuration - Get media configuration get-media-urls - Get media URLs validate-media - Validate media sort-media - Sort media items get-media-by-id-array - Get media by IDs move-media - Move media get-media-audit-log - Get media audit log get-media-recycle-bin-root - Get recycle bin root get-media-recycle-bin-children - Get recycle bin children empty-recycle-bin - Empty recycle bin restore-from-recycle-bin - Restore from recycle bin move-media-to-recycle-bin - Move to recycle bin delete-from-recycle-bin - Delete from recycle bin

Media Type

get-media-type-configuration - Get media type configuration get-media-type-by-id - Get media type by ID get-media-type-by-ids - Get media types by IDs get-allowed - Get allowed media types get-media-type-allowed-at-root - Get types allowed at root get-media-type-allowed-children - Get allowed child types get-media-type-composition-references - Get composition references get-root - Get root media types get-children - Get child media types get-ancestors - Get ancestor media types get-folder - Get folder information create-folder - Create a new folder delete-folder - Delete a folder update-folder - Update folder details create-media-type - Create a new media type copy-media-type - Copy a media type get-media-type-available-compositions - Get available compositions update-media-type - Update a media type move-media-type - Move a media type delete-media-type - Delete a media type

Member

get-member - Get member by ID create-member - Create a new member delete-member - Delete a member update-member - Update a member find-member - Find members

Member Group

get-member-group - Get member group get-member-group-by-id-array - Get member groups by IDs create-member-group - Create a new member group update-member-group - Update a member group delete-member-group - Delete a member group get-member-group-root - Get root member groups

Member Type

get-member-type-by-id - Get member type by ID create-member-type - Create a new member type get-member-type-by-id-array - Get member types by IDs delete-member-type - Delete a member type update-member-type - Update a member type copy-member-type - Copy a member type get-member-type-available-compositions - Get available compositions get-member-type-composition-references - Get composition references get-member-type-configuration - Get member type configuration get-member-type-root - Get root member types

Property Type

get-property-type - Get property type by ID get-property-type-all-property-type-groups - Get all property type groups create-property-type - Create a new property type update-property-type - Update a property type delete-property-type - Delete a property type

Redirect

get-all-redirects - Get all redirects get-redirect-by-id - Get redirect by ID delete-redirect - Delete a redirect get-redirect-status - Get redirect status update-redirect-status - Update redirect status

Server

get-server-status - Get server status get-server-log-file - Get server log file tour-status - Get tour status upgrade-status - Get upgrade status

Template

get-template-search - Search for templates by name get-template - Get a template by ID get-templates-by-id-array - Get templates by IDs create-template - Create a new template update-template - Update a template by ID delete-template - Delete a template by ID execute-template-query - Execute template queries and return generated LINQ code get-template-query-settings - Get schema for template queries (document types, properties, operators) get-template-root - Get root template items get-template-children - Get child templates or template folders by parent ID get-template-ancestors - Get ancestors of a template by ID

Temporary File

create-temporary-file - Create a temporary file get-temporary-file - Get a temporary file delete-temporary-file - Delete a temporary file get-temporary-file-configuration - Get temporary file configuration

User Group

get-user-group - Get user group get-user-group-by-id-array - Get user groups by IDs get-user-groups - Get all user groups get-filter-user-group - Filter user groups create-user-group - Create a new user group update-user-group - Update a user group delete-user-group - Delete a user group delete-user-groups - Delete multiple user groups

Webhook

get-webhook-by-id - Get webhook by ID get-webhook-by-id-array - Get webhoo

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.