MCP for Sitecore Developers
README.md
# MCP for Sitecore Developers — Working Example
Companion code for the blog post **"MCP for Sitecore Developers: A Practical Primer."**
This is a minimal, runnable MCP server + client pair that demonstrates the three
MCP capability types — **tools**, **resources**, and **prompts** — mapped to a
Sitecore CDP / personalization scenario. No live Sitecore or CDP connection is
required; the server mocks visitor segment data in-memory so the example runs
standalone.
## What's here
- **`server.js`** — the MCP server. Exposes:
- `get_visitor_segment` (tool) — looks up a visitor's CDP segment
- `resolve_content_variant` (tool) — decisioning logic: segment → content variant
- `segment-catalog` (resource) — read-only reference data
- `personalization-decision` (prompt) — reusable prompt template
- **`client.js`** — plays the "host" role. Connects to the server, walks through
the exact worked example from the blog post, and logs each step of the
host → client → server flow.
## Running it
```bash
npm install
npm run demo
```
`npm run demo` launches the server as a subprocess and runs the full walkthrough:
discovery → tool calls → resource read → prompt fetch.
To run the server standalone (e.g. to point a different MCP-compatible client at it):
```bash
npm run start:server
```
## Mapping back to the blog post
| Blog post concept | Where it lives in this code |
|---|---|
| Host | `client.js` (`sitecore-demo-host`) |
| Client | the `Client` instance inside `client.js` |
| Server | `server.js` |
| Tool ≈ API endpoint | `get_visitor_segment`, `resolve_content_variant` |
| Resource ≈ content/data for context | `segment-catalog` |
| Prompt ≈ reusable template | `personalization-decision` |
## Making this production-shaped
Swap the `mockCdp` object in `server.js` for a real call to Sitecore's CDP API
or Agent API, and this becomes a working MCP server you could point Agentic
Studio (or any MCP-compatible host) at.
Note what this example does *not* do: it doesn't address delivery-time latency.
Everything here is decisioning — segment lookup, variant resolution, reasoning.
Getting that decision onto the page fast is a separate, edge-delivery concern —
see the Under-300ms Loop repo for that half of the architecture.
## Requirements
- Node.js 18+
- `@modelcontextprotocol/sdk` (installed via `npm install`)
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues