MCP Hub
Back to servers

Thinkific MCP Server

Enables AI assistants to manage Thinkific sites through the REST Admin API, providing tools for handling courses, students, enrollments, and orders. It features 24 specialized tools and resources with support for dual authentication and automatic rate-limit management.

glama
Updated
Mar 31, 2026

Thinkific MCP Server

A production-quality Model Context Protocol (MCP) server for the Thinkific REST Admin API. Lets AI assistants (Claude, GPT, etc.) interact with your Thinkific site directly — manage courses, students, enrollments, orders, coupons, and more.

Features

  • 24 MCP tools covering courses, users, enrollments, orders, products, bundles, coupons, groups, instructors, reviews, promotions, and categories
  • 3 MCP resources for quick site overview data
  • Dual authentication — API Key or OAuth Bearer token
  • Pagination on every list endpoint (page + limit params)
  • Rate-limit awareness — automatic retry with exponential back-off on 429 responses
  • Structured error handling — human-readable errors, never crashes the server
  • TypeScript — fully typed, strict mode, JSDoc throughout

Quick Start

1. Install

# Clone or copy the project
cd ~/Documents/thinkific-mcp

# Install dependencies
npm install

# Build
npm run build

2. Configure Authentication

You need one of the two auth methods:

Option A: API Key (single site)

Find your API key in your Thinkific admin: Settings → Code & Analytics → API.

export THINKIFIC_API_KEY="your-api-key"
export THINKIFIC_SUBDOMAIN="your-site-subdomain"

Option B: OAuth Token (multi-site apps)

export THINKIFIC_OAUTH_TOKEN="your-oauth-bearer-token"

3. Run

# Direct
node dist/index.js

# Or via npm
npm start

Usage with Claude Desktop

Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "thinkific": {
      "command": "node",
      "args": ["/path/to/thinkific-mcp/dist/index.js"],
      "env": {
        "THINKIFIC_API_KEY": "your-api-key",
        "THINKIFIC_SUBDOMAIN": "your-subdomain"
      }
    }
  }
}

Usage with OpenClaw / mcporter

# Register the server
mcporter add thinkific -- node /path/to/thinkific-mcp/dist/index.js

# Set env vars
mcporter env thinkific THINKIFIC_API_KEY=your-api-key
mcporter env thinkific THINKIFIC_SUBDOMAIN=your-subdomain

# Verify tools are visible
mcporter tools thinkific

Tool Reference

Courses

ToolDescriptionKey Parameters
list_coursesList all courses with paginationpage, limit
get_courseGet a single course by IDcourse_id

Chapters & Contents

ToolDescriptionKey Parameters
list_chaptersList chapters in a coursecourse_id, page, limit
list_contentsList lessons in a chapterchapter_id, page, limit

Users

ToolDescriptionKey Parameters
list_usersList all users/studentspage, limit
get_userGet user details by IDuser_id
create_userCreate a new userfirst_name, last_name, email, password?, roles?, company?, send_welcome_email?
search_usersSearch users by email/namequery, page, limit

Enrollments

ToolDescriptionKey Parameters
list_enrollmentsList enrollments (filterable)page, limit, query_user_id?, query_course_id?, query_email?
create_enrollmentEnroll a user in a coursecourse_id, user_id, activated_at?, expiry_date?

Orders

ToolDescriptionKey Parameters
list_ordersList orders (filterable)page, limit, query_user_id?, query_email?
get_orderGet order details by IDorder_id

Products & Bundles

ToolDescriptionKey Parameters
list_productsList all productspage, limit
get_productGet product details by IDproduct_id
list_bundlesList course bundlespage, limit

Coupons

ToolDescriptionKey Parameters
list_couponsList all couponspage, limit
create_couponCreate a discount codecode, discount_type, discount_amount, note?, quantity?, product_ids?, expires_at?

Groups

ToolDescriptionKey Parameters
list_groupsList all groupspage, limit
get_groupGet group details by IDgroup_id

Other

ToolDescriptionKey Parameters
list_instructorsList instructorspage, limit
list_course_reviewsList reviews (filterable)course_id?, page, limit
list_promotionsList promotionspage, limit
list_categoriesList categoriespage, limit
get_site_infoSite overview (counts)(none)

Resources

Resource URIDescription
thinkific://coursesJSON listing of all courses (first 100)
thinkific://usersJSON listing of all users (first 100)
thinkific://siteJSON overview with total counts

Environment Variables

VariableRequiredDescription
THINKIFIC_API_KEYYes (API Key auth)Your Thinkific API key from Settings → Code & Analytics → API
THINKIFIC_SUBDOMAINYes (API Key auth)Your Thinkific site subdomain (e.g. my-school from my-school.thinkific.com)
THINKIFIC_OAUTH_TOKENYes (OAuth auth)OAuth2 Bearer token (alternative to API Key auth)

Note: If THINKIFIC_OAUTH_TOKEN is set, it takes precedence over API Key auth.

Project Structure

thinkific-mcp/
├── src/
│   ├── index.ts       # Entry point — server bootstrap
│   ├── client.ts      # Thinkific API client (auth, pagination, retry)
│   ├── tools.ts       # MCP tool definitions and handlers
│   ├── resources.ts   # MCP resource definitions
│   ├── types.ts       # TypeScript interfaces for API responses
│   └── test.ts        # Validation test script
├── dist/              # Compiled JavaScript (after build)
├── package.json
├── tsconfig.json
├── README.md
├── LICENSE
└── .gitignore

Development

# Build
npm run build

# Watch mode
npm run dev

# Type-check only
npm run lint

# Run tests (after build)
npm test

Troubleshooting

"Thinkific authentication not configured"

Set the required environment variables. You need either:

  • THINKIFIC_API_KEY and THINKIFIC_SUBDOMAIN, or
  • THINKIFIC_OAUTH_TOKEN

401 Authentication Error

  • Verify your API key hasn't been rotated (keys are shown only once after reset)
  • Confirm your Thinkific plan supports API access (Grow/Pro + Growth or above)
  • Check the subdomain matches exactly (e.g. my-school, not my-school.thinkific.com)

429 Rate Limit

The server automatically retries with exponential back-off (up to 3 retries). If you're consistently hitting rate limits, reduce request frequency or add pagination with smaller page sizes.

Empty Results

  • Check that you're connecting to the correct site (verify subdomain)
  • Some endpoints require data to exist first (e.g. no enrollments without courses and users)

Server Won't Start

  • Ensure Node.js 18+ is installed: node --version
  • Run npm run build first — the server runs from dist/
  • Check stderr for error messages (stdout is reserved for MCP protocol)

API Documentation

License

MIT — see LICENSE.

Reviews

No reviews yet

Sign in to write a review