Skip to main content
Glama

Contentstack MCP Server

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 for upcoming improvements and planned features.

Table of Contents

Related MCP server: mcp-clickup

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:

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

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

Manual Installation

  1. Clone the repository:

    git clone https://github.com/darekrossman/contentstack-mcp.git
    cd contentstack-mcp
  2. Install dependencies:

    npm install
  3. Set up environment variables:

    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:

    npm run build
    npm start

Installation via Smithery CLI

You can also install this MCP server using the Smithery CLI:

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

See the Smithery CLI documentation for more details and advanced usage.

Development

Setup for Development

For development, you can use:

npm run dev

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

Code Quality

This project uses Biome.js for linting and formatting. It provides a consistent code style and helps catch potential issues early.

Available Commands

  • Lint Code:

    npm run lint
  • Lint and Fix:

    npm run lint:fix
  • Format Code:

    npm run format
  • Format and Fix:

    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:

    {
      "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:

{
   "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 using your client of choice:

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 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. 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.

Available Tools

15 tools
create_content_typeC

Creates a new content type with the specified schema, options, field rules, and taxonomies.

Inputs: schema (required), title (required), uid (required), field_rules, +2 more.

create_entryC

Creates a new entry for a specified content type.

Inputs: content_type_uid (required), entry (required).

create_global_fieldC

Creates a new global field with the specified title, UID, and schema.

Inputs: schema (required), title (required), uid (required).

delete_content_typeC

Deletes a content type identified by its UID.

Inputs: uid (required).

delete_entryC

Deletes an entry identified by its UID and content type UID.

Inputs: content_type_uid (required), entry_uid (required).

get_all_content_typesC

Retrieves a list of all content types, with options for pagination and including additional details like global field schema and counts.

Inputs: include_branch_info, include_count, include_global_field_schema, include_reference_content_type_uid, +2 more.

get_all_global_fieldsC

Retrieves a list of all global fields, with options for pagination and including branch information.

Inputs: include_branch_info, include_count, limit, skip.

get_content_typeB

Retrieves a specific content type by its UID, optionally including the global field schema.

Inputs: uid (required), include_global_field_schema.

get_entriesC

Retrieves entries for a specified content type, with extensive options for filtering, sorting, pagination, and including related data.

Inputs: content_type_uid (required), asc, desc, except, +13 more.

get_entryA

Retrieves a specific entry by its content type UID and entry UID, with options for locale and including references.

Inputs: content_type_uid (required), entry_uid (required), include_reference_content_type_uid, include_references, +1 more.

publish_entryC

Publishes an entry to a specified environment and locale.

Inputs: content_type_uid (required), entry_uid (required), environment (required), locale.

unpublish_entryC

Unpublishes an entry from a specified environment and locale.

Inputs: content_type_uid (required), entry_uid (required), environment (required), locale.

update_content_typeC

Updates an existing content type identified by its UID. Allows modification of title, schema, options, and field rules.

Inputs: uid (required), field_rules, options, schema, +1 more.

update_entryC

Updates an existing entry identified by its UID and content type UID.

Inputs: content_type_uid (required), entry (required), entry_uid (required).

update_global_fieldB

Updates an existing global field identified by its UID. Allows modification of title and schema.

Inputs: uid (required), schema, title.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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 recent community issues

    Related MCP Connectors

    Related MCP Servers