Skip to main content
Glama
README.md
<p align="center">
  <img src="assets/cs-logo.png" />
</p>

# Contentstack MCP Server
[![smithery badge](https://smithery.ai/badge/@darekrossman/contentstack-mcp)](https://smithery.ai/server/@darekrossman/contentstack-mcp)

This Model Context Protocol (MCP) server integrates with Contentstack's Content Management API, enabling AI assistants like Claude to interact with your Contentstack CMS through a standardized protocol.

> **Note:** This is an early version of Contentstack MCP Server. See the [Roadmap](#roadmap) for upcoming improvements and planned features.

<a href="https://glama.ai/mcp/servers/@darekrossman/contentstack-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@darekrossman/contentstack-mcp/badge" alt="contentstack-mcp MCP server" />
</a>

## Table of Contents
- [Features](#features)
- [Installation](#installation)
- [Development](#development)
- [Configuration](#configuration)
- [Integration with AI Assistants](#integration-with-ai-assistants)
- [Usage Examples](#usage-examples)
- [Roadmap](#roadmap)
- [License](#license)

## Features

### Available Resources
- **`content-types`**: List all content types (URI: `contentstack://content-types`)
- **`content-type`**: Get content type by UID (URI: `contentstack://content-type/{uid}`)
- **`entries`**: Get entries by content type (URI: `contentstack://entries/{content_type_uid}`)
- **`entry`**: Get specific entry (URI: `contentstack://entry/{content_type_uid}/{entry_uid}`)
- **`assets`**: List all assets (URI: `contentstack://assets`)

### Content Type Management
- Create, update, and delete content types
- Define schemas, options, field rules, and taxonomies
- Manage global fields

### Entry Management
- Create, update, and delete entries
- Publish and unpublish entries across environments
- Query entries with filtering, pagination, and sorting options

### Global Field Management
- Create and update global fields for reuse across content types
- Retrieve global fields with pagination options

### Content Workflows
- Guided content creation workflows
- Content analysis and insights
- Migration planning assistance

## Installation

### Prerequisites
- Node.js (v16.0.0 or higher)
- A Contentstack account
- API credentials (API Key and Management Token)

### NPM Installation
The easiest way to use this MCP server is via NPM:

```bash
# Install globally
npm install -g @drossman/contentstack-mcp

# Or use directly via npx
npx @drossman/contentstack-mcp
```

### Manual Installation

1. Clone the repository:
   ```bash
   git clone https://github.com/darekrossman/contentstack-mcp.git
   cd contentstack-mcp
   ```

2. Install dependencies:
   ```bash
   npm install
   ```

3. Set up environment variables:
   ```bash
   cp .env.example .env
   ```
   
   Edit the `.env` file with your Contentstack credentials:
   ```
   CONTENTSTACK_API_KEY=your_api_key_here
   CONTENTSTACK_MANAGEMENT_TOKEN=your_management_token_here
   # Optional: Specify branch if using branches
   CONTENTSTACK_BRANCH=your_branch_name
   ```

4. Build and start the server:
   ```bash
   npm run build
   npm start
   ```

### Installation via Smithery CLI

You can also install this MCP server using the [Smithery CLI](https://github.com/smithery-ai/cli):

```bash
npx @smithery/cli install contentstack-mcp --client claude
```

See the [Smithery CLI documentation](https://github.com/smithery-ai/cli) for more details and advanced usage.

## Development

### Setup for Development
For development, you can use:
```bash
npm run dev
```

This starts the server using `ts-node` for a faster development cycle.

### Code Quality

This project uses [Biome.js](https://biomejs.dev/) for linting and formatting. It provides a consistent code style and helps catch potential issues early.

#### Available Commands

- **Lint Code**:
  ```bash
  npm run lint
  ```

- **Lint and Fix**:
  ```bash
  npm run lint:fix
  ```

- **Format Code**:
  ```bash
  npm run format
  ```

- **Format and Fix**:
  ```bash
  npm run format:fix
  ```

## Configuration

### Authentication

This server requires authentication with Contentstack's API:

**Management Token (Required)**:
- Stack-level token with predefined permissions
- Set via `CONTENTSTACK_MANAGEMENT_TOKEN` environment variable
- Generate from Contentstack dashboard: Settings > Tokens > Management Tokens

**API Key (Required)**:
- Stack API key for authentication
- Set via `CONTENTSTACK_API_KEY` environment variable

### Branch Support

If your Contentstack account uses branches, you can specify a branch:

```
CONTENTSTACK_BRANCH=develop
```

## Integration with AI Assistants

### Claude for Desktop

To use this server with Claude for Desktop:

1. Edit your Claude for Desktop configuration file:
   - Mac: `~/Library/Application Support/Claude/claude_desktop_config.json`
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`

2. Add this server to the `mcpServers` section:
   ```json
   {
     "mcpServers": {
       "contentstack": {
         "command": "npx",
         "args": ["-y", "@drossman/contentstack-mcp"],
         "env": {
           "CONTENTSTACK_API_KEY": "your_api_key_here",
           "CONTENTSTACK_MANAGEMENT_TOKEN": "your_management_token_here"
         }
       }
     }
   }
   ```

3. Restart Claude for Desktop

### Cursor

To use this server with Cursor, add the Contentstack MCP server configuration:
```json
{
   "mcpServers": {
      "contentstack": {
      "command": "npx",
      "args": ["-y", "@drossman/contentstack-mcp"],
      "env": {
         "CONTENTSTACK_API_KEY": "your_api_key_here",
         "CONTENTSTACK_MANAGEMENT_TOKEN": "your_management_token_here",
      }
      }
   }
}
```

### Install with Smithery

You can also install this MCP server using the [Smithery CLI](https://github.com/smithery-ai/cli) using your client of choice:

```bash
npx -y @smithery/cli install @drossman/contentstack-mcp --client claude
```

#### Available clients include:

- claude
- cline
- windsurf
- roocode
- witsy
- enconvo
- cursor
- vscode
- vscode-insiders
- boltai
- amazon-bedrock
- amazonq

See the [Smithery CLI documentation](https://github.com/smithery-ai/cli) for more details and advanced usage.

## Roadmap

- [ ] **Enhanced AI Contextual Understanding**: Improve context provisioning for complex queries
- [ ] **Advanced Querying & Filtering**: Support filtering by multiple criteria and custom fields
- [ ] **Workflow & Publishing Automation**: Enable AI-driven content workflow actions
- [ ] **Asset Management Enhancements**: Add direct asset manipulation capabilities
- [ ] **Bulk Operations Support**: Implement batch operations for entries and assets
- [ ] **Improved Error Handling & AI Feedback**: Refine error messages for AI consumption
- [ ] **User-Specific Context & Permissions**: Tailor actions based on user permissions
- [ ] **Extensibility for Custom Tools**: Create an extension framework
- [ ] **Real-time Event Handling**: Add webhook support for reactive AI behaviors
- [ ] **Comprehensive Documentation**: Develop detailed guides for AI interaction

## Shoutout

Special thanks to [Ivo Toby](https://github.com/ivo-toby). This project and its author are heavily inspired by his work in this space.

## License

MIT

---

**Disclaimer:** This project is not affiliated with, endorsed by, or supported by Contentstack. It is an independent open-source project designed to work with the Contentstack API.

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources (content types, entries, global fields) and actions (create, get, update, delete, publish/unpublish). There is no overlap or ambiguity; for example, get_all_content_types vs. get_content_type are clearly differentiated by scope.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with underscores (e.g., create_content_type, get_entries, update_global_field). The naming is predictable and uniform across all 15 tools, making it easy for agents to understand and use them.

Tool Count5/5

With 15 tools, this server is well-scoped for content management operations. Each tool earns its place by covering essential CRUD and lifecycle actions for content types, entries, and global fields, without being overly bloated or sparse.

Completeness5/5

The tool surface provides complete CRUD and lifecycle coverage for the content management domain. It includes create, get, update, and delete for all core resources (content types, entries, global fields), plus publishing/unpublishing for entries, with no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues