Sitecore Community MCP
Gives AI agents direct read/write access to Sitecore instances (SitecoreAI and XM/XP), exposing 121 tools for search, query, create, read, update, delete, media, PowerShell, logging, security and presentation operations. Integrates across four Sitecore API surfaces — the Authoring and Management GraphQL API, the Item Service, GraphQL Edge, and Sitecore PowerShell Extensions — and includes workflow guides for composing pages, bulk updates and diagnosing connection issues.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Sitecore Community MCP Create a new About Us page under Home using the standard template."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Sitecore Community MCP
This repository contains the source code for the Sitecore Community MCP server — an open-source Model Context Protocol server that gives AI agents direct read/write access to Sitecore, so you stop copy-pasting between your agent and the Content Editor.
121 tools across search, query, create, read, update, delete, media, PowerShell, logging, security and presentation
Three guides —
guide://compose-page,guide://bulk-updateandguide://diagnose-connection— resources an agent can read mid-task: two common, complex workflows that you'd want to use this MCP for, plus a connection issue self diagnosis helper.Covers four Sitecore API surfaces: the Authoring and Management GraphQL API, the Item Service, GraphQL Edge and Sitecore PowerShell Extensions
Works with SitecoreAI and Sitecore XM/XP (all versions), from any MCP-compatible client
Implements MCP protocol revision 2026-07-28, and answers the older
initializehandshake from the same tool registrations — negotiating down to any revision from2025-11-25to2024-10-07, so a client on either era sees the same toolsReported impact: 5× faster Figma-to-Sitecore workflows and ~70% less manual scaffolding (case study)
Three ways to run it: npm, Docker, or from source
Getting started with Sitecore Community MCP
To run the Sitecore Community MCP server, you need:
Node — the latest long-term support (LTS) release.
A Sitecore XM, XP or SitecoreAI instance. Which parts you enable decides which tools work: the
authoring.*groups need only the Authoring and Management API (normally already on in the cloud) plus a token, while the Item Service and SPE Remoting are off by default and need a config patch. Preparing your Sitecore instance covers all three and how to verify each.
Adding the server to your MCP client
Add the entry below to your client's server map — mcpServers in Cursor, Claude Code and
most other clients, servers in VS Code — and fill in your own endpoints and credentials:
{
"mcpServers": {
"sitecore-mcp": {
"type": "stdio",
"command": "npx",
"args": ["@antonytm/mcp-sitecore-server@latest"],
"env": {
"TRANSPORT": "stdio",
"GRAPHQL_ENDPOINT": "https://xmcloudcm.localhost/sitecore/api/graph/",
"GRAPHQL_SCHEMAS": "edge",
"GRAPHQL_API_KEY": "{6D3F291E-66A5-4703-887A-D549AF83D859}",
"GRAPHQL_HEADERS": "",
"ITEM_SERVICE_DOMAIN": "sitecore",
"ITEM_SERVICE_USERNAME": "admin",
"ITEM_SERVICE_PASSWORD": "b",
"ITEM_SERVICE_SERVER_URL": "https://xmcloudcm.localhost/",
"POWERSHELL_DOMAIN": "sitecore",
"POWERSHELL_USERNAME": "admin",
"POWERSHELL_PASSWORD": "b",
"POWERSHELL_SERVER_URL": "https://xmcloudcm.localhost/",
"AUTHORING_CLIENT_ID": "",
"AUTHORING_CLIENT_SECRET": "",
"TOOL_PROFILE": ""
}
}
}
}TOOL_PROFILE takes a comma-separated list of presets, and unions what each one hides.
Every preset names something absent or unwanted rather than a platform. Four name an API
surface your instance does not serve — no-spe, no-item-service,
no-edge-graphql and no-authoring-api — so an instance missing two of them can
say so. no-account-management is the one that is not about a missing surface: it
hides the twelve tools that create or edit an account on the CM, for a deployment that
would rather an agent could not do that at all (item security, and reading accounts and
roles, are untouched):
TOOL_PROFILE=no-spe,no-item-serviceno-spe is the big one: without SPE installed and its remoting service enabled, roughly
three quarters of this server's tools cannot run, and hiding them is schema an agent no
longer pays for on every turn. An unknown name is reported on stderr and ignored, leaving
the rest of the list in force.
Every setting is documented in Configuration. Agents have a limit
on how many tools they can hold, so before you get far, read
Tool selection and trim the surface with TOOL_PROFILE,
TOOL_GROUPS and DISABLED_TOOLS.
To run the server in a container or from source instead, see Running the server.
Related MCP server: WordPress MCP Server
How this compares to the Sitecore Marketer MCP
Sitecore's own Marketer MCP is a hosted service aimed at marketers on SitecoreAI. This server is the developer-grade counterpart, and on that ground it is the stronger tool:
Sitecore Community MCP | Sitecore Marketer MCP | |
Platforms | SitecoreAI and XM/XP, all versions — including your local Docker CM | SitecoreAI only |
Hosting | Self-hosted (npm, Docker, source); credentials never leave your infrastructure | Hosted by Sitecore; OAuth through the cloud |
Surface | 121 tools across the full developer surface: items, templates, presentation, media, security, indexing, logs, publishing, GraphQL, raw PowerShell | Marketer operations: pages, components, briefs, brand kits, personalization, A/B tests |
Escape hatch |
| Closed tool set |
Layout safety |
| Writes are not validated against placeholder settings |
Tool gating |
| Fixed tool list |
They are complementary rather than exclusive: the Marketer MCP carries the cloud marketing features this server has no API for (briefs, brand kits, personalization variants, A/B tests), and nothing stops a client from connecting both. For building, migrating, auditing and operating Sitecore solutions, this server is the one with the depth.
Documentation and community resources
Preparing your Sitecore instance — SPE Remoting, the Item Service, GraphQL keys, and the config patch that enables them
Running the server — npm, Docker, from source, and the two transports
Tool reference — every tool, grouped by API surface
Configuration — environment variables, transports, timeouts and TLS
Tool selection —
TOOL_GROUPS,DISABLED_TOOLSandTOOL_PROFILEGuides — the
guide://compose-page,guide://bulk-updateandguide://diagnose-connectionresources, and when each is offeredDocker images — the published Linux and Windows images
Changelog — what's new in 2.0 and its breaking changes
Community resources:
Contributions
We are very grateful to the community for contributing bug fixes and improvements. We welcome all efforts to evolve and improve this server; read below to learn how to participate in those efforts.
Contributing Guide
Read our contributing guide to learn about our development process, how to propose bug fixes and improvements, and how to build, debug and test your changes.
License
Sitecore Community MCP is using the Apache 2.0 license.
Support
This is a community project and is not supported by Sitecore.
Issues, bugs and feature requests: open an issue at Antonytm/mcp-sitecore-server/issues.
Questions about Sitecore itself: Sitecore Stack Exchange or the Sitecore Community Slack will serve you better than a GitHub issue.
Available Tools
123 toolsadd-rendering-to-placeholderA
Adds a rendering to a placeholder on a page, refusing it when the placeholder's settings do not allow that component (the allow-list is named in the error). This is the tool to compose a page with: presentation-add-rendering writes whatever it is told, and an invalid layout still saves and renders. Assigns a collision-free DynamicPlaceholderId when the rendering's parameters template defines one, and writes the full parameter set the template declares. Returns the placeholder path a child rendering should target, so a nested build is one call per level. Pass force=true to skip validation for migration or repair work. Read the guide://compose-page resource for the order to run the composition tools in, and for the dynamic placeholder, splitter and GridParameters cases that silently produce a broken page when guessed at.
Inputs: placeholder (required), path, force, index, +10 more.
authoring-copy-itemA
Copies a Sitecore item to another parent over the Authoring and Management API. Copies the whole subtree by default; set deepCopy false to copy the item alone. Supply exactly one of id or path for the source, and exactly one of targetParentId or targetParentPath for the destination.
Inputs: id, path, database, deepCopy, +3 more.
authoring-create-itemA
Creates a Sitecore item from a template over the Authoring and Management API and returns the created item. The parent must be given as a GUID (the API takes no parent path here) — use authoring-get-item to resolve a path to its ID first.
Inputs: name (required), parent (required), templateId (required), fields, +2 more.
authoring-create-item-templateB
Creates a Sitecore data template, with its sections and fields, in one call over the Authoring and Management API. The parent must be a GUID — the folder under /sitecore/templates the template belongs in. Field types are Sitecore's own names, e.g. 'Single-Line Text', 'Rich Text', 'Image', 'General Link', 'Droptree'.
Inputs: name (required), parent (required), icon, database, +4 more.
authoring-delete-itemADestructive
Deletes a Sitecore item over the Authoring and Management API. By default the item goes to the recycle bin and can be restored; permanently true destroys it outright. Deleting an item deletes its descendants with it. Supply exactly one of id or path.
Inputs: id, path, database, permanently.
authoring-get-itemARead-only
Reads a Sitecore item by ID or path over the Authoring and Management API, returning its identity, template and field values. Reads the authoring database, so unpublished content is visible — unlike the Edge query tools. Supply exactly one of id or path.
Inputs: id, path, version, database, +3 more.
authoring-get-item-templateARead-only
Reads a Sitecore data template over the Authoring and Management API, returning its sections and field definitions (name, type, source). Call this before authoring-create-item to learn which fields a template accepts, or before authoring-update-item-template to get the section and field IDs an update needs. Sections report their ID as itemTemplateSectionId; an update supplies that same value as templateSectionId. Supply exactly one of templateId or path.
Inputs: path, database, templateId.
authoring-get-jobARead-only
Reads one Sitecore background job by name or handle over the Authoring and Management API, returning its state, progress and messages. This is how you find out whether an index rebuild or other queued operation finished. Supply exactly one of jobName or handle.
Inputs: handle, jobName.
authoring-get-media-itemARead-only
Reads a media item over the Authoring and Management API, returning its identity, mime type, size and URL. Use it after authoring-upload-media to get the ID an image field value needs, or to check what is already in the media library. Supply exactly one of id or path.
Inputs: id, path, database, language.
authoring-get-siteARead-only
Reads one site's configuration by name over the Authoring and Management API — paths, database, language, device and the editing switches. Use authoring-list-sites first if you do not know the site's name.
Inputs: siteName (required).
authoring-graphqlADestructive
Executes any query or mutation against the Sitecore Authoring and Management GraphQL API and returns the data as JSON. The document is syntax-checked before it is sent. Unlike the Edge endpoint, this one reads and writes the authoring databases, so unpublished content is visible and mutations take effect immediately. Prefer a typed authoring-* tool when one covers the operation; use this for the rest of the schema, with authoring-introspect-schema for the SDL. The API supports no subscriptions, and rejects GET — everything goes over POST, which this tool does for you.
Inputs: query (required), variables.
authoring-introspect-schemaARead-only
Explores the Sitecore Authoring and Management GraphQL schema (items, templates, media, sites, search, publishing, jobs, indexing, workflow, security, identity). With no arguments it returns the operation index: 127 queries and mutations, one line each. Use type: "" for one operation or type in full — for an operation the input types its arguments need are included, so one call is enough to write the document — search: "" to find an operation by what it does, and full: true for the entire SDL (117,188 characters on a live CM). Most of this schema has no typed authoring-* tool, so this is how you find the rest: createUser, createSite, executeWorkflowCommand, addLanguage, archiveItem, cancelPublishing and around a hundred more. Not the Edge schema — that is introspection-graphql-*.
Inputs: full, type, search, includeDescriptions.
authoring-list-jobsARead-only
Lists Sitecore background jobs over the Authoring and Management API. jobName accepts wildcards: '' for every job, 'myjob' for names starting with it, '*myjob' for names ending with it, 'myjob' for names containing it. Omit jobName to list them all. Use this to find out what the instance is busy with, or to locate a job whose exact name you do not know.
Inputs: first, jobName.
authoring-list-sitesARead-only
Lists the sites configured on the Sitecore instance over the Authoring and Management API, with each site's root path, start path and root item ID. Usually the first call when working on an instance you have not seen: the root item ID is what authoring-search scopes a subtree search by, and the root path is what item paths hang off. System sites (shell, admin, login and the rest) are hidden unless includeSystemSites is set.
Inputs: includeSystemSites.
authoring-move-itemA
Moves a Sitecore item to another parent over the Authoring and Management API, taking its descendants with it. Every link to the item survives the move — prefer this over delete-and-recreate, which breaks them. Supply exactly one of id or path, and exactly one of targetParentId or targetParentPath.
Inputs: id, path, database, sortOrder, +2 more.
authoring-publishing-statusARead-only
Reads the status of a publish queued by authoring-publish-item. Returns state (INITIALIZING, QUEUED, RUNNING, ABORTREQUESTED, ABORTED, FINISHED, UNKNOWN), isDone, isFailed and how many items have been processed. Poll this until isDone before treating published content as live.
Inputs: publishingOperationId (required).
authoring-publish-itemA
Queues a publish of one or more items over the Authoring and Management API and returns an operationId. Publishing is asynchronous — the call returns as soon as the job is queued, so poll authoring-publishing-status with the operationId before reporting that content is live. On SitecoreAI the target is 'experienceedge'; on XM/XP it is usually 'web'. Supply exactly one of rootItemIds or rootItemPaths.
Inputs: languages (required), targetDatabases (required), displayName, rootItemIds, +5 more.
authoring-rebuild-indexesA
Starts a rebuild of one or more Sitecore search indexes over the Authoring and Management API and returns the jobs it queued. A full rebuild of sitecore_master_index is expensive and leaves search results incomplete while it runs, so prefer it only when the index is actually stale. Poll the returned job names with authoring-get-job. Use authoring-graphql with 'query { indexes { nodes { name } } }' to list the index names.
Inputs: indexNames (required).
authoring-rename-itemA
Renames a Sitecore item over the Authoring and Management API. The item keeps its ID, so links to it survive, but its path changes and any URL derived from the name changes with it. Supply exactly one of id or path.
Inputs: newName (required), id, path, database.
authoring-searchARead-only
Searches a Sitecore index over the Authoring and Management API and returns matching items. Criteria combine on the operator you give each one: MUST is AND, SHOULD is OR, NOT excludes. Useful system fields: '_name', '_fullpath' (the item path), '_path' (matches items under an ancestor, given that ancestor's ID with no braces or dashes), '_template' and '_templatename'. IDs in index values are lowercase and unpunctuated, e.g. '110d559fdea542ea9c1c8a5df7e70ef9'. Returns 10 results unless pageSize says otherwise. A '_path' criterion is the cheap way to read a whole subtree at any depth — one query where item-service-get-item-descendants makes one request per node — at the cost of returning identity fields rather than field values, from the index rather than the database.
Inputs: criteria (required), index, language, pageSize, +4 more.
authoring-update-itemA
Sets field values on an existing Sitecore item over the Authoring and Management API. Only the fields named are touched; set reset true on a field to return it to its template's standard value instead of writing a value. Supply exactly one of id or path.
Inputs: fields (required), id, path, version, +2 more.
authoring-update-item-templateA
Updates a Sitecore data template over the Authoring and Management API. Sections and fields carrying an ID are updated; those without one are created. Matching is by ID only, never by name: to add a field to a section that already exists you must pass that section's templateSectionId (read it as itemTemplateSectionId from authoring-get-item-template), otherwise the call is rejected for creating a second section of the same name. Nothing is removed unless deleteMissingFields is true — and when it is, every section and field absent from this call is deleted, along with the content stored in them, so read the template first.
Inputs: templateId (required), icon, name, database, +5 more.
authoring-upload-mediaADestructive
Uploads a file into the Sitecore media library over the Authoring and Management API and returns the created media item. Does both halves of the documented flow: asks uploadMedia for a pre-signed URL, then POSTs the bytes to it. Source is exactly one of sourceUrl (fetched by this server — use this to import from a live site), filePath (local to the machine running this MCP server), or content (base64). Needs no SPE Remoting, unlike media-upload.
Inputs: itemPath (required), alt, content, database, +7 more.
common-add-item-versionB
Creates a version of the item in a new language based on an existing language version.
Inputs: id, full, path, fields, +8 more.
common-convert-from-item-cloneC
Converts an item from a clone to a fully independent item.
Inputs: id, full, path, fields, +3 more.
common-get-archiveCRead-only
Gets Sitecore database archives.
Inputs: full, name, database.
common-get-archive-itemARead-only
Gets a page of the items found in the specified archive, with the archive's total entry count. Returns the 100 most recently archived entries unless first/skip say otherwise.
Inputs: archive (required), database (required), full, skip, +3 more.
common-get-cacheARead-only
Gets information about Sitecore caches, with their size and occupancy. Omit name to return every cache. Cache names contain square brackets ('master[items]'); pass one exactly as reported and it is matched literally, or use * / ? for a wildcard.
Inputs: full, name.
common-get-databaseCRead-only
Gets information about Sitecore databases.
Inputs: full, name.
common-get-item-cloneCRead-only
Returns all the clones for the specified item.
Inputs: id, full, path, fields, +1 more.
common-get-item-fieldCRead-only
Gets item fields as either names or fields or template fields.
Inputs: id, name, path, database, +3 more.
common-get-item-referenceBRead-only
Gets item references for a Sitecore item, showing where it is used throughout the system.
Inputs: id, full, path, fields, +3 more.
common-get-item-referrerCRead-only
Gets items referring to a Sitecore item, showing which items reference it.
Inputs: id, full, path, fields, +3 more.
common-get-item-templateBRead-only
Gets template information for a Sitecore item.
Inputs: id, full, path, fields, +1 more.
common-get-item-workflow-eventCRead-only
Gets entries from the workflow history for the specified item.
Inputs: id, path, database, identity, +1 more.
common-get-sitecore-jobBRead-only
Gets the current Sitecore jobs with their state and progress. Get-SitecoreJob takes no arguments, so every job is returned; read State and IsDone to find the one you want.
Inputs: full.
common-invoke-workflowC
Executes workflow action for a Sitecore item.
Inputs: commandName (required), id, path, comments, +2 more.
common-new-item-cloneC
Creates a new item clone based on the item provided.
Inputs: name (required), destination (required), id, full, +4 more.
common-new-item-workflow-eventC
Creates a new entry in the workflow history for a Sitecore item.
Inputs: id, path, text, database, +3 more.
common-publish-itemA
Publishes a Sitecore item. On SitecoreAI there is no web database — content publishes to Edge, which lives on Sitecore's cloud servers only, so this works on deployed environments but a local development CM has no publishing target.
Inputs: id, path, asJob, target, +8 more.
common-remove-archive-itemBDestructive
Removes items permanently from the specified archive.
Inputs: archive (required), database (required), itemId, identity.
common-remove-item-versionCDestructive
Removes a version of a Sitecore item.
Inputs: language (required), id, path, archive, +4 more.
common-reset-item-fieldCDestructive
Resets item fields, specified as either names, fields or template fields.
Inputs: id, name, path, database, +1 more.
common-restart-applicationBDestructive
Restarts the Sitecore Application pool.
Inputs: no named parameters.
common-restore-archive-itemB
Restores items to the original database from the specified archive.
Inputs: archive (required), database (required), itemId, identity.
common-set-base-templateADestructive
Adds or removes a base template on a template item. Removing one takes its fields off every item built from the template, along with their values.
Inputs: action (required), template (required), id, path, +1 more.
common-set-item-templateC
Sets the item template.
Inputs: template (required), id, path, database, +1 more.
common-test-base-templateBRead-only
Checks if the item inherits from the specified template.
Inputs: template (required), id, path, database.
common-update-item-referrerC
Updates all references to the specified item to point to a new provided in the -NewTarget or removes links to the item.
Inputs: id, path, database, language, +2 more.
configARead-only
Prints the configuration of the Sitecore MCP server. Secrets (passwords, the GraphQL API key, the authorization header) are redacted.
Inputs: no named parameters.
create-component-datasourceA
Creates the datasource item for a component, using the Datasource Template and Datasource Location declared on the rendering itself. placement='page-local' (default) creates /Data/ and returns the layout reference form 'local:/Data/' that authored pages use; placement='shared' resolves the rendering's pipe-separated Datasource Location candidates in order and creates the item in the first that exists, returning the item ID to reference it by. Fails naming every candidate it tried when none resolves, rather than guessing at a location. Pass the field values in 'fields' and they are set on the new item.
Inputs: name, path, fields, pageId, +5 more.
get-allowed-components-by-placeholderARead-only
Lists the renderings a placeholder allows on a given page, read from the placeholder settings items that govern it. Call this before adding a rendering: a placeholder that forbids a component will still accept it silently, and the page will render. Resolves site-level settings first (/Presentation/Placeholder Settings) and falls back to the global tree (/sitecore/layout/Placeholder Settings/Project/...); settingsItemPath in the result says which item answered. Handles dynamic placeholders: a runtime path like /headless-main/page-section-1/container-2 is matched on its leaf segment against wildcard keys such as container-{*}. Allowed control IDs that resolve to no item are reported under 'Unresolved' rather than dropped silently — that is a content defect worth seeing. Found=false means no settings item governs the key, so check the spelling before treating it as unrestricted.
Inputs: placeholderPath (required), path, pageId, project, +2 more.
get-pages-by-siteARead-only
Lists the pages of a site. Returns { Matched, Returned, Truncated, Root, SiteName, Pages: [{ ID, Path, Template, TemplateID }] }. An item counts as a page when it has presentation (a layout on the item or on its template's standard values), which is what makes it addressable as a page — not a guess from template naming.
Inputs: path, limit, database, rootPath, +1 more.
get-powershell-documentationARead-only
The Sitecore PowerShell Extensions command reference, for writing run-powershell-script scripts. Reveals progressively rather than returning the whole ~510KB corpus: call it with NO arguments first for an index of all 129 commands with one-line summaries, then call it again with 'command' for the full page — syntax, every parameter, and examples — of the one or few you need. 'search' matches names, summaries and page bodies when you know what you want to do but not which cmdlet does it; 'category' lists one group. Do not fetch pages you are not about to use.
Inputs: search, command, category.
get-site-informationARead-only
Returns one site's definition plus the paths the composition tools need: the home item, the site-level Placeholder Settings root, the Available Renderings root, the shared Data folder, the site definition item, and the project (tenant) folder used to resolve global placeholder settings. Address the site by name, or by any item path inside it.
Inputs: path, database, siteName.
indexing-find-itemARead-only
Finds items through the Sitecore Content Search API over SPE. Prefer authoring-search where it is available: it needs no SPE, scopes to a subtree with a '_path' criterion, and pages with a real total. For published content, a search query through query-graphql- is also cheaper than this. Reach for this tool when neither is configured, or when you need an index this server's other surfaces cannot address by name. Dates are ISO 8601 (e.g. '2023-10-01T00:00:00Z'). Returns Skip, First, Returned, HasMore and Items; HasMore is how you know to page, since Content Search reports no total.
Inputs: criteria (required), skip, first, index.
indexing-get-search-indexARead-only
Get information about Sitecore search indexes, addressed by name. SPE's Get-SearchIndex takes no other filter, so filter the returned rows rather than asking the CM to. IndexingState (Started / Stopped) is reliable; the Summary fields (NumberOfDocuments, IsHealthy, IsClean, OutOfDateIndex) come from the search provider and are not dependable everywhere — on an XM Cloud CM, where every index shares one Solr core, NumberOfDocuments reads 0 and IsHealthy false on an index that is serving queries perfectly well. Run an actual query with indexing-find-item before concluding an index is broken.
Inputs: full, name.
indexing-rebuild-search-indexA
Rebuilds Sitecore search indexes. Omit id and path to rebuild whole indexes — and omit name too to rebuild every index, which is expensive and leaves search results incomplete while it runs. Supply id or path to rebuild only that item's subtree, which is what you want after changing a branch of content. Pass asJob to queue it and poll with common-get-sitecore-job rather than waiting.
Inputs: id, name, path, asJob, +2 more.
indexing-set-search-index-stateA
Suspends, stops or resumes Sitecore search indexes. Omit name to act on every index in the matching state. To rebuild an index use indexing-rebuild-search-index; to read the current state use indexing-get-search-index.
Inputs: action (required), name.
introspection-graphql-edgeARead-only
Explores the Sitecore GraphQL 'edge' schema. With no arguments it returns the root operations plus the Item interface — the whole contract for querying this endpoint, a couple of KB. Use type: "" for one type in full, search: "" to find one, and full: true only when you genuinely need every definition: a delivery schema's full SDL measured 777,501 characters (~194,000 tokens) on a live CM, two thirds of it repeated descriptions. Prefer the typed item/presentation tools when one already answers the question, and authoring-get-item-template or common-get-item-field to read a template's fields — both are far cheaper than the generated per-template types here.
Inputs: full, type, search, includeDescriptions.
introspection-graphql-masterARead-only
Explores the Sitecore GraphQL 'master' schema. With no arguments it returns the root operations plus the Item interface — the whole contract for querying this endpoint, a couple of KB. Use type: "" for one type in full, search: "" to find one, and full: true only when you genuinely need every definition: a delivery schema's full SDL measured 777,501 characters (~194,000 tokens) on a live CM, two thirds of it repeated descriptions. Prefer the typed item/presentation tools when one already answers the question, and authoring-get-item-template or common-get-item-field to read a template's fields — both are far cheaper than the generated per-template types here.
Inputs: full, type, search, includeDescriptions.
item-service-create-itemC
Create a new Sitecore item under parent path with name using template id.
Inputs: itemName (required), parentPath (required), templateId (required), data, +1 more.
item-service-delete-itemCDestructive
Delete a Sitecore item by its ID.
Inputs: id (required), options.
item-service-edit-itemC
Edit a Sitecore item by its ID.
Inputs: id (required), data (required), options.
item-service-get-itemCRead-only
Get a Sitecore item by its ID or path.
Inputs: id, path, options.
item-service-get-item-childrenARead-only
Get the direct children of a Sitecore item by its ID, with all their fields. Pass options.fields to return only the fields you need — the full form is roughly 1.9KB per child.
Inputs: id (required), options.
item-service-get-item-descendantsARead-only
Gets every descendant of a Sitecore item by ID, with all their fields. Walks the tree client-side: one request per node, issued sequentially, so a large subtree costs seconds to minutes and returns an unpaged result. For structure only (paths, names, templates) at any depth, authoring-search with a '_path' criterion is one indexed query instead. Truncates at DESCENDANTS_MAX_ITEMS (5000) and says so. See the guide://tool-selection resource.
Inputs: id (required), options.
item-service-get-languagesBRead-only
Get Sitecore languages.
Inputs: no named parameters.
item-service-search-itemsBRead-only
Search Sitecore items using the ItemService RESTful API. The endpoint's facet breakdown is omitted unless includeFacets is set — it accounted for 96% of the response on a live CM and is rarely what the caller is after.
Inputs: term (required), page, facet, fields, +4 more.
list-insert-optionsARead-only
Lists the insert options configured for an item — the templates and branches that may be created under it — read from its __Masters field (which inherits from the template's standard values). Each row reports Kind: 'Branch' items copy a whole subtree, 'Template' items create a single item. Note that insert rules are not evaluated (the uiGetMasters pipeline the Content Editor runs is not available on an SitecoreAI CM), so a project that uses them may see more options in the editor than are listed here. IDs that resolve to no item are reported under Unresolved.
Inputs: path, itemId, database, language.
list-site-componentsARead-only
Lists the renderings a site makes available, grouped by its Available Renderings groups (Page Content, Page Structure, FEaaS, Forms, Global on a Stride site). This is the site's component inventory, NOT an allow-list: the groups do not determine where a rendering may be placed. Use get-allowed-components-by-placeholder for that. IDs that resolve to no item are reported under Unresolved per group.
Inputs: path, database, siteName.
list-sitesARead-only
Lists the content sites registered on this CM: name, root path, start (home) path, database, hostname and the root item's ID and template. Sitecore's own infrastructure sites (shell, login, service, ...) are filtered out; pass includeSystemSites to see everything Sitecore has registered. Note that 'website' is reported — on XM/XP it is the content site, and on a SitecoreAI CM it shows up rooted at /sitecore/content alongside the real content sites.
Inputs: includeSystemSites.
logging-get-logsARead-only
Retrieves Sitecore logs from the CM's data folder over SPE. On a local Docker CM the same files are on a mounted volume, so reading them from disk is cheaper and shows the whole file; use this when you have no filesystem access to the CM. On a deployed SitecoreAI environment the platform collects logs and the data folder may hold little or nothing.
Inputs: date, name, tail, level.
media-downloadA
Downloads a media item's blob from the Sitecore media library via the SPE mediaDownload service. Pass saveTo to write it to a file local to the machine running this MCP server (always do this for anything over ~0.5MB); without saveTo the blob is returned inline as base64, capped at maxBytes. Requires in the CM's SPE services config.
Inputs: path (required), saveTo, database, maxBytes.
media-uploadADestructive
Uploads a file into the Sitecore media library via the SPE mediaUpload service and returns the created media item (ID, path, size, mime type). Overwrites an existing item at the destination unless skipExisting is set. Source is exactly one of sourceUrl (fetched by this server — use this to import from a live site), filePath (local to the machine running this MCP server), or content (base64). Requires in the CM's SPE services config.
Inputs: destination (required), alt, content, database, +4 more.
presentation-add-placeholder-settingC
Adds a placeholder setting to an item.
Inputs: key (required), id, path, database, +4 more.
presentation-add-renderingA
Adds a rendering to presentation of an item. Writes whatever it is told: use get-allowed-components-by-placeholder first, or add-rendering-to-placeholder, if the layout has to stay valid.
Inputs: placeHolder (required), id, path, index, +6 more.
presentation-get-layoutARead-only
Gets the layout definition item assigned to an item -- the Sitecore layout item itself (e.g. 'Headless Layout'), not the renderings placed on the page. Use presentation-list-renderings to see a page's components.
Inputs: id, full, path, fields, +2 more.
presentation-get-layout-deviceARead-only
Gets a layout device by name, or the default device when name is omitted. On a headless site there is usually only the Default device.
Inputs: full, name, fields.
presentation-get-placeholder-settingCRead-only
Gets placeholder setting assigned on an item.
Inputs: id, key, path, database, +3 more.
presentation-get-renderingCRead-only
Gets rendering definition on an item.
Inputs: id, path, database, language, +4 more.
presentation-get-rendering-parameterCRead-only
Gets rendering parameter for a rendering placed on an item.
Inputs: renderingUniqueId (required), id, name, path, +3 more.
presentation-list-renderingsARead-only
Lists the renderings placed on an item — the components that make up the page. This is the tool to use to see a page's composition; presentation-get-layout returns the assigned layout definition item instead. Returns one row per rendering: Index (position in the device's rendering list, which is what presentation-add-rendering and presentation-set-rendering address), Placeholder (the full placeholder path), RenderingName, RenderingID, Datasource and UniqueId. Set includeParameters to add each rendering's Parameters.
Inputs: id, path, database, language, +3 more.
presentation-merge-layoutC
Merges final and shared layouts of an item.
Inputs: id, path, database, language.
presentation-remove-placeholder-settingCDestructive
Removes placeholder setting from an item.
Inputs: id, key, path, database, +3 more.
presentation-remove-renderingCDestructive
Removes renderings from an item.
Inputs: uniqueId (required), id, path, database, +4 more.
presentation-remove-rendering-parameterCDestructive
Removes the specified rendering parameter from the rendering placed on an item.
Inputs: renderingUniqueId (required), id, name, path, +3 more.
presentation-reset-layoutCDestructive
Resets the layout of an item.
Inputs: id, path, language, finalLayout.
presentation-set-layoutC
Sets layout for an item.
Inputs: id, path, database, language, +3 more.
presentation-set-renderingC
Updates a rendering placed on an item with new values.
Inputs: uniqueId (required), id, path, index, +6 more.
presentation-set-rendering-parameterC
Adds and updates the specified rendering parameter from the rendering placed on an item.
Inputs: parameter (required), renderingUniqueId (required), id, path, +3 more.
presentation-switch-renderingA
Switches an existing rendering on an item with an alternate one. The switched instance gets a NEW uniqueId (SPE regenerates it); the tool returns one row per switched instance with the new UniqueId, RenderingID, Placeholder and Datasource — use that UniqueId for any follow-up call, the old one no longer exists.
Inputs: id, path, database, language, +6 more.
provider-get-itemBRead-only
Gets a Sitecore item by path, ID, Sitecore query or URI.
Inputs: id, uri, full, path, +5 more.
query-graphql-edgeADestructive
Executes a GraphQL query against the Sitecore 'edge' endpoint and returns the data as JSON. The query is syntax-checked before it is sent. Note what the endpoint can see: 'edge' serves published content only (unpublished master changes are invisible to it), while 'master' / preview schemas read the authoring database. Use introspection-graphql-edge for the schema SDL.
Inputs: query (required), variables.
query-graphql-masterADestructive
Executes a GraphQL query against the Sitecore 'master' endpoint and returns the data as JSON. The query is syntax-checked before it is sent. Note what the endpoint can see: 'edge' serves published content only (unpublished master changes are invisible to it), while 'master' / preview schemas read the authoring database. Use introspection-graphql-master for the schema SDL.
Inputs: query (required), variables.
run-powershell-scriptADestructive
Runs a PowerShell script and returns the output. Before writing a script that changes many items, read the guide://bulk-update resource: it carries the pattern a mass write needs (every ID resolved from the instance, a named subtree as the root, a dry run the user approves, BeginEdit/EndEdit with a per-item try/catch).
Inputs: script (required).
search-site-pagesARead-only
Searches a site's pages by name or title, case-insensitively, on a substring match against Name, display name, Title and NavigationTitle. Returns { Matched, Returned, Truncated, Root, SiteName, Pages: [{ ID, Path, Template, TemplateID }] }. An item counts as a page when it has presentation (a layout on the item or on its template's standard values), which is what makes it addressable as a page — not a guess from template naming.
Inputs: query (required), path, limit, database, +2 more.
security-add-role-memberC
Adds a member to a Sitecore role.
Inputs: members (required), identity (required).
security-disable-userCDestructive
Disables the Sitecore user account.
Inputs: identity (required).
security-enable-userC
Enables the Sitecore user account.
Inputs: identity (required).
security-export-accountA
Exports (serializes) a Sitecore user or role to the CM's own filesystem and returns the file path. Requires SPE 8.0 or later — earlier versions fail with a NullReferenceException (SPE issues #1369, #1370). On SitecoreAI prefer Sitecore CLI serialization.
Inputs: identity (required), accountType (required), path, root.
security-get-current-userCRead-only
Get the current Sitecore user.
Inputs: full.
security-get-domainBRead-only
Get Sitecore domains. Omit name to return every domain.
Inputs: full, name.
security-get-item-aclBRead-only
Gets the access control list (ACL) of a Sitecore item — the rules set on the item itself. Narrow it with identity or filter to one account.
Inputs: id, full, path, filter, +2 more.
security-get-roleARead-only
Get Sitecore roles, by exact identity or by wildcard filter. Supply exactly one of identity or filter.
Inputs: full, filter, identity.
security-get-role-memberCRead-only
Get members of a Sitecore role.
Inputs: identity (required), full, recurse, roleOnly, +1 more.
security-get-userARead-only
Get Sitecore users, by exact identity or by wildcard filter. Supply exactly one of identity or filter.
Inputs: full, filter, identity.
security-import-accountADestructive
Imports (deserializes) a Sitecore user or role from the CM's filesystem, overwriting the account's current state with the serialized one. The .user / .role file must exist — export it first with security-export-account. On SitecoreAI prefer Sitecore CLI serialization.
Inputs: identity (required), accountType (required), path, root.
security-new-domainC
Creates a new Sitecore domain.
Inputs: name (required), full.
security-new-roleC
Creates a new Sitecore role.
Inputs: identity (required), full.
security-new-userC
Creates a new Sitecore user.
Inputs: identity (required), full, email, comment, +5 more.
security-remove-domainBDestructive
Removes a Sitecore domain.
Inputs: name (required).
security-remove-roleCDestructive
Removes a Sitecore role.
Inputs: identity (required).
security-remove-role-memberCDestructive
Removes members from a Sitecore role.
Inputs: members (required), identity (required).
security-remove-userCDestructive
Removes the Sitecore user.
Inputs: identity (required).
security-set-item-aclADestructive
Changes the access rules on a Sitecore item. action 'add' appends one rule and leaves the others; 'replace' discards every existing rule on the item and leaves only this one; 'clear' removes all rules and adds nothing. Read the current rules with security-get-item-acl and check effective rights with security-test-item-acl.
Inputs: action (required), id, full, path, +7 more.
security-set-item-lockADestructive
Locks or unlocks a Sitecore item for editing. Independent of delete protection — use security-set-item-protection for that.
Inputs: action (required), id, full, path, +4 more.
security-set-item-protectionADestructive
Protects or unprotects a Sitecore item against deletion and renaming. Independent of the editing lock — use security-set-item-lock for that.
Inputs: action (required), id, full, path, +3 more.
security-set-userC
Updates properties of a Sitecore user account.
Inputs: identity (required), email, comment, enabled, +7 more.
security-set-user-passwordA
Sets a new password for a Sitecore user. Supply either 'oldPassword' (validated before the change) or 'resetPassword: true' (an administrative reset that does not need the current password) — SPE offers no third way to change a password.
Inputs: identity (required), newPassword (required), oldPassword, resetPassword.
security-test-accountCRead-only
Tests if a Sitecore user exists and has specific properties.
Inputs: identity (required), accountType.
security-test-item-aclBRead-only
Tests whether a user or role has specific access rights to a Sitecore item.
Inputs: identity (required), accessRight (required), id, path, +2 more.
security-unlock-userA
Unlocks a Sitecore user account that has been locked out due to failed login attempts.
Inputs: identity (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 123 tools
Many tools overlap across different backends (authoring vs item-service vs common vs provider for item CRUD; multiple search, publish, index rebuild, and media upload tools). The descriptions often explicitly guide selection, so boundaries are not indistinguishable, but the sheer volume and parallel surfaces create real misselection risk.
Names are consistently kebab-case and mostly follow a category-verb-noun pattern (security-get-user, authoring-create-item, presentation-list-renderings). Minor deviations exist: some tools lack a category prefix (config, list-sites, run-powershell-script) and verbs vary (new vs create, get vs list).
123 tools is an extreme mismatch for a single MCP server; even a broad CMS domain does not justify this surface, and the dimension calibrates 50+ tools as 1. Many operations could be consolidated or exposed through fewer generic entry points.
Coverage spans items, templates, media, presentation, security, publishing, indexing, workflow, archives, jobs, logs, and raw GraphQL, with generic GraphQL fallbacks for untyped operations. No obvious dead ends for the Sitecore administration domain.
Maintenance
Related MCP Connectors
Lets your AI build and edit websites in Xodia, a visual website builder for real code (Vite, React, Tailwind CSS or plain HTML in your own git repo): read and write site files, create pages and CMS collections, run typecheck, design and link checks, take screenshots, manage forms and translations, and pick up change requests the user sends from the visual editor. Sign in once with your Xodia account (OAuth). Free plan, no card needed. Setup: https://xodia.ai/ai/mcp
30+ marketing data tools for AI agents: keywords, SERP, backlinks, AI visibility, app store & commerce intelligence, Reddit/LinkedIn/Facebook/YouTube research, web search, page extraction, site audit, image & video generation, one-shot marketing apps. Bring your own API key from supamarketers.com — per-tool pricing in Credits.
Direct access to 60+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
Connect your AI agent to 300+ methods and 100+ live tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Sitecore CMS through GraphQL API, providing item operations, version control, navigation, and content management capabilities. Supports natural language commands and slash command menu interface for querying Sitecore items, templates, and hierarchies.3MIT
- AlicenseCqualityDmaintenanceEnables AI agents to manage WordPress sites with 190+ tools for content management, theme/plugin customization, file system operations, WooCommerce, and complete site control through natural language.10027 npm56MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with commercetools APIs to manage products, categories, orders, carts, and customer data. It provides a comprehensive set of tools for both read-only and full-access operations through secure authentication methods.4MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides AI agents with direct read/write access to Sitecore CMS through 100+ tools across Item Service, GraphQL, and PowerShell APIs.153 npmApache 2.0