Skip to main content
Glama
gherisalim

Sitecore Community MCP

by gherisalim

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TRANSPORTNoTransport used to run the server, e.g. "stdio". Two transports are supported (see docs/running.md).
TOOL_GROUPSNoSelects which tool groups are exposed, to trim the tool surface an agent has to hold.
TOOL_PROFILENoComma-separated list of presets that unions what each one hides. Presets: no-spe, no-item-service, no-edge-graphql, no-authoring-api, no-account-management. Unknown names are reported on stderr and ignored. Example: no-spe,no-item-service
DISABLED_TOOLSNoExplicitly disables individual tools, to trim the tool surface an agent has to hold.
GRAPHQL_API_KEYNoThe API key used for the Sitecore GraphQL API, e.g. {6D3F291E-66A5-4703-887A-D549AF83D859}.
GRAPHQL_HEADERSNoAdditional headers sent with GraphQL requests. May be left empty.
GRAPHQL_SCHEMASNoWhich GraphQL schema(s) to use, e.g. "edge".
GRAPHQL_ENDPOINTNoThe GraphQL endpoint of your Sitecore instance, e.g. https://xmcloudcm.localhost/sitecore/api/graph/
POWERSHELL_DOMAINNoDomain used to authenticate against Sitecore PowerShell Extensions (SPE) Remoting, e.g. "sitecore". SPE is off by default and needs a config patch.
AUTHORING_CLIENT_IDNoClient ID used for the Sitecore Authoring and Management GraphQL API (e.g. SitecoreAI). May be left empty.
ITEM_SERVICE_DOMAINNoDomain used to authenticate against the Sitecore Item Service, e.g. "sitecore". The Item Service is off by default and needs a config patch.
POWERSHELL_PASSWORDNoPassword used to authenticate against Sitecore PowerShell Extensions (SPE) Remoting.
POWERSHELL_USERNAMENoUsername used to authenticate against Sitecore PowerShell Extensions (SPE) Remoting, e.g. "admin".
ITEM_SERVICE_PASSWORDNoPassword used to authenticate against the Sitecore Item Service.
ITEM_SERVICE_USERNAMENoUsername used to authenticate against the Sitecore Item Service, e.g. "admin".
POWERSHELL_SERVER_URLNoBase URL of the Sitecore instance serving SPE Remoting, e.g. https://xmcloudcm.localhost/
AUTHORING_CLIENT_SECRETNoClient secret used for the Sitecore Authoring and Management GraphQL API (e.g. SitecoreAI). May be left empty.
ITEM_SERVICE_SERVER_URLNoBase URL of the Sitecore instance serving the Item Service, e.g. https://xmcloudcm.localhost/

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
configA

Prints the configuration of the Sitecore MCP server. Secrets (passwords, the GraphQL API key, the authorization header) are redacted.

introspection-graphql-edgeA

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.

query-graphql-edgeA

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.

introspection-graphql-masterA

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.

query-graphql-masterA

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.

authoring-introspect-schemaA

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-*.

authoring-graphqlA

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.

authoring-get-itemA

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.

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.

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.

authoring-delete-itemA

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.

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.

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.

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.

authoring-searchA

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.

authoring-get-item-templateA

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.

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'.

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.

authoring-upload-mediaA

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.

authoring-get-media-itemA

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.

authoring-list-sitesA

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.

authoring-get-siteA

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.

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.

authoring-publishing-statusA

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.

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.

authoring-get-jobA

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.

authoring-list-jobsA

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.

item-service-get-itemC

Get a Sitecore item by its ID or path.

item-service-get-item-childrenA

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.

item-service-create-itemC

Create a new Sitecore item under parent path with name using template id.

item-service-edit-itemC

Edit a Sitecore item by its ID.

item-service-delete-itemC

Delete a Sitecore item by its ID.

item-service-search-itemsB

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.

item-service-get-item-descendantsA

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.

item-service-get-languagesB

Get Sitecore languages.

get-powershell-documentationA

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.

run-powershell-scriptA

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).

get-allowed-components-by-placeholderA

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.

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.

add-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.

list-sitesA

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.

get-site-informationA

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.

get-pages-by-siteA

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.

search-site-pagesA

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.

list-site-componentsA

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.

list-insert-optionsA

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.

security-get-current-userC

Get the current Sitecore user.

security-new-userC

Creates a new Sitecore user.

security-remove-userC

Removes the Sitecore user.

security-disable-userC

Disables the Sitecore user account.

security-enable-userC

Enables the Sitecore user account.

security-unlock-userA

Unlocks a Sitecore user account that has been locked out due to failed login attempts.

security-set-userC

Updates properties of a Sitecore user account.

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.

security-get-domainB

Get Sitecore domains. Omit name to return every domain.

security-get-userA

Get Sitecore users, by exact identity or by wildcard filter. Supply exactly one of identity or filter.

security-get-roleA

Get Sitecore roles, by exact identity or by wildcard filter. Supply exactly one of identity or filter.

security-get-role-memberC

Get members of a Sitecore role.

security-add-role-memberC

Adds a member to a Sitecore role.

