Skool MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Skool MCP Serverlist pending membership requests in my community"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Skool MCP Server
An MCP (Model Context Protocol) server for interacting with Skool.com communities.
Overview
Skool doesn't have a public API, so this MCP uses authenticated HTTP requests to Skool's internal API endpoints (reverse-engineered from the web app).
Related MCP server: coolify-mcp
Setup
1. Install & Build
cd /mnt/c/projects/skool-mcp # or wherever you cloned it
npm install
npm run build2. Configure Skool Auth
Create ~/.config/skool-mcp/config.json:
{
"cookies": "your-skool-session-cookies-here",
"defaultCommunity": "ai-agent-academy-6994",
"baseUrl": "https://www.skool.com"
}Getting cookies: Open Skool in Chrome → DevTools → Application → Cookies → copy the auth_token value. The cookies field should be: auth_token=YOUR_JWT_HERE
3. Configure Claude Code
Add to your .mcp.json (in your project root or ~/.claude/.mcp.json for global):
{
"mcpServers": {
"skool": {
"command": "node",
"args": ["/mnt/c/projects/skool-mcp/dist/index.js"],
"env": {}
}
}
}4. Configure mcporter (OpenClaw)
mcporter add skool --command "node /mnt/c/projects/skool-mcp/dist/index.js" --transport stdioThen call tools via:
mcporter call skool "skool.request" method="GET" path="/api/v1/..."Authentication
Uses session cookies from an authenticated Skool session. The auth_token JWT is httpOnly and long-lived (expires ~1 year).
Tools
Discovery
skool.request— Make arbitrary authenticated requests to Skool (for API exploration)
Community
skool.community.info— Get community details (name, description, member count, settings)
Members
skool.members.list— List members of a communityskool.members.pending— List pending membership requestsskool.members.approve— Approve a pending memberskool.members.reject— Reject a pending member
Posts
skool.posts.list— List posts in a community (with category filter, pagination)skool.posts.get— Get a specific post with commentsskool.posts.create— Create a new postskool.posts.comment— Comment on a post
Classroom
skool.courses.list— List coursesskool.lessons.list— List lessons in a course
Notifications
skool.notifications— Get recent notifications
API Notes
Read operations use Next.js data routes (
/_next/data/{buildId}/...). ThebuildIdis fetched dynamically.Write operations use
api2.skool.comREST endpoints.A
User-Agentheader is required (CloudFront blocks bare requests with 403).See
API-DISCOVERY.mdfor detailed endpoint documentation and response shapes.
Available Tools
14 toolsskool_community_infoB
Get community details including name, description, member count, and settings. Uses Next.js data route for read access.
| Name | Required | Description | Default |
|---|---|---|---|
| community | No | Community slug (e.g. 'ai-agent-academy-6994'). Uses default from config if omitted. |
skool_community_labelsB
Get category labels for a community from api2.skool.com.
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The group UUID (find via skool_community_info) |
skool_courses_listB
List courses in a community classroom. Returns course names and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | No | Group UUID — if provided, uses api2.skool.com for richer data | |
| community | No | Community slug. Uses default from config if omitted. |
skool_lessons_listC
List lessons/modules in a specific course. Uses the Next.js classroom data route with course parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| community | No | Community slug. Uses default from config if omitted. | |
| courseSlug | Yes | The course slug/name to list lessons for |
skool_members_approveA
Approve a pending member by their membership request ID. Requires admin/moderator auth.
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The group UUID | |
| memberId | Yes | The member/membership request UUID to approve |
skool_members_listB
List community members with pagination. Returns member info including name, bio, role, and online status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| community | No | Community slug. Uses default from config if omitted. |
skool_members_pendingA
List pending membership requests. Requires auth cookies with admin/moderator access.
| Name | Required | Description | Default |
|---|---|---|---|
| community | No | Community slug. Uses default from config if omitted. |
skool_members_rejectA
Reject a pending member by their membership request ID. Requires admin/moderator auth.
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The group UUID | |
| memberId | Yes | The member/membership request UUID to reject |
skool_notificationsB
Get recent notifications. Tries the Next.js notifications page data route.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number |
skool_posts_commentA
Add a comment to a post. Requires auth cookies. Posts to api2.skool.com.
| Name | Required | Description | Default |
|---|---|---|---|
| postId | Yes | The post UUID to comment on | |
| content | Yes | Comment text content | |
| groupId | Yes | The group UUID |
skool_posts_createA
Create a new post in a community. Requires auth cookies. Posts to api2.skool.com.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Category label UUID | |
| title | Yes | Post title | |
| content | Yes | Post body content | |
| groupId | Yes | The group UUID |
skool_posts_getA
Get a single post with its full content and comments. Provide the post slug (name field from posts list).
| Name | Required | Description | Default |
|---|---|---|---|
| postSlug | Yes | The post slug/name (from the 'name' field in posts list) | |
| community | No | Community slug. Uses default from config if omitted. |
skool_posts_listA
List posts in a community feed. Supports category filtering and pagination. Returns post title, content preview, author, likes, and comment count.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| sort | No | Sort order: newest-cm (recent activity), newest (created), top (most liked) | newest-cm |
| category | No | Category/label UUID to filter by | |
| community | No | Community slug. Uses default from config if omitted. |
skool_requestA
Make an arbitrary authenticated HTTP request to any Skool URL. Useful for API discovery and debugging. Cookies and User-Agent are injected automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL to request (e.g. https://www.skool.com/some/path or https://api2.skool.com/endpoint) | |
| body | No | Request body (for POST/PUT/PATCH) | |
| method | No | HTTP method | GET |
| headers | No | Additional headers as key-value pairs |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.0- First observed
skool_community_info - First observed
skool_community_labels - First observed
skool_courses_list - First observed
skool_lessons_list - First observed
skool_members_approve - First observed
skool_members_list - First observed
skool_members_pending - First observed
skool_members_reject - First observed
skool_notifications - First observed
skool_posts_comment - First observed
skool_posts_create - First observed
skool_posts_get - First observed
skool_posts_list - First observed
skool_request
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action: community info vs labels, member management actions are clearly separated (list, pending, approve, reject), posts have list/get/create/comment, and courses/lessons/notifications are separate. The generic skool_request is the only outlier but serves a clearly different purpose as a catch-all.
All tools follow the skool_<resource>_<action> pattern consistently, e.g., skool_members_list, skool_posts_create, skool_courses_list. Even the generic request tool fits the prefix convention. No mixed casing or verb style deviations.
14 tools is well within the ideal 3-15 range for a platform-specific server. The count covers the major areas (community, members, posts, courses, lessons, notifications) without being bloated or sparse.
The surface covers core read and some write operations, but there are notable gaps: no post update/delete, no member removal, no course creation/management, and lesson content is not fetched. The generic skool_request can fill some gaps but is not a substitute for dedicated tools.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted MCP server for live public-data APIs and Skills for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceComprehensive Discord server management through MCP, enabling channel, role, permission, message, moderation, and automation tasks via natural language.4-
- AlicenseBqualityBmaintenanceMCP server for managing Coolify instances, enabling control of applications, databases, services, servers, and more via natural language.13664 npmMIT
- FlicenseAqualityDmaintenanceMCP server for Skool.com communities. Enables listing/approving members, posting, commenting, and managing courses.14-
- AlicenseNot gradedqualityCmaintenanceMCP server to read and operate your Skool community (calendar, feed, posts, members) and publish posts/comments with confirmation, using your own authenticated session.1MIT