Skip to main content
Glama
README.md
# Sitecore MCP Server

[![CI](https://github.com/GaryWenneker/SitecoreMCP/actions/workflows/ci.yml/badge.svg)](https://github.com/GaryWenneker/SitecoreMCP/actions/workflows/ci.yml)
[![Root Hygiene](https://github.com/GaryWenneker/SitecoreMCP/actions/workflows/root-scan.yml/badge.svg)](https://github.com/GaryWenneker/SitecoreMCP/actions/workflows/root-scan.yml)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue.svg)](https://www.typescriptlang.org/)
[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://prettier.io/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js Version](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org/)

A Model Context Protocol (MCP) server for Sitecore with **GraphQL API**, **version control**, **parent navigation**, and **item statistics**. Query Sitecore items via AI assistants like Claude and GitHub Copilot.

## ✨ Features

### šŸŽÆ Core Tools (21 total)

**Item Operations:**
- šŸ” **sitecore_get_item** - Get a specific Sitecore item (with version support)
- šŸ‘¶ **sitecore_get_children** - Get child items (with version support)
- šŸ“„ **sitecore_get_field_value** - Get a field value (with version support)
- ļæ½ **sitecore_get_item_fields** - Get all fields of an item (template-aware)
- ļæ½šŸ”Ž **sitecore_query** - Execute Sitecore queries
- šŸ” **sitecore_search** - Search items with filters and ordering
- šŸ“„ **sitecore_search_paginated** - Search with pagination support

**Template Operations:**
- šŸ“‹ **sitecore_get_template** - Get template information
- šŸ“š **sitecore_get_templates** - Get multiple templates

**Version Control:**
- šŸ• **sitecore_get_item_versions** - See all versions of an item
- šŸ“Š **sitecore_get_item_with_statistics** - Get created/updated dates and users

**Navigation:**
- ā¬†ļø **sitecore_get_parent** - Navigate to parent item
- 🧭 **sitecore_get_ancestors** - Get all ancestors (breadcrumb)

**Layout & Sites:**
- šŸŽØ **sitecore_get_layout** - Get layout/presentation information
- 🌐 **sitecore_get_sites** - Get Sitecore site configurations

**Mutations (Create/Update/Delete):**
- āž• **sitecore_create_item** - Create new Sitecore items
- āœļø **sitecore_update_item** - Update existing items
- āŒ **sitecore_delete_item** - Delete items

**Advanced Features:**
- šŸ”¬ **sitecore_scan_schema** - Automatic GraphQL schema analysis
- šŸ’¬ **sitecore_command** - Natural language `/sitecore` commands in chat
- šŸ” **sitecore_discover_item_dependencies** - Comprehensive item discovery with template, fields, and relationships

### šŸ“£ Live progress (all tools)

All MCP tools now report progress via stderr so you can see what's happening during longer operations in your AI client.

- Format: `[tool_name] Message...`
- Examples:
  - `[sitecore_get_item] Starting (path=/sitecore/content/Home, language=nl-NL)`
  - `[sitecore_get_item] Completed: Home (template=Page, version=1)`
  - `[sitecore_search_paginated] Completed: 50 item(s), hasNextPage=true`

Note: We always mention the language in messages (critical for Sitecore).

### šŸŽØ Examples

**Via Slash Command Menu** (Type `/` in chat):
```bash
# 1. Type / to open the menu
# 2. Choose "šŸ”§ /sitecore - Sitecore command interface"
# 3. Type your command (with or without /sitecore prefix)

help
get item /sitecore/content/Home
get item /sitecore/content/Home version 2    # NEW: Version support!
get parent /sitecore/content/Home/Article    # NEW: Parent navigation!
get ancestors /sitecore/content/Home/Article # NEW: Breadcrumb!
search articles
field Title from /sitecore/content/Home
templates
```

**Direct Natural Language Commands**:
```bash
/sitecore help
/sitecore scan schema
/sitecore get item /sitecore/content/Home
/sitecore get item /sitecore/content/Home version 2
/sitecore get parent /sitecore/content/Home/Article
/sitecore get ancestors /sitecore/content/Home/Article
/sitecore search articles
/sitecore field Title from /sitecore/content/Home
/sitecore templates
```

**Version Control Examples**:
```typescript
// Get specific version
sitecore_get_item({ 
  path: "/sitecore/content/Home", 
  language: "en",
  version: 2 
})

// Get all versions
sitecore_get_item_versions({
  path: "/sitecore/content/Home",
  language: "en"
})
// Returns: { totalVersions: 5, versions: [...], latestVersion: 5 }

// Get item with statistics
sitecore_get_item_with_statistics({
  path: "/sitecore/content/Home",
  language: "en"
})
// Returns: { created: "20211011T073530Z", createdBy: "sitecore\admin", ... }
```

**Navigation Examples**:
```typescript
// Get parent
sitecore_get_parent({
  path: "/sitecore/content/Home/Article"
})
// Returns: { name: "Home", path: "/sitecore/content/Home", ... }

// Get all ancestors (breadcrumb)
sitecore_get_ancestors({
  path: "/sitecore/content/Home/Article"
})
// Returns: { 
//   count: 3,
//   ancestors: [...],
//   breadcrumb: "sitecore > content > Home"
// }
```

## šŸ“š Docs Map

- **docs/guides/** - Technical guides and implementation details (GUID formats, content discovery, slash commands, etc.)
- **docs/releases/** - Release notes per version (RELEASE-NOTES-v1.x.md)
- **docs/ready-to-ship/** - Release checklists and readiness documents per version
- **docs/status/** - Progress reports and status updates
- **docs/summaries/** - Version summaries and overviews
- **docs/BACKLOG.md** - Product backlog and planning

Tip: All documentation is organized under docs/. Root contains only README.md.

## šŸ“ Repository Structuur

```
SitecoreMCP/
ā”œā”€ā”€ .github/                        # CI/CD workflows en GitHub configuratie
│   └── workflows/
│       └── root-scan.yml          # Root hygiene enforcement
│
ā”œā”€ā”€ src/                            # TypeScript source code
│   ā”œā”€ā”€ index.ts                   # MCP server entry point (11 tools)
│   ā”œā”€ā”€ sitecore-service.ts        # GraphQL client & business logic
│   ā”œā”€ā”€ sitecore-types.ts          # TypeScript type definitions (auto-generated)
│   └── sitecore-types-FULL.ts     # Extended type definitions
│
ā”œā”€ā”€ dist/                           # Compiled JavaScript (build output)
│
ā”œā”€ā”€ scripts/                        # All scripts organized by category
│   ā”œā”€ā”€ build/
│   │   └── build-vsix.ps1         # VS Code extension packaging
│   │
│   ā”œā”€ā”€ schema/                     # GraphQL schema management
│   │   ā”œā”€ā”€ download-schema.ps1    # Download schema from Sitecore
│   │   ā”œā”€ā”€ download-full-schema.ps1
│   │   ā”œā”€ā”€ analyze-schema.ps1     # Analyze schema structure
│   │   ā”œā”€ā”€ extract-schema-types.ps1
│   │   ā”œā”€ā”€ find-mutations.ps1     # Find mutation capabilities
│   │   ā”œā”€ā”€ generate-types.ps1     # Generate TypeScript types
│   │   ā”œā”€ā”€ generate-types-full.ps1
│   │   └── check-search-schema.cjs # Validate search schema
│   │
│   ā”œā”€ā”€ tests/                      # Test scripts (72 files)
│   │   ā”œā”€ā”€ Load-DotEnv.ps1        # Environment loader for tests
│   │   ā”œā”€ā”€ test-*.ps1             # PowerShell test scripts
│   │   └── test-*.cjs             # Node.js test scripts
│   │
│   ā”œā”€ā”€ tools/                      # Utility tools
│   │   ā”œā”€ā”€ build-relationship-graph.ps1  # Build item relationship graphs
│   │   ā”œā”€ā”€ parse-field-references.ps1    # Parse field references
│   │   └── Load-DotEnv.ps1              # Canonical environment loader
│   │
│   └── wrappers/                   # Backward compatibility wrappers
│       ā”œā”€ā”€ *.ps1                  # PowerShell wrappers (deprecated)
│       └── *.cjs                  # Node.js wrappers (deprecated)
│
ā”œā”€ā”€ docs/                           # All documentation
│   ā”œā”€ā”€ guides/                    # Technical guides (35+ documents)
│   ā”œā”€ā”€ releases/                  # Release notes per version
│   ā”œā”€ā”€ ready-to-ship/             # Release readiness checklists
│   ā”œā”€ā”€ status/                    # Status and progress reports
│   ā”œā”€ā”€ summaries/                 # Version summaries
│   └── BACKLOG.md                # Product backlog
│
ā”œā”€ā”€ data/                          # Schema and graph data (generated)
│   ā”œā”€ā”€ graphql-schema.json       # GraphQL schema dump
│   ā”œā”€ā”€ graphql-schema-full.json  # Full introspection result
│   └── graph.json                # Relationship graph data
│
ā”œā”€ā”€ .env.example                   # Environment variabelen template
ā”œā”€ā”€ package.json                   # NPM dependencies en scripts
ā”œā”€ā”€ tsconfig.json                  # TypeScript compiler configuratie
ā”œā”€ā”€ LICENSE                        # MIT licentie
└── README.md                      # Dit bestand (quick start)
```

### Purpose per Directory

| Directory | Purpose | Allowed Files |
|-----------|---------|---------------|
| **Root** | Project metadata and entry point | Config files + README.md only |
| **src/** | TypeScript source code | .ts files |
| **dist/** | Build output | .js, .d.ts files (generated) |
| **scripts/** | All scripts organized | Subdirectories per category |
| **scripts/build/** | Build and packaging scripts | build-vsix.ps1 |
| **scripts/schema/** | GraphQL schema management | Schema tools (9 scripts) |
| **scripts/tests/** | Test scripts | Test files (72 files) |
| **scripts/tools/** | Utility tools | Helpers and utilities (3 tools) |
| **scripts/wrappers/** | Backward compatibility | Deprecated wrappers (11 files) |
| **docs/** | All documentation | .md files in subdirectories |
| **data/** | Generated data files | .json schema dumps (gitignored) |
| **.github/** | CI/CD workflows | GitHub Actions workflows |

**Hygiene Policy**: Root contains ONLY config files and README.md. All documentation is under docs/, all scripts under scripts/. This structure is enforced by CI workflow (root-scan.yml).

## āœ… API Status

**GraphQL API is active and working!**
- āœ… Item queries
- āœ… Get children
- āœ… Get field values
- āœ… Template information
- āœ… Variables in queries

## Requirements

- Node.js 18 or higher
- Sitecore instance with GraphQL endpoint: `/sitecore/api/graph/items/master`
- Sitecore API Key (see configuration)

## šŸš€ Quick Start

### 1. Install dependencies

```bash
cd c:\gary\Sitecore\SitecoreMCP
npm install
npm run build
```

### 2. Configure Environment

Copy `.env.example` to `.env` and configure your Sitecore instance:

```bash
SITECORE_HOST=https://your-sitecore-instance.com
SITECORE_API_KEY=your-api-key-here
```

### 3. Run Tests

Verify that all MCP tools are working correctly:

```powershell
.\scripts\tests\run-tests.ps1
```

This will run a comprehensive test suite covering:
- āœ… Basic queries (item retrieval, children, fields)
- āœ… Advanced search & discovery
- āœ… Navigation & hierarchy (parent, ancestors)
- āœ… Utilities & extensions

Expected output: **17/17 tests passed (100% success rate)**

### 4. Configure your IDE/Tool

Choose your favorite tool and configure the Sitecore MCP server:

**Claude Desktop**: `%APPDATA%\Claude\claude_desktop_config.json`
**VS Code**: `.vscode/settings.json` or User Settings  
**Rider**: `%APPDATA%\JetBrains\Rider2024.3\options\mcp-servers.json`  
**Visual Studio**: `%USERPROFILE%\.github-copilot\mcp-servers.json`

See [docs/guides/INSTALLATION.md](docs/guides/INSTALLATION.md) for detailed configuration per tool.

**Example configuration** (Claude Desktop):

```json
{
  "mcpServers": {
    "sitecore": {
      "command": "node",
      "args": ["c:\\gary\\Sitecore\\SitecoreMCP\\dist\\index.js"],
      "env": {
        "SITECORE_HOST": "https://your-sitecore-instance.com",
        "SITECORE_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

For VS Code, Rider and Visual Studio configurations, see [docs/guides/INSTALLATION.md](docs/guides/INSTALLATION.md).

### 5. Restart your tool

- **Claude Desktop**: Close completely and restart
- **VS Code**: Reload Window (Ctrl+Shift+P)
- **Rider**: Invalidate Caches & Restart
- **Visual Studio**: Close solution and reopen

The Sitecore MCP server should now be available!

## šŸ’” Gebruik Voorbeelden

### Slash Command Menu (New in v1.2.0!)

**Step 1**: Open your AI chat (Claude Desktop, VS Code Copilot, etc.)  
**Step 2**: Type `/` to open the slash command menu  
**Step 3**: Choose `šŸ”§ /sitecore` from the menu  
**Step 4**: Type your command (prefix is automatically added)

```bash
# Via slash menu:
/ → choose /sitecore → "help"
/ → choose /sitecore → "get item /sitecore/content/Home"
/ → choose /sitecore → "search articles"
/ → choose /sitecore → "field Title from /sitecore/content/Home"
```

### Direct Commands

You can also type direct commands:

```
Get the Home item: /sitecore/content/Home
```

```
Show all children of /sitecore/content/Home
```

```
Execute this query: /sitecore/content/Home//*[@@templatename='Sample Item']
```

```
Search for items with "contact" in the name
```

```
What is the Title field of /sitecore/content/Home?
```

See [docs/guides/EXAMPLES.md](docs/guides/EXAMPLES.md) and [docs/guides/SLASH-COMMAND.md](docs/guides/SLASH-COMMAND.md) for more extensive examples.

## Sitecore PowerShell Extensions API

This MCP server uses the Sitecore PowerShell Extensions (SPE) API endpoint:

```
POST https://your-sitecore-instance.com/sitecore/api/spe/v2/script
```

Ensure SPE is correctly configured and the API is accessible.

## šŸ“š Documentation

For a complete overview of all directories and their purposes, see the **šŸ“ Repository Structure** section above.

**Main documents:**
- **[README.md](README.md)** (this file): Overview and quick start
- **[docs/guides/INSTALLATION.md](docs/guides/INSTALLATION.md)**: Detailed installation for all IDEs
- **[docs/guides/EXAMPLES.md](docs/guides/EXAMPLES.md)**: Extensive usage examples and use cases
- **[docs/guides/SLASH-COMMAND.md](docs/guides/SLASH-COMMAND.md)**: ⚔ Slash command menu guide
- **[docs/guides/SITECORE-COMMAND-GUIDE.md](docs/guides/SITECORE-COMMAND-GUIDE.md)**: Natural language command reference

**Documentation Structure:**
- `docs/guides/` – Technical guides and how-to's (35+ documents)
- `docs/releases/` – Release notes per version (RELEASE-NOTES-v1.x.md)
- `docs/ready-to-ship/` – Release readiness checklists
- `docs/status/` – Status and progress reports
- `docs/summaries/` – Version summaries

**Note**: All documentation is under `docs/`. The root contains only README.md. Scripts are under `scripts/` in categories (build, schema, tests, tools, wrappers).

## šŸ”§ Troubleshooting

### MCP server doesn't appear
- **Claude**: Check `claude_desktop_config.json` syntax → Restart app
- **VS Code**: Reload Window (Ctrl+Shift+P) → Check Output panel
- **Rider**: Invalidate Caches → Check Event Log
- **Visual Studio**: Restart as Administrator → Check Extension logs

### SPE API errors
- Run `.\test-spe-api.ps1` to test the API
- Verify that SPE remoting is enabled in `Spe.config`
- Check Sitecore logs: `https://your-sitecore-instance.com/sitecore/admin/showlog.aspx`

### Items not found
- Verify that the path exists (case-sensitive!)
- Verify database (master/web/core)
- Check language code (en/nl/etc.)

For more details, see [docs/guides/INSTALLATION.md](docs/guides/INSTALLATION.md).

## āš ļø Security

**Warning**: This configuration is intended for LOCAL development!

For production environments:
- āœ… Use HTTPS with valid certificate
- āœ… No credentials in configuration files
- āœ… Use Sitecore API keys
- āœ… Restrict SPE permissions
- āœ… Enable SSL certificate verification

## šŸ¤ Contributing

Suggestions and improvements are welcome! Create an issue or submit a pull request.

## šŸ“„ License

MIT