security-remove-role-memberC

Removes members from a Sitecore role.

security-new-roleC

Creates a new Sitecore role.

security-remove-roleC

Removes a Sitecore role.

security-new-domainC

Creates a new Sitecore domain.

security-remove-domainB

Removes a Sitecore domain.

security-test-accountC

Tests if a Sitecore user exists and has specific properties.

security-get-item-aclB

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.

security-test-item-aclB

Tests whether a user or role has specific access rights to a Sitecore item.

security-set-item-aclA

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.

security-set-item-lockA

Locks or unlocks a Sitecore item for editing. Independent of delete protection — use security-set-item-protection for that.

security-set-item-protectionA

Protects or unprotects a Sitecore item against deletion and renaming. Independent of the editing lock — use security-set-item-lock for that.

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.

security-import-accountA

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.

common-add-item-versionB

Creates a version of the item in a new language based on an existing language version.

common-convert-from-item-cloneC

Converts an item from a clone to a fully independent item.

common-get-cacheA

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.

common-get-databaseC

Gets information about Sitecore databases.

common-get-item-cloneC

Returns all the clones for the specified item.

common-get-item-fieldC

Gets item fields as either names or fields or template fields.

common-get-item-referenceB

Gets item references for a Sitecore item, showing where it is used throughout the system.

common-get-item-referrerC

Gets items referring to a Sitecore item, showing which items reference it.

common-get-item-templateB

Gets template information for a Sitecore item.

common-get-item-workflow-eventC

Gets entries from the workflow history for the specified item.

common-get-sitecore-jobB

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.

common-invoke-workflowC

Executes workflow action for a Sitecore item.

common-new-item-workflow-eventC

Creates a new entry in the workflow history for a Sitecore item.

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.

common-remove-item-versionC

Removes a version of a Sitecore item.

common-reset-item-fieldC

Resets item fields, specified as either names, fields or template fields.

common-restart-applicationB

Restarts the Sitecore Application pool.

common-set-item-templateC

Sets the item template.

common-test-base-templateB

Checks if the item inherits from the specified template.

common-set-base-templateA

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.

common-get-archiveC

Gets Sitecore database archives.

common-get-archive-itemA

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.

common-new-item-cloneC

Creates a new item clone based on the item provided.

common-remove-archive-itemB

Removes items permanently from the specified archive.

common-restore-archive-itemB

Restores items to the original database from the specified archive.

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.

presentation-get-layoutA

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.

presentation-reset-layoutC

Resets the layout of an item.

presentation-merge-layoutC

Merges final and shared layouts of an item.

presentation-get-layout-deviceA

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.

presentation-get-renderingC

Gets rendering definition on an item.

presentation-remove-renderingC

Removes renderings from an item.

presentation-get-placeholder-settingC

Gets placeholder setting assigned on an item.

presentation-remove-placeholder-settingC

Removes placeholder setting from an item.

presentation-list-renderingsA

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.

presentation-set-layoutC

Sets layout for an item.

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.

presentation-set-renderingC

Updates a rendering placed on an item with new values.

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.

presentation-add-placeholder-settingC

Adds a placeholder setting to an item.

presentation-get-rendering-parameterC

Gets rendering parameter for a rendering placed on an item.

presentation-remove-rendering-parameterC

Removes the specified rendering parameter from the rendering placed on an item.

presentation-set-rendering-parameterC

Adds and updates the specified rendering parameter from the rendering placed on an item.

logging-get-logsA

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.

provider-get-itemB

Gets a Sitecore item by path, ID, Sitecore query or URI.

indexing-get-search-indexA

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.

indexing-find-itemA

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.

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.

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.

media-uploadA

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.

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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
tool-selectionWhich Sitecore surface answers which question, and what each costs: measured read latencies, the cheap ways to read a subtree, and the limits (query depth, index lag, result caps) worth knowing before writing a query. Also names the other guide:// resources, which a client lists separately from its tools.
config
compose-pageThe order the composition tools have to be run in, and the knowledge that makes them safe: placeholder allow-lists, runtime placeholder paths and dynamic placeholder IDs, SXA Container and Column/Row Splitter naming, and why GridParameters and FieldNames are item references that must never be invented. Read it before composing, and again mid-task — the splitter and grid cases are the ones that come up several calls in.
bulk-updateThe safe pattern for a mass write over run-powershell-script: resolve every ID from the instance, root the scan at a named subtree, filter to the items that actually need the change, dry-run and show the list before writing, bracket edits in BeginEdit/EndEdit with a per-item try/catch, and handle versioned fields one version at a time.
diagnose-connectionWhat a failing Sitecore call actually means: the cheapest probe for each of the four surfaces, and the mapping from exact error text to the setting or environment variable at fault — including the three signatures that read as the opposite of their cause (the Authoring API's HTTP 200 on an unauthorized call, SPE's 400 with an identity provider's HTML page, and the Item Service's two-caused 403).

TDQS

B3.1/5.0

Scored across 123 tools

Disambiguation3/5

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.

Naming Consistency4/5

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).

Tool Count1/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues