Sitefinity MCP Server
Model Context Protocol (MCP) Overview
Model Context Protocol (MCP) is a standard way for Large language model (LLM)-based AI assistants (like Sitefinity Backend Chat, Visual Studio Copilot or ChatGPT-style tools) to connect to external data sources and systems - enabling the LLMs to do things and know things beyond what they were trained on initially.
MCP is a standardized communication protocol that lets AI assistants plug into external tools and data. It defines how an AI asks for information or triggers actions, and how external systems respond, ensuring reliability regardless of which AI and which system is involved. MCP is like a universal adapter plug - you define the connection once, and any compatible LLM can use it to connect to any compatible system.
LLMs, on their own, only know what they were trained on. They can't look up your company's internal docs, check a live database, or take actions in a system unless something bridges that gap.
When there is a need to give an LLM access to custom or private tools, for example, the content managed in Sitefinity CMS, a different approach is required. The client is responsible for executing tools instead of the LLM server. The client advertises which tools are available, the LLM decides when and which tool to call, and the client securely executes the tool and returns the result. This allows controlled access to private resources without giving the LLM unrestricted access to local systems.
Instead of accessing external services directly, each service exposes an adapter, the MCP server, that provides unified access to its resources.
MCP has these roles that work together:
- The Host
The LLM you interact with. For example, Sitefinity Backend Chat or Visual Studio Code Copilot. It orchestrates everything. - The Client
Lives inside the host and manages the connection to external tools on the LLM's behalf. - The Server
Exposes specific capabilities to the LLMs. For example, the ability to create or edit context items or to publish pages. This is the Sitefinity MCP Server.
A server can offer the following:
- Tools
Actions the LLM can trigger. For example, "publish a page," "create a blog post". - Resources
Data the LLM can read. For example, a document in a Sitefinity Library, a content block, or an image - Prompts
Pre-built instruction templates the AI can use, stored on the server rather than locally in the repository or user workspace.
Sitefinity MCP Server overview
The Sitefinity MCP server exposes the entirety of Sitefinity's content, pages, and configuration to an LLM. That means you, as a developer or a content author, can ask the LLM to help you using natural language. And the LLM can interact with the CMS and perform actions on your behalf rather than just give generic advice.
You do not directly use the MCP server and the tools it exposes. Instead, you use an LLM, such as Sitefinity Backend Chat, Visual Studio Code, or web-based interface of Claude or ChatGPT to give tasks. In turn, the LLM decides which of the available tools to use and how to achieve the goal you set up.
NOTE: Sitefinity MCP Server is stateless, thus it does not keep a state between tool invocations and the entire state must be provided using HTTP request headers.
Sitefinity MCP Server uses the documented Sitefinity ODATA API to implement its tools and has access to all Sitefinity CMS content items, including the ones inDraftstate.
System requirements
PREREQUISITES:
- To use Sitefinity MCP Server, you must be running Sitefinity CMS version 15.4.8633 or later, either in a self-hosted setup or in Sitefinity Cloud.
- You must have an active Sitefinity AI subscription.
Accessing the MCP server
You need to configure your MCP-enabled LLM to connect with your Sitefinity instance before it can use the tools provided by Sitefinity.
The examples in this article assume you are configuring Visual Studio Code. Refer to the documentation of your MCP-enabled client how to configure it.
Following is the process to configure your Sitefinity instance to expose its tools to an MCP client.
Get a Sitefinity CMS access key
The MCP server is secured to prevent leaking data or abuse of your hosting machines.
To enable your LLM to access the Sitefinity MCP Server, you need to generate an access key.
Follow the procedure in Generate access key.
NOTE: Because the access key is tied to a specific Sitefinity user, all changes the LLM makes using MCP tools are performed as if the access key's user has performed them. Also, the MCP tools have the same permissions and access as the respective user has.
Add the Sitefinity MCP Server
-
Open the Command Palette (under Windows, press
Ctrl+Shift+P) -
In the Command palette, enter
MCP:Add Server… -
Select HTTP (HTTP or Server-Sent Events).
-
For a MCP Server URL, enter the URL of the corresponding Sitefinity MCP Server.
The URL is your Sitefinity CMS instance, followed by/mcp/. For example, enterhttps://mydomain.example/mcp/. -
Set a name of your choice.
For example,mcp-sitefinity. -
Select Workspace Settings.
Themcp.jsonfile opens in a new tab. It contains the MCP server URL you have set in a previous step. -
In the
mcp-sitefinityobject, add the access key to the headers object as a value of theX-SF-Access-Keyproperty. You get the access key using the procedure Get a Sitefinity CMS access key above.
For example, if your Sitefinity is hosted onhttps://mydomain.example, the JSON should look like the following.json{ "servers": { "mcp-sitefinity": { "url": "https://mydomain.example/mcp/", "headers": { "X-SF-Access-Key": "{Your Sitefinity access key}" } } } }
Exposed tools
Unlike resources and prompts, tools are not selected by the user - they are invoked autonomously by the LLM based on its interpretation of the prompt. The MCP server provides a list of all available tools, which are included in every LLM prompt as context. With each request, the LLM evaluates the available tools and decides whether any should be called.
With every prompt, the list of available tools (including their descriptions and parameters) is included in the context sent to the LLM. The model can then decide to invoke a tool when appropriate. The MCP client interprets the LLM's response and orchestrates the tool call. The tool's output is added to the context window, and the LLM is called again with the enriched context to formulate the final response.
When the LLM requests execution of a tool, you will be prompted to Allow it. You can also configure certain tools to be Auto-allowed so they run without manual confirmation each time.
Sitefinity CMS exposes tools that implement all the standard Create-Read-Update-Delete (CRUD) lifecycle operations for all content types and items. Tools for managing relations between content items are also available.
The following MCP tools are available:
Content entity CRUD operations
| Tool | Description |
|---|---|
sf_read_entity | Reads entities with OData query params ($filter, $select, $expand, $top, $skip, $orderby). Supports collection mode (list with filtering/paging) and single-item mode (get by key). |
sf_create_entity | Creates a new entity (content item) via OData. Workflow operations (Publish, Schedule) require a separate sf_entity_lifecycle call. |
sf_update_entity | Updates an existing entity via OData PATCH. Only include fields to change. No lifecycle transition triggered. |
sf_delete_entity | Permanently deletes entities. Requires user confirmation. |
sf_batch_entities | Executes multiple OData operations (POST, PATCH, DELETE, GET) in a single batch. Max 100 operations. |
Content lifecycle
| Tool | Description |
|---|---|
sf_lock_entity | Locks (checks out) a content item for editing via SaveTemp. Prevents concurrent edits. |
sf_unlock_entity | Unlocks a content item, discarding unsaved draft changes. |
sf_entity_lifecycle | Executes a workflow action, such as Publish, Unpublish, SaveDraft, Schedule, StopSchedule, DiscardDraft, SendForApproval, and Reject. |
Content items relations
| Tool | Description |
|---|---|
sf_read_related | Reads related items using a navigation property. Supports multi-site media context. |
sf_create_relation | Creates a relation between two entities via OData $ref. Auto-locks and publishes the parent. |
sf_delete_relation | Deletes a relation between two entities. Requires user confirmation. Auto-locks and publishes. |
Page management
| Tool | Description |
|---|---|
sf_create_page | Creates a new page or a translation of an existing page. Supports standard, group, and redirect pages. |
sf_update_page | Updates page metadata, such as Title, UrlName, Description, etc. Automatically locks, updates, publishes, and unlocks the page. |
sf_get_page_state | Gets page editor state, such as version and the editable flag. |
sf_page_lifecycle | Page lifecycle operation on the page: Lock, Unlock, Publish, Schedule. |
Media management
| Tool | Description |
|---|---|
sf_upload_media | Uploads a media file from a remote URL. Supports images, documents, and videos, up to 10 MB. |
sf_update_media | Updates media item properties (title, alt text, etc.). Does not replace the file. |
sf_create_media_library | Creates a new media library (image, document, or video library). |
sf_create_media_folder | Creates a folder within a media library. |
sf_search_media_folders | Searches for media folders recursively by title across the hierarchy. You can apply filters. |
Classifications
| Tool | Description |
|---|---|
sf_create_taxonomy | Creates a new flat (Tags) or a hierarchical (Category) taxonomy. |
sf_create_taxon | Creates a new taxon within an existing taxonomy. |
sf_add_classification | Adds a classification to a content item. Automatically uses the lock-relate-publish flow. |
sf_filter_by_taxon | Filters content items by taxonomy classification. |
sf_read_taxons | Lists available taxons from a taxonomy. Use to discover existing taxons before classifying. |
Cultures and languages
| Tool | Description |
|---|---|
sf_read_cultures | Lists configured cultures (languages). Returns all cultures if you do not provide a siteId. If you provide a siteId, returns only the cultures for this site. |
Site Management
| Tool | Description |
|---|---|
sf_read_sites | Lists all configured sites in a multisite installation. |
sf_read_site_context | Returns the current site context: site ID, name, cultures, default culture, modules, home page ID, timezone. |
Type discovery
| Tool | Description |
|---|---|
sf_read_types | Returns available entity types. Two modes are available: entitysets to list sets and metadata to return a detailed schema with properties via JSON CSDL. |
Sitefinity Insight
Sitefinity Insight also provides MCP tools, which the LLM you are using can use to respond to your prompts. You can use these tools from DX Assistant, a code editor (such as VS Code), or any other MCP-enabled LLM service.
PREREQUISITES: For the Sitefinity Insight tools to become available, you must have set up a working connection between your Sitefinity CMS instance and at least one Sitefinity Insight data center, and some activity must have been recorded in the data center. For more information, see Connect to Sitefinity Insight.
IMPORTANT: Because Sitefinity CMS proxies the connection to Sitefinity Insight, the LLM you are using has access only to data stored in Sitefinity Insight data centers that are accessible to the Sitefinity CMS instance you are using.
Available Insight tools
NOTE: All Sitefinity Insight tools give you read access to the data stored in the data center. Your LLM can use them to query and analyze data, build charts and dashboards, and so on, but it cannot add, modify or delete data.
The following Sitefinity Insight tools are available:
| Name | Description |
|---|---|
sf_insight_get_tools_guidance | Returns a structured guide of available tools to the LLM. |
sf_insight_get_content_summary | Returns aggregated statistics - total items, hits, unique hits, average engagement. |
sf_insight_get_content_period_metrics_all | Returns a paginated list of all content items with metrics. Supports filtering by Sitefinity content identifiers (contentId, contentType, language, providerName), siteId and sorting. |
sf_insight_get_content_period_metrics | Returns the daily breakdown for a single content item identified by a ContentReportKey. |
sf_insight_get_sitefinity_content_period_metrics | Returns period metrics for a specific Sitefinity content item identified by contentId, contentType, and language. Provides statistics such as total and unique hits, engagement time, etc. |
sf_insight_get_content_attribution | Returns attribution data, such as first, last, linear, or AI touch, for a single content item. |
sf_insight_get_all_content_attributions | Returns bulk attribution for ALL content items in one call. |
sf_insight_get_content_personas | Returns persona interaction metrics for a single content item. |
sf_insight_get_conversions | Returns all conversion metadata (Id, Name, State). Useful to correlate attribution touch Ids to conversion names. |
sf_insight_get_personas | Returns all persona metadata (Id, Name, State). Useful to correlate persona Ids returned from sf_insight_get_content_personas tool to persona names. |