Thinkific MCP Server

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.

Category
Visit Server

README

Thinkific MCP Server

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

Features

  • 108 MCP tools covering the full Thinkific API surface — 77 REST tools and 31 GraphQL tools
  • Full REST coverage — courses, users, enrollments, orders, products, bundles, coupons, groups, instructors, reviews, promotions, categories, site scripts, external orders, publish requests, and more
  • GraphQL support — queries and mutations for communities, posts, lessons, assignments, and advanced data access via https://api.thinkific.com/stable/graphql
  • 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

REST Tool Reference

Users

Tool Description Key Parameters
list_users List all users/students page, limit
get_user Get user details by ID user_id
create_user Create a new user first_name, last_name, email, password?, roles?, company?, send_welcome_email?
search_users Search users by email/name query, page, limit
update_user Update user details user_id, fields to update
delete_user Delete a user user_id

Enrollments

Tool Description Key Parameters
list_enrollments List enrollments (filterable) page, limit, query_user_id?, query_course_id?, query_email?
create_enrollment Enroll a user in a course course_id, user_id, activated_at?, expiry_date?
get_enrollment Get enrollment details by ID enrollment_id
update_enrollment Update an enrollment enrollment_id, fields to update

Courses

Tool Description Key Parameters
list_courses List all courses with pagination page, limit
get_course Get a single course by ID course_id

Chapters

Tool Description Key Parameters
list_chapters List chapters in a course course_id, page, limit
get_chapter Get chapter details by ID chapter_id

Contents

Tool Description Key Parameters
list_contents List lessons in a chapter chapter_id, page, limit
get_content Get content/lesson details by ID content_id

Orders

Tool Description Key Parameters
list_orders List orders (filterable) page, limit, query_user_id?, query_email?
get_order Get order details by ID order_id

Products

Tool Description Key Parameters
list_products List all products page, limit
get_product Get product details by ID product_id
list_related_products List related products product_id, page, limit

Bundles

Tool Description Key Parameters
list_bundles List course bundles page, limit
get_bundle Get bundle details by ID bundle_id
list_bundle_courses List courses in a bundle bundle_id, page, limit
list_bundle_enrollments List bundle enrollments bundle_id, page, limit
create_bundle_enrollment Enroll a user in a bundle bundle_id, user_id
update_bundle_enrollment Update a bundle enrollment bundle_id, enrollment_id, fields to update

Groups

Tool Description Key Parameters
list_groups List all groups page, limit
get_group Get group details by ID group_id
create_group Create a new group name
delete_group Delete a group group_id

Group Analysts

Tool Description Key Parameters
list_group_analysts List analysts for a group group_id, page, limit
add_group_analyst Add an analyst to a group group_id, user_id
remove_group_analyst Remove an analyst from a group group_id, user_id

Group Users

Tool Description Key Parameters
add_user_to_group Add a user to a group group_id, user_id

Coupons

Tool Description Key Parameters
list_coupons List all coupons page, limit
create_coupon Create a discount code code, discount_type, discount_amount, note?, quantity?, product_ids?, expires_at?
get_coupon Get coupon details by ID coupon_id
update_coupon Update a coupon coupon_id, fields to update
delete_coupon Delete a coupon coupon_id
bulk_create_coupons Bulk create coupons count, coupon params

Promotions

Tool Description Key Parameters
list_promotions List promotions page, limit
create_promotion Create a promotion name, discount_type, discount_amount, promotion params
get_promotion Get promotion details by ID promotion_id
update_promotion Update a promotion promotion_id, fields to update
delete_promotion Delete a promotion promotion_id
get_promotion_by_coupon Get promotion for a coupon code coupon_code

Categories

Tool Description Key Parameters
list_categories List categories page, limit
create_category Create a new category name
get_category Get category details by ID category_id
update_category Update a category category_id, fields to update
delete_category Delete a category category_id
list_category_products List products in a category category_id, page, limit
add_products_to_category Add products to a category category_id, product_ids
remove_products_from_category Remove products from a category category_id, product_ids

Course Reviews

Tool Description Key Parameters
list_course_reviews List reviews (filterable) course_id?, page, limit
create_course_review Create a course review course_id, user_id, rating, title?, review?
get_course_review Get review details by ID review_id

Instructors

Tool Description Key Parameters
list_instructors List instructors page, limit
create_instructor Create an instructor profile user_id, instructor fields
get_instructor Get instructor details by ID instructor_id
update_instructor Update an instructor profile instructor_id, fields to update
delete_instructor Delete an instructor profile instructor_id

Custom Profile Fields

Tool Description Key Parameters
list_custom_profile_fields List all custom profile fields (none)

External Orders

Tool Description Key Parameters
create_external_order Create an external order user_id, product_id, order params
refund_external_order Refund an external order order_id
purchase_external_order Process an external order purchase order_id

Product Publish Requests

Tool Description Key Parameters
list_publish_requests List product publish requests page, limit
get_publish_request Get a publish request by ID request_id
approve_publish_request Approve a publish request request_id
deny_publish_request Deny a publish request request_id

Site Scripts

Tool Description Key Parameters
list_site_scripts List all site scripts page, limit
create_site_script Create a site script name, src, load_method?, location?
get_site_script Get site script details by ID script_id
update_site_script Update a site script script_id, fields to update
delete_site_script Delete a site script script_id

Site

Tool Description Key Parameters
get_site_info Site overview (counts and settings) (none)

GraphQL Tool Reference

GraphQL tools use the Thinkific GraphQL endpoint: https://api.thinkific.com/stable/graphql

Queries

Tool Description Key Parameters
gql_site Fetch site details via GraphQL (none)
gql_me Get current authenticated user (none)
gql_course Get course details by ID id
gql_course_by_slug Get course details by slug slug
gql_user Get user details by ID id
gql_user_by_email Get user details by email email
gql_bundle Get bundle details by ID id
gql_category Get category details by ID id
gql_chapter Get chapter details by ID id
gql_lesson Get lesson details by ID id
gql_group Get group details by ID id
gql_product Get product details by ID id
gql_community Get community details by ID id
gql_community_user Get community user details community_id, user_id
gql_post Get a community post by ID id
gql_space Get a community space by ID id

Mutations

Tool Description Key Parameters
gql_create_post Create a community post space_id, content, title?
gql_reply_to_post Reply to a community post post_id, content
gql_update_post Update a community post post_id, content?, title?
gql_follow_post Follow a community post post_id
gql_unfollow_post Unfollow a community post post_id
gql_pin_post Pin a community post post_id
gql_unpin_post Unpin a community post post_id
gql_move_post Move a post to another space post_id, space_id
gql_react_to_post React to a community post post_id, reaction
gql_bulk_add_users_to_groups Bulk add users to groups user_ids, group_ids
gql_bulk_remove_users_from_groups Bulk remove users from groups user_ids, group_ids
gql_mark_lesson_incomplete Mark a lesson as incomplete for a user lesson_id, user_id
gql_view_lesson Mark a lesson as viewed/complete for a user lesson_id, user_id
gql_update_assignment_submission Update an assignment submission submission_id, fields to update
gql_update_product Update a product via GraphQL id, fields to update

Resources

Resource URI Description
thinkific://courses JSON listing of all courses (first 100)
thinkific://users JSON listing of all users (first 100)
thinkific://site JSON overview with total counts

Environment Variables

Variable Required Description
THINKIFIC_API_KEY Yes (API Key auth) Your Thinkific API key from Settings → Code & Analytics → API
THINKIFIC_SUBDOMAIN Yes (API Key auth) Your Thinkific site subdomain (e.g. my-school from my-school.thinkific.com)
THINKIFIC_OAUTH_TOKEN Yes (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 (REST)
│   ├── gql-tools.ts   # MCP tool definitions and handlers (GraphQL)
│   ├── 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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured