MCP Hub
Back to servers

Contentstack MCP Streamable HTTP Server

A transport wrapper that exposes Contentstack MCP tools over HTTP instead of stdio to enable remote access and horizontal scaling. It acts as a proxy for the Contentstack MCP package, allowing browser-based and networked clients to interact with various Contentstack APIs.

glama
Updated
Mar 5, 2026

Contentstack MCP Streamable HTTP Server

DEPRECATED: Contentstack will build a Streamable http server soon

A Streamable HTTP transport wrapper for the @contentstack/mcp package. This server exposes all Contentstack MCP tools over HTTP instead of stdio, enabling remote access, horizontal scaling, and integration with browser-based and networked MCP clients.

How It Works

This server acts as a transparent proxy:

  1. Spawns @contentstack/mcp as a child process communicating via stdio
  2. Discovers all available tools from the child process
  3. Exposes them over Streamable HTTP transport at a single /mcp endpoint
  4. Forwards tool calls from HTTP clients to the underlying Contentstack MCP server

All tools from @contentstack/mcp are available — CMA, CDA, Analytics, BrandKit, Launch, DeveloperHub, Lytics, and Personalize.

Prerequisites

  • Node.js 18+
  • A Contentstack account with appropriate credentials
  • OAuth authentication completed (for CMA, Analytics, BrandKit, Launch, DeveloperHub, Personalize)

Setup

1. Install dependencies

npm install

2. Configure environment variables

Copy the example env file and fill in your credentials:

cp .env.example .env

Edit .env with your Contentstack credentials:

CONTENTSTACK_API_KEY=your_stack_api_key
GROUPS=cma

See Environment Variables for the full list.

3. Authenticate with OAuth

Before using CMA, Analytics, BrandKit, Launch, DeveloperHub, or Personalize tools, run the OAuth flow:

npm run auth

This stores your OAuth tokens locally for the child process to use.

4. Build and run

npm run build
npm start

For development with auto-reload:

npm run dev

The server starts on port 3000 by default.

Connecting a Client

Configure your MCP client to connect via Streamable HTTP. Example mcp-config.json:

{
  "mcpServers": {
    "contentstack": {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

Cursor IDE

Add to your Cursor MCP settings (.cursor/mcp.json):

{
  "mcpServers": {
    "contentstack": {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

Environment Variables

VariableRequiredDescription
PORTNoServer port (default: 3000)
CONTENTSTACK_API_KEYYesYour Stack API Key
CONTENTSTACK_DELIVERY_TOKENCDA onlyDelivery token for Content Delivery API
CONTENTSTACK_BRAND_KIT_IDBrandKit onlyBrand Kit ID
CONTENTSTACK_LAUNCH_PROJECT_IDLaunch onlyLaunch Project ID
CONTENTSTACK_PERSONALIZE_PROJECT_IDPersonalize onlyPersonalize Project ID
LYTICS_ACCESS_TOKENLytics onlyLytics access token
GROUPSNoComma-separated API groups to enable (default: cma). Options: cma, cda, analytics, brandkit, launch, developerhub, lytics, personalize, all

API Groups

GroupAuthenticationRequired Configuration
CMAOAuthStack API Key
CDAToken-basedStack API Key + Delivery Token
AnalyticsOAuthStack API Key
BrandKitOAuthStack API Key + Brand Kit ID
LaunchOAuthStack API Key + Launch Project ID
DeveloperHubOAuthStack API Key
LyticsToken-basedLytics Access Token
PersonalizeOAuthStack API Key + Personalize Project ID

Endpoints

MethodPathDescription
POST/mcpMCP JSON-RPC requests (initialize, tool calls)
GET/mcpSSE stream for server-to-client notifications
DELETE/mcpSession termination
GET/healthHealth check with tool count and active sessions

License

MIT

Reviews

No reviews yet

Sign in to write a review