GitHubスター
52
ユーザー評価
未評価
お気に入り
0
閲覧数
23
フォーク
17
イシュー
9
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:
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": "<API user name>",
"UMBRACO_CLIENT_SECRET": "<API client secret>",
"UMBRACO_BASE_URL": "https://<domain>",
"EXCLUDE_MANAGEMENT_TOOLS": "<toolname>,<toolname>"
}
}
}
}
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": "<API user name>",
"UMBRACO_CLIENT_SECRET": "<API client secret>",
"UMBRACO_BASE_URL": "https://<domain>",
"EXCLUDE_MANAGEMENT_TOOLS": "<toolname>,<toolname>"
}
}
}
}
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://
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 typesget-data-type
- Get a specific data type by IDget-data-type-references
- Get references to a data typeis-used-data-type
- Check if a data type is in useget-data-type-root
- Get root level data typesget-data-type-children
- Get child data typesget-data-type-ancestors
- Get ancestor data typesget-all-data-types
- Get all data typesdelete-data-type
- Delete a data typecreate-data-type
- Create a new data typeupdate-data-type
- Update an existing data typecopy-data-type
- Copy a data typemove-data-type
- Move a data type to a different locationcreate-data-type-folder
- Create a folder for organizing data typesdelete-data-type-folder
- Delete a data type folderget-data-type-folder
- Get information about a data type folderupdate-data-type-folder
- Update a data type folder details
Dictionary
get-dictionary-search
- Search for dictionary itemsget-dictionary-by-key
- Get a dictionary item by keycreate-dictionary
- Create a new dictionary itemupdate-dictionary
- Update a dictionary itemdelete-dictionary
- Delete a dictionary item
Document
get-document-by-id
- Get a document by IDget-document-publish
- Get document publish statusget-document-configuration
- Get document configurationcopy-document
- Copy a documentcreate-document
- Create a new documentpost-document-public-access
- Set document public accessdelete-document
- Delete a documentdelete-document-public-access
- Remove public access from a documentget-document-urls
- Get document URLsget-document-domains
- Get document domainsget-document-audit-log
- Get document audit logget-document-public-access
- Get document public access settingsmove-document
- Move a documentmove-to-recycle-bin
- Move document to recycle binget-document-notifications
- Get document notificationspublish-document
- Publish a documentpublish-document-with-descendants
- Publish a document and its descendantssort-document
- Sort document orderunpublish-document
- Unpublish a documentupdate-document
- Update a documentput-document-domains
- Update document domainsput-document-notifications
- Update document notificationsput-document-public-access
- Update document public accessdelete-from-recycle-bin
- Delete document from recycle binempty-recycle-bin
- Empty the recycle binget-recycle-bin-root
- Get root items in recycle binget-recycle-bin-children
- Get child items in recycle binsearch-document
- Search for documentsvalidate-document
- Validate a documentget-document-root
- Get root documentsget-document-children
- Get child documentsget-document-ancestors
- Get document ancestors
Document Blueprint
get-blueprint
- Get a document blueprintdelete-blueprint
- Delete a document blueprintupdate-blueprint
- Update a document blueprintcreate-blueprint
- Create a new document blueprintget-blueprint-ancestors
- Get blueprint ancestorsget-blueprint-children
- Get blueprint childrenget-blueprint-root
- Get root blueprints
Document Type
get-document-type
- Get a document typeget-document-type-configuration
- Get document type configurationget-document-type-blueprint
- Get document type blueprintget-document-type-by-id-array
- Get document types by IDsget-document-type-available-compositions
- Get available compositionsget-document-type-composition-references
- Get composition referencesupdate-document-type
- Update a document typecopy-document-type
- Copy a document typemove-document-type
- Move a document typecreate-document-type
- Create a new document typedelete-document-type
- Delete a document typecreate-element-type
- Create an element typeget-icons
- Get available iconsget-document-type-allowed-children
- Get allowed child typesget-all-document-types
- Get all document typescreate-document-type-folder
- Create a folderdelete-document-type-folder
- Delete a folderget-document-type-folder
- Get folder infoupdate-document-type-folder
- Update folder detailsget-document-type-root
- Get root document typesget-document-type-ancestors
- Get document type ancestorsget-document-type-children
- Get document type children
Language
get-language-items
- Get all languagesget-default-language
- Get default languagecreate-language
- Create a new languageupdate-language
- Update a languagedelete-language
- Delete a languageget-language-by-iso-code
- Get language by ISO code
Log Viewer
get-log-viewer-saved-search-by-name
- Get saved search by nameget-log-viewer-level-count
- Get log level countspost-log-viewer-saved-search
- Save a log searchdelete-log-viewer-saved-search-by-name
- Delete saved searchget-log-viewer
- Get logsget-log-viewer-level
- Get log levelsget-log-viewer-search
- Search logsget-log-viewer-validate-logs
- Validate logsget-log-viewer-message-template
- Get message template
Media
get-media-by-id
- Get media by IDget-media-ancestors
- Get media ancestorsget-media-children
- Get media childrenget-media-root
- Get root media itemscreate-media
- Create new mediadelete-media
- Delete mediaupdate-media
- Update mediaget-media-configuration
- Get media configurationget-media-urls
- Get media URLsvalidate-media
- Validate mediasort-media
- Sort media itemsget-media-by-id-array
- Get media by IDsmove-media
- Move mediaget-media-audit-log
- Get media audit logget-media-recycle-bin-root
- Get recycle bin rootget-media-recycle-bin-children
- Get recycle bin childrenempty-recycle-bin
- Empty recycle binrestore-from-recycle-bin
- Restore from recycle binmove-media-to-recycle-bin
- Move to recycle bindelete-from-recycle-bin
- Delete from recycle bin
Media Type
get-media-type-configuration
- Get media type configurationget-media-type-by-id
- Get media type by IDget-media-type-by-ids
- Get media types by IDsget-allowed
- Get allowed media typesget-media-type-allowed-at-root
- Get types allowed at rootget-media-type-allowed-children
- Get allowed child typesget-media-type-composition-references
- Get composition referencesget-root
- Get root media typesget-children
- Get child media typesget-ancestors
- Get ancestor media typesget-folder
- Get folder informationcreate-folder
- Create a new folderdelete-folder
- Delete a folderupdate-folder
- Update folder detailscreate-media-type
- Create a new media typecopy-media-type
- Copy a media typeget-media-type-available-compositions
- Get available compositionsupdate-media-type
- Update a media typemove-media-type
- Move a media typedelete-media-type
- Delete a media type
Member
get-member
- Get member by IDcreate-member
- Create a new memberdelete-member
- Delete a memberupdate-member
- Update a memberfind-member
- Find members
Member Group
get-member-group
- Get member groupget-member-group-by-id-array
- Get member groups by IDscreate-member-group
- Create a new member groupupdate-member-group
- Update a member groupdelete-member-group
- Delete a member groupget-member-group-root
- Get root member groups
Member Type
get-member-type-by-id
- Get member type by IDcreate-member-type
- Create a new member typeget-member-type-by-id-array
- Get member types by IDsdelete-member-type
- Delete a member typeupdate-member-type
- Update a member typecopy-member-type
- Copy a member typeget-member-type-available-compositions
- Get available compositionsget-member-type-composition-references
- Get composition referencesget-member-type-configuration
- Get member type configurationget-member-type-root
- Get root member types
Property Type
get-property-type
- Get property type by IDget-property-type-all-property-type-groups
- Get all property type groupscreate-property-type
- Create a new property typeupdate-property-type
- Update a property typedelete-property-type
- Delete a property type
Redirect
get-all-redirects
- Get all redirectsget-redirect-by-id
- Get redirect by IDdelete-redirect
- Delete a redirectget-redirect-status
- Get redirect statusupdate-redirect-status
- Update redirect status
Server
get-server-status
- Get server statusget-server-log-file
- Get server log filetour-status
- Get tour statusupgrade-status
- Get upgrade status
Template
get-template-search
- Search for templates by nameget-template
- Get a template by IDget-templates-by-id-array
- Get templates by IDscreate-template
- Create a new templateupdate-template
- Update a template by IDdelete-template
- Delete a template by IDexecute-template-query
- Execute template queries and return generated LINQ codeget-template-query-settings
- Get schema for template queries (document types, properties, operators)get-template-root
- Get root template itemsget-template-children
- Get child templates or template folders by parent IDget-template-ancestors
- Get ancestors of a template by ID
Temporary File
create-temporary-file
- Create a temporary fileget-temporary-file
- Get a temporary filedelete-temporary-file
- Delete a temporary fileget-temporary-file-configuration
- Get temporary file configuration
User Group
get-user-group
- Get user groupget-user-group-by-id-array
- Get user groups by IDsget-user-groups
- Get all user groupsget-filter-user-group
- Filter user groupscreate-user-group
- Create a new user groupupdate-user-group
- Update a user groupdelete-user-group
- Delete a user groupdelete-user-groups
- Delete multiple user groups
Webhook
get-webhook-by-id
- Get webhook by IDget-webhook-by-id-array
- Get webhooks by IDsdelete-webhook
- Delete a webhookupdate-webhook
- Update a webhookget-webhook-events
- Get webhook eventsget-all-webhook-logs
- Get all webhook logscreate-webhook
- Create a new webhook
Contributing with AI Tools
This project is optimized for development with AI coding assistants. We provide instruction files for popular AI tools to help maintain consistency with our established patterns and testing standards.
Using rulesync
The project includes rulesync configuration files that can automatically generate instruction files for 19+ AI development tools. Generate configuration files for your preferred AI tools:
# Generate only for Claude Code
npx rulesync generate --claudecode
# Generate only for Cursor
npx rulesync generate --cursor
# Generate only for Vs Code Copilot
npx rulesync generate --copilot
Other AI Tools
rulesync supports 19+ AI development tools including GitHub Copilot, Cline, Aider, and more. Check the rulesync repository for the complete list of supported tools.
The instruction files cover:
- MCP development patterns and conventions
- TypeScript implementation guidelines
- Comprehensive testing standards with builders and helpers
- Project-specific context and architecture
- API integration patterns with Umbraco Management API