Sitecore Personalize
БесплатноНе проверенAn MCP server for Sitecore Personalize / CDP that exposes decisioning flows, experiences, audiences, guest profiles, events, and datasets as tools, enabling nat
Описание
An MCP server for Sitecore Personalize / CDP that exposes decisioning flows, experiences, audiences, guest profiles, events, and datasets as tools, enabling natural-language management and interaction with Sitecore Personalize.
README
A production-ready Model Context Protocol server for Sitecore
Personalize / CDP, built with the official @modelcontextprotocol/sdk, TypeScript, Zod, and Axios.
Every Sitecore Personalize API operation is exposed as its own MCP tool, so an MCP client (Claude
Desktop, Claude Code, or any other MCP host) can list/manage decisioning flows and experiences, read
and update CDP guest profiles, send behavioral events, and work with audiences and datasets.
Architecture
src/
index.ts Process entry point: stdio transport wiring, signal handling
server.ts McpServer construction + tool registration
config/
env.ts Zod-validated environment configuration (fails fast at startup)
constants.ts API route table, server metadata, retry-status set
auth/
tokenManager.ts OAuth2 client_credentials flow, in-memory cache, refresh locking
services/
httpClient.ts Shared axios factory: auth injection, retry/backoff, error normalization
flowService.ts Flow list/get/publish/execute
experienceService.ts Experience list/get/publish
audienceService.ts Audience (segment) list/get/create
guestService.ts CDP guest get/upsert/delete/search
eventService.ts CDP event ingestion
datasetService.ts Dataset list/get
schemas/ One Zod schema module per domain (shared between tool input
validation and typed service calls)
tools/ One MCP tool per API operation, grouped by domain, registered
from tools/index.ts
utils/
logger.ts pino structured logger (stderr only — stdout is reserved for
MCP protocol frames)
errors.ts Typed error hierarchy (ValidationError, AuthenticationError,
SitecoreApiError, RetryExhaustedError, ConfigurationError)
retry.ts Exponential backoff w/ full jitter, used by httpClient
responseFormatter.ts Wraps service results into MCP CallToolResult (success/isError)
Design principles:
- Clean separation of concerns. Tools only translate MCP calls into service calls and format
results — they contain no HTTP or business logic. Services own API contracts.
httpClientowns cross-cutting HTTP concerns (auth, retry, logging, error shape) so every service gets them for free. - Every operation is its own tool. No multiplexed "do anything" tool — each is independently discoverable, documented, and schema-validated, which is what lets an MCP client (or the model driving it) reason about what's safe to call.
- Fail fast, fail loud. Environment variables are validated once at startup with Zod; a misconfigured deployment never gets as far as accepting a tool call.
- stdout is sacred. All logging goes to stderr via pino. Never
console.login this codebase — it will corrupt the JSON-RPC stream on the stdio transport.
Setup
npm install
cp .env.example .env
# edit .env with your tenant's client ID/secret and API URLs
npm run build
npm start
For local iteration with auto-reload: npm run dev (uses tsx watch).
Required environment variables
| Variable | Description |
|---|---|
SITECORE_PERSONALIZE_CLIENT_ID |
OAuth2 client ID from Sitecore Cloud Portal |
SITECORE_PERSONALIZE_CLIENT_SECRET |
OAuth2 client secret |
SITECORE_PERSONALIZE_AUTH_URL |
Identity token endpoint |
SITECORE_PERSONALIZE_API_URL |
Personalize/CDP admin API base URL for your tenant/region |
SITECORE_PERSONALIZE_DECISIONING_API_URL |
(optional) Interactive decisioning/edge API base, if it differs from the admin API |
See .env.example for the full list, including HTTP timeout/retry tuning and log level.
Verify API routes before production use. Sitecore Personalize's REST surface is versioned and tenant/region-hosted. The route table in
src/config/constants.tsreflects the commonly documented v2/v3 shapes, but you should confirm exact paths against your tenant's current API reference before relying on this in production, and adjust that one file if anything differs.
Connecting to Claude Desktop / Claude Code
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"sitecore-personalize": {
"command": "node",
"args": ["/absolute/path/to/sitecore-personalize-mcp/dist/index.js"],
"env": {
"SITECORE_PERSONALIZE_CLIENT_ID": "...",
"SITECORE_PERSONALIZE_CLIENT_SECRET": "...",
"SITECORE_PERSONALIZE_AUTH_URL": "...",
"SITECORE_PERSONALIZE_API_URL": "...",
"SITECORE_CDP_CLIENT_KEY": "...",
"SITECORE_CDP_API_TOKEN": "...",
"SITECORE_CDP_API_URL": "..."
}
}
}
}
Tools
All tool names are prefixed sitecore_personalize_.
| Tool | Type | Description |
|---|---|---|
flow_list |
read | List decisioning flows, filterable by status |
flow_get |
read | Get a single flow's definition |
flow_publish |
write | Publish a draft flow |
flow_execute |
write | Trigger real-time flow decisioning for a guest (callFlow) |
experience_list |
read | List experiences, filterable by type/status |
experience_get |
read | Get a single experience's definition |
experience_publish |
write | Publish a draft experience |
audience_list |
read | List audiences/segments |
audience_get |
read | Get a single audience's rules |
audience_create |
write | Create a new rule-based audience |
guest_get |
read | Get a CDP guest profile by reference |
guest_upsert |
write | Create or update a guest profile |
guest_delete |
write (destructive) | Permanently delete a guest profile |
guest_search |
read | Search guests by email or attribute |
event_send |
write | Ingest a behavioral event for a guest |
dataset_list |
read | List datasets |
dataset_get |
read | Get a single dataset's metadata |
Every write tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint) so
clients can apply appropriate confirmation UX — guest_delete in particular is flagged destructive
and irreversible.
Error handling & resilience
- Validation happens at the MCP layer via each tool's Zod
inputSchemabefore any service code runs. - Auth failures raise
AuthenticationError; a401from the API triggers one transparent token refresh + retry before failing. - Transient failures (
429,5xx, network errors) are retried with exponential backoff + full jitter, up toMAX_RETRIES(default 3). - All failures are normalized into typed errors and returned to the MCP client as
{ isError: true, content: [...] }— never as an uncaught exception that would kill the process or return an opaque transport error.
Extending
To add a new API operation:
- Add its request/response shape to the relevant
src/schemas/*.schema.ts(or a new file for a new domain). - Add the route to
src/config/constants.tsand the call to the matchingsrc/services/*.ts. - Register a tool for it in
src/tools/*.tools.ts, following the existing pattern (registerTool→ service call →toolSuccess/toolError). - If it's a new domain, wire its
registerXTools(server)intosrc/tools/index.ts.
Scripts
| Command | Purpose |
|---|---|
npm run build |
Type-check and compile to dist/ |
npm start |
Run the compiled server |
npm run dev |
Run with tsx watch for local development |
npm run typecheck |
Type-check without emitting |
npm run clean |
Remove dist/ |
from github.com/keerthika-srinivasan/sitecore-personalize-mcp
Установка Sitecore Personalize
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/keerthika-srinivasan/sitecore-personalize-mcpFAQ
Sitecore Personalize MCP бесплатный?
Да, Sitecore Personalize MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Sitecore Personalize?
Нет, Sitecore Personalize работает без API-ключей и переменных окружения.
Sitecore Personalize — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Sitecore Personalize в Claude Desktop, Claude Code или Cursor?
Открой Sitecore Personalize на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Sitecore Personalize with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
