Skool by Cotlet について
Skool by Cotletは、Skoolコミュニティを管理する技術者向けのセルフホスト型Python APIおよびMCPサーバーです。ログイン済みのChromeセッションを利用し、RESTとPythonのインターフェースも提供します。
主な機能
- 01メンバー、投稿、コース、イベント、チャットの管理
- 0269種類のSkoolツール
- 03ChromeセッションCookieで接続
- 04MCP、REST API、Pythonに対応
- 05stdioまたはHTTPで実行
活用シーン
- 01参加申請の確認と承認
- 02メンバーまたは投稿データのエクスポート
- 03投稿の公開とダイレクトメッセージの送信
- 04コミュニティのメンバー数と収益の確認
MCP 対応
stdioまたはストリーミング可能なHTTPを通じて、Skoolコミュニティ操作用ツールをMCPクライアントに公開します。読み取り専用と書き込み操作のヒントがあり、クライアント側の実行確認に利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://cotlet.dev/mcp/v1/skool/connectclaude mcp add --transport http dev-cotlet-skool https://cotlet.dev/mcp/v1/skool/connect{"mcpServers":{"dev-cotlet-skool":{"type":"http","url":"https://cotlet.dev/mcp/v1/skool/connect"}}}Cursor で開く{"servers":{"dev-cotlet-skool":{"type":"http","url":"https://cotlet.dev/mcp/v1/skool/connect"}}}VS Code で開く{"mcpServers":{"dev-cotlet-skool":{"type":"http","url":"https://cotlet.dev/mcp/v1/skool/connect"}}}{"mcpServers":{"dev-cotlet-skool":{"serverUrl":"https://cotlet.dev/mcp/v1/skool/connect"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://cotlet.dev/mcp/v1/skool/connecthttps://cotlet.dev/mcp/v1/skool認証が必要ツール
詳細
Skool API と MCP サーバー(セルフホスト可能)
Python で自分のパソコン上で実行する Skool API と Skool MCP サーバーです。自分の Google Chrome のセッションを使用します。Cotlet の本番環境で運用している Skool ツール全 69 種を利用できます。メンバー、メンバーシップ申請、投稿、コメント、アンケート、Classroom、Calendar、グループ設定、Skool Chat、統計情報に対応しています。
Skool には公開 API も公式 MCP サーバーもありません。このリポジトリでは、次の両方を利用できます。
- Claude Code、Claude Desktop、Cursor、Codex、その他すべての MCP クライアント向けの MCP サーバー。stdio または HTTP 経由で利用できます。セットアップ
http://127.0.0.1:8787/api/v1/skoolで利用できる REST API。OpenAPI ドキュメントは/docsにあります。セットアップ- Python:
call("list_members", group="yourgroup")と、すぐに使える 16 個のスクリプトをexamples/に用意しています。
自分で実行したい技術者向けであり、非商用利用に限ります(ライセンス)。サーバーで 24 時間 365 日稼働させたい場合、Skool のサイト変更後も動作する状態を保ちたい場合、チームやビジネスで利用したい場合は、cotlet.dev のホステッド版をご利用ください。
git clone https://github.com/cotletdev/skool-api-mcp-server.git && cd skool-api-mcp-server
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
skool-mcp connect # reads your Skool session from Chrome
skool-mcp call list_groups
claude mcp add skool -- "$PWD/.venv/bin/skool-mcp" mcp
目次
- 仕組み
- 必要条件
- インストール
- Chrome を接続する
- MCP サーバー
- REST API
- Python とサンプルスクリプト
- 全 69 種のツール
- 設定
- セキュリティと Skool アカウント
- エラー
- セルフホスト版とホステッド版
- FAQ
- ライセンス
仕組み
AI agent (MCP) / script (REST, Python) ──▶ skool-mcp on your computer ──your Skool cookies──▶ skool.com
▲
skool-mcp connect ───────┘ reads them once from your Chrome (DevTools Protocol)
- いつもどおり、自分の Chrome で Skool にサインインします。
skool-mcp connectを実行すると、Chrome DevTools Protocol 経由で Chrome に接続し、skool.com の Cookie を読み取って~/.config/skool-api-mcp/session.jsonに保存します。このファイルを読み取れるのは自分のユーザーだけです。パスワードを見ることも、保存することもありません。- 各ツール呼び出しは、curl_cffi を使って Chrome の TLS フィンガープリントを再現しながら、Cookie とともに Skool 独自のウェブアプリのエンドポイント(
api2.skool.comとwww.skool.comのページデータ)にリクエストを送ります。ヘッドレスブラウザーは実行されません。
Skool のセッション Cookie は約 1 年間有効です。Skool からサインアウトされた場合、リモートデバッグを有効にした Chrome が開いていれば、サーバーは Chrome から Cookie を再度読み取ります。
必要条件
- Python 3.11 以降。
- Skool にサインイン済みの Google Chrome 144 以降。Chrome または Chromium であれば、デバッグポートを使って動作します。
- macOS、Linux、または Windows。
- ツールの利用に必要な Skool のロール:メンバーシップ申請には管理者またはモデレーター、統計情報とグループ設定には管理者が必要です。所属するグループのメンバー、投稿、コース、チャットの閲覧は、どのロールでも行えます。
インストール
git clone https://github.com/cotletdev/skool-api-mcp-server.git
cd skool-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
skool-mcp --version
uv を使う場合:uv venv && uv pip install -e . を実行し、その後 uv run skool-mcp ... を実行します。
AI エージェント(Claude Code、Codex、Cursor)でセットアップしますか?このフォルダーを開いて、リポジトリのセットアップを依頼してください。AGENTS.md に手順がすべて記載されており、Chrome 上で行う手順だけを案内します。
更新するには、git pull && pip install -e . を実行します。ホステッド版の Skool ツールへの変更はすべて、このリポジトリにも反映しています。
Chrome を接続する
オプション A:普段使いの Chrome(推奨)
-
Chrome で
chrome://inspect/#remote-debuggingを開き、リモートデバッグをオンにします。Chrome はこのコンピューター上のプログラムからの DevTools 接続を受け入れ、接続ごとに確認を求めます。 -
skool.com にサインインしていることを確認します。
-
次を実行します。
skool-mcp connect -
Chrome から接続を許可するか尋ねられます。許可をクリックします。
Saved 15 skool.com cookies to /Users/you/.config/skool-api-mcp/session.json
Signed in to Skool as Ana Lopez (ana-lopez-4127)
その後、リモートデバッグを再びオフにできます。Skool からサインアウトした後、新しいセッションをサーバーが自動的に検出するようにしたい場合は、オンのままにしてください。
connect は、Chrome の既定のプロファイルフォルダーにある DevToolsActivePort ファイルを探します。Chrome Beta、Canary、またはカスタムのプロファイルフォルダーを使う場合は、--profile-dir "<folder>" を渡してください。
オプション B:デバッグポートを使う Chrome
Chrome は既定のプロファイルではデバッグポートを開かないため、別のプロファイルを起動し、そこで一度 Skool にサインインしてから接続します。
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-skool"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-skool"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-skool"
skool-mcp connect --cdp http://127.0.0.1:9222
--cdp には ws:// の DevTools URL も指定できます。たとえば、SSH トンネル経由で接続する別のマシン上の Chrome の URL を指定できます。
オプション C:Cookie を手動で貼り付ける
Chrome を使えないサーバーの場合:Chrome で skool.com の DevTools を開き、Application > Cookies > https://www.skool.com から auth_token の値をコピーして、次を実行します。
skool-mcp connect --token # paste it, input is hidden
# or, without a session file:
export SKOOL_AUTH_TOKEN=...
貼り付けたトークンは自動更新されません。Skool からサインアウトしたら、新しいトークンを貼り付けてください。
セッションはいつでも次の方法で確認できます。
skool-mcp status
MCP サーバー
MCP サーバーには、すべてのツールが入力スキーマ、エージェント向けの説明、ヒントとともに一覧表示されます。読み取りツールには読み取り専用の印が付き、投稿、メッセージ送信、削除を行うツールには、実行前にクライアントが確認を求めるよう印が付きます。
Claude Code
claude mcp add skool -- /path/to/skool-api-mcp-server/.venv/bin/skool-mcp mcp
# read only:
claude mcp add skool -- /path/to/skool-api-mcp-server/.venv/bin/skool-mcp mcp --read-only
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"skool": {
"command": "/path/to/skool-api-mcp-server/.venv/bin/skool-mcp",
"args": ["mcp"]
}
}
}
Cursor
~/.cursor/mcp.json。Claude Desktop と同じブロックです。すぐに使えるコピーは mcp.json にあります。
Codex
~/.codex/config.toml:
[mcp_servers.skool]
command = "/path/to/skool-api-mcp-server/.venv/bin/skool-mcp"
args = ["mcp"]
HTTP 経由
skool-mcp serve は、URL を指定するクライアント向けに、ストリーミング可能な HTTP 経由でも http://127.0.0.1:8787/mcp で MCP を提供します。
skool-mcp serve
claude mcp add --transport http skool http://127.0.0.1:8787/mcp
次のようなことをエージェントに依頼できます。
保留中のメンバーシップ申請を表示して、回答にビジネスについて言及しているものを承認してください。
過去 7 日間の投稿のうち、まだコメントがないものはどれですか?それぞれに返信文を作成してください。
木曜日の午後 6 時(CET)に Zoom リンク付きのカレンダーイベントを作成し、そのイベントについてのお知らせをピン留めしてください。
過去 30 日間の新規メンバー数、解約数、MRR を教えてください。
REST API
skool-mcp serve # http://127.0.0.1:8787, MCP at /mcp, docs at /docs
各ツールには /api/v1/skool 以下に個別のルートがあり、cotlet.dev のホステッド API と同じパスを使用するため、一方を対象に書かれたコードはもう一方でも動作します。パスの各部分とクエリ文字列が引数になり、JSON ボディで残りの引数を指定します。
curl 'http://127.0.0.1:8787/api/v1/skool/groups'
curl 'http://127.0.0.1:8787/api/v1/skool/groups/yourgroup/members?limit=30&role=admin'
curl -X POST http://127.0.0.1:8787/api/v1/skool/groups/yourgroup/posts \
-H 'Content-Type: application/json' \
-d '{"title": "Live call tonight", "body": "8pm CET, link in the Calendar.", "category": "Announcements"}'
名前でツールを指定し、ボディを引数として渡す方法:
curl -X POST http://127.0.0.1:8787/api/v1/skool/tools/list_members -d '{"group": "yourgroup"}'
GET /api/v1/skool/tools:ルート、入力スキーマ、回答例を含むすべてのツールを表示します。GET /docs:対話型の OpenAPI ドキュメントです。GET /openapi.jsonは、n8n、Postman、または生成クライアント向けのスキーマです。- 回答は JSON です。リストには
next_cursorが含まれます。次のページを取得するには、それをcursorとして渡してください。
サーバーは 127.0.0.1 のみでリッスンします。別のデバイスからアクセスするにはトークンを設定します。その場合、すべてのリクエストに Authorization: Bearer <token> が必要です。
SKOOL_MCP_TOKEN=$(openssl rand -hex 24) skool-mcp serve --host 0.0.0.0
Python とサンプルスクリプト
Python から直接実行でき、サーバーは不要です。
from skool_api_mcp import call
from skool_api_mcp.scripting import paginate, write_rows
groups = call("list_groups")["groups"]
members = list(paginate("list_members", {"group": "yourgroup", "joined_since": "2026-10-01"}, "members"))
write_rows(members, "members.csv")
call("create_post", group="yourgroup", category="Announcements", title="Week 12", body="Ship one landing page.")
シェルからは、単一のツールを実行できます:skool-mcp call list_posts group=yourgroup limit=10。JSON オブジェクトを指定することもできます。
すぐに使えるスクリプトは examples/ にあります。各スクリプトは JSON を出力し、用途に応じて --out file.csv または --out file.json を指定できます。また、--help に対応しています。
| スクリプト | 内容 |
|---|---|
list_groups.py | 自分のグループと、自分の役割、メンバー数、料金を表示します。 |
export_members.py | メンバーを CSV または JSON に出力します。名前、役割、レベル、ポイント、参加日、プロフィール URL が含まれます。--role、--since を指定できます。 |
list_membership_requests.py | 申請者の回答とともに、保留中の申請を表示します。 |
approve_membership_requests.py | 保留中の申請すべて、または回答に --match のキーワードが含まれる申請を承認します。まず --dry-run で確認してください。 |
decline_membership_request.py | 1 件の申請を拒否します。 |
welcome_new_members.py | 過去 N 日間に参加した全員に、「スタートはこちら」コースへのリンクを添えたウェルカム DM を送信します。 |
export_posts.py | フィードの投稿を出力します。タイトル、投稿者、カテゴリー、いいね数、コメント数、日付が含まれます。--category、--since を指定できます。 |
get_post.py | 投稿 1 件の本文とコメントツリー全体を取得します。 |
unanswered_posts.py | 過去 N 日間に投稿され、まだコメントがない投稿を表示します。 |
create_post.py | --body または Markdown ファイルから投稿を公開します。--pin を指定するとピン留めします。 |
comment_on_post.py | 投稿にコメントするか、コメントへの返信を投稿します。 |
pin_post.py | フィードまたは Classroom ページの投稿をピン留め、またはピン留め解除します。 |
list_courses.py | Classroom のコースと、モジュール、ロック解除ルール、URL を表示します。 |
unread_messages.py | Skool Chat の未読会話をスレッド全体とともに表示します。 |
send_message.py | メンバー 1 人に DM を送信します。 |
group_stats.py | 過去 7 日、30 日、または 90 日間の総メンバー数、新規参加者数、離脱者数、MRR を表示します。 |
python examples/export_members.py --group yourgroup --out members.csv
python examples/approve_membership_requests.py --group yourgroup --match business --dry-run
スケジュール実行には、コンピューターの電源が入っている間であれば、ローカルコンピューターの cron を使用できます:0 8 * * * cd ~/skool-api-mcp-server && .venv/bin/python examples/group_stats.py --group yourgroup。
69 個のツールすべて
group はコミュニティの URL 名です。skool.com/yourgroup の場合は yourgroup です。skool-mcp tools を実行するとこの一覧が表示され、skool-mcp tools --json を実行すると入力スキーマも表示されます。
グループと検索
| ツール | アクセス | REST ルート | 内容 |
|---|---|---|---|
list_groups | read | GET /groups | アカウントの Skool グループと、自分の役割(または申請中)、メンバー数、料金を表示します。 |
get_group | read | GET /groups/{group} | グループ名、概要、プライバシー設定、料金、人数、オーナー、メンバーシップに関する質問を表示します。 |
get_group_stats | read | GET /groups/{group}/stats | 指定期間の総メンバー数、新規参加者数、離脱者数、月間経常収益を表示します。管理者のみ利用できます。 |
discover_groups | read | GET /groups/discover | Skool の公開コミュニティディレクトリを検索し、メンバー数、料金、評価を表示します。 |
search_group | read | GET /groups/{group}/search | グループの投稿、メンバー、またはコースを、検索ボックスと同じように検索します。 |
投稿
| ツール | アクセス | REST ルート | 内容 |
|---|---|---|---|
list_posts | 読み取り | GET /groups/{group}/posts | グループのフィード内の投稿を、固定表示されたもの、新しいものの順に一覧表示します。投稿者、カテゴリ、「いいね!」の数、コメント数も表示します。 |
get_post | 読み取り | GET /groups/{group}/posts/{post_id} | 1件の投稿を全文とコメント付きで取得します。返信はそれぞれのコメントの下にネストして表示されます。 |
create_post | 書き込み | POST /groups/{group}/posts | 自分の名前で、コミュニティフィードのカテゴリを指定して投稿します。 |
update_post | 書き込み | PATCH /groups/{group}/posts/{post_id} | 自分が作成した投稿のタイトル、本文、カテゴリを変更します。管理者は任意の投稿を変更できます。 |
delete_post | 書き込み | DELETE /groups/{group}/posts/{post_id} | 自分の投稿やコメントを完全に削除します。管理者は他の人の投稿やコメントも削除できます。 |
コメント、「いいね!」、アンケート、モデレーション
| ツール | アクセス | REST ルート | 内容 |
|---|---|---|---|
comment_on_post | 書き込み | POST /groups/{group}/posts/{post_id}/comments | 自分の名前で投稿にコメントしたり、コメントに返信したりします。 |
like_post | 書き込み | PUT /groups/{group}/posts/{post_id}/like | 投稿やコメントに「いいね!」したり、取り消したりします。 |
list_post_likes | 読み取り | GET /groups/{group}/posts/{post_id}/likes | 投稿やコメントに「いいね!」した人を一覧表示します。 |
follow_post | 書き込み | PUT /groups/{group}/posts/{post_id}/follow | 投稿への新しいコメントの通知を受け取ったり、通知を停止したりします。 |
pin_post | 書き込み | PUT /groups/{group}/posts/{post_id}/pin | 投稿をフィードの先頭(最大3件)またはClassroomページ(最大12件)に固定表示します。管理者のみ。 |
pin_comment | 書き込み | PUT /groups/{group}/posts/{post_id}/comments/{comment_id}/pin | コメントを投稿のコメント欄の先頭に固定表示したり、固定表示を解除したりします。 |
set_post_comments | 書き込み | PUT /groups/{group}/posts/{post_id}/commenting | 投稿へのコメントを無効または再度有効にします。 |
vote_on_poll | 書き込み | PUT /groups/{group}/posts/{post_id}/poll/vote | 投稿のアンケートに投票したり、投票先を変更したり、投票を取り消したりします。 |
get_poll_results | 読み取り | GET /groups/{group}/posts/{post_id}/poll | 投稿のアンケートの回答と投票数を取得します。誰がどの回答に投票したかを含めることもできます。 |
list_reported_posts | 読み取り | GET /groups/{group}/posts/reported | メンバーが管理者に報告し、確認待ちとなっている投稿を一覧表示します。管理者とモデレーターのみ。 |
メンバー
| ツール | アクセス | REST ルート | 内容 |
|---|---|---|---|
list_members | 読み取り | GET /groups/{group}/members | グループのメンバーを、役割、レベル、ポイント、参加日とともに新しい順で一覧表示します。禁止されたメンバーや離脱したメンバーも含まれます。 |
search_members | 読み取り | GET /groups/{group}/members/search | @メンション欄と同様に、名前でグループのメンバーを検索します。 |
get_member | 読み取り | GET /groups/{group}/members/{member_id} | グループ内の1人のメンバーのプロフィールを取得します。名前、自己紹介、役割、レベル、ポイント、最終オンライン日時を表示します。 |
get_leaderboard | 読み取り | GET /groups/{group}/leaderboard | 過去7日間、30日間、または全期間のポイントに基づく、グループの上位10人のメンバーと自分の順位を取得します。 |
invite_members | 書き込み | POST /groups/{group}/invitations | グループに直接参加できる招待メールを送信します。管理者のみ。 |
remove_member | 書き込み | DELETE /groups/{group}/memberships/{membership_id} | グループからメンバーを削除したり、禁止を解除したりします。管理者のみ。 |
ban_member | 書き込み | POST /groups/{group}/memberships/{membership_id}/ban | メンバーをグループから禁止します。最近の投稿を削除することもできます。管理者のみ。 |
set_member_role | 書き込み | PUT /groups/{group}/memberships/{membership_id}/role | メンバーを管理者またはモデレーターにしたり、メンバーに戻したりします。管理者のみ。 |
メンバーシップ申請
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
list_membership_requests | 読み取り | GET /groups/{group}/membership-requests | 参加申請のうち保留中のものと、各申請者がメンバーシップに関する質問に回答した内容を一覧表示します。管理者とモデレーターのみ利用できます。 |
approve_membership_request | 書き込み | POST /groups/{group}/membership-requests/{request_id}/approve | 申請者をグループに参加させます。AutoDM が設定されている場合は、通常どおり送信されます。 |
decline_membership_request | 書き込み | POST /groups/{group}/membership-requests/{request_id}/decline | 申請者の参加申請を却下します。 |
Classroom
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
list_courses | 読み取り | GET /groups/{group}/courses | グループの Classroom にあるコースを一覧表示します。自分が利用できるものとロックされているものの両方が含まれ、利用可能なコースについてはモジュールも表示されます。 |
get_course | 読み取り | GET /groups/{group}/courses/{course_id} | Classroom の順序に沿って、レッスンとフォルダーを含む単一のコースを取得します。レッスンの取得には get_lesson を使用します。 |
create_course | 書き込み | POST /groups/{group}/courses | グループの Classroom にコースを下書きまたは公開済みとして追加します。管理者のみ利用できます。 |
set_course_published | 書き込み | PUT /groups/{group}/courses/{course_id}/published | 下書きのコースをメンバーに公開するか、下書きに戻します。管理者のみ利用できます。 |
get_lesson | 読み取り | GET /groups/{group}/courses/{course_id}/lessons/{lesson_id} | 単一のレッスンのテキストと動画リンクを取得します。 |
create_lesson | 書き込み | POST /groups/{group}/courses/{course_id}/lessons | コースの最後に、テキストと動画リンクを含むレッスンを追加します。管理者のみ利用できます。 |
update_lesson | 書き込み | PATCH /groups/{group}/lessons/{lesson_id} | レッスンのタイトル、テキスト、動画リンクを変更します。管理者のみ利用できます。 |
mark_lesson_complete | 書き込み | PUT /groups/{group}/lessons/{lesson_id}/completion | 自分のコースの進捗でレッスンを完了としてマークするか、完了マークを取り消します。 |
カレンダー
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
list_events | 読み取り | GET /groups/{group}/events | グループのカレンダーにある1か月分のイベントを、タイトル、日時、場所、参加できる人とともに一覧表示します。 |
get_event | 読み取り | GET /groups/{group}/events/{event_id} | カレンダーの単一イベントについて、詳細な説明、場所、アクセス情報を取得します。 |
create_event | 書き込み | POST /groups/{group}/events | グループのカレンダーにイベントを追加します。管理者のみ利用できます。 |
update_event | 書き込み | PATCH /groups/{group}/events/{event_id} | カレンダーイベントのタイトル、日時、場所、アクセス情報を変更します。管理者のみ利用できます。 |
delete_event | 書き込み | DELETE /groups/{group}/events/{event_id} | カレンダーイベントを削除します。管理者のみ利用できます。 |
グループ設定(管理者)
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
list_categories | 読み取り | GET /groups/{group}/categories | グループのフィードカテゴリです。名前、投稿できるユーザー、並び順、投稿数が含まれます。 |
create_category | 書き込み | POST /groups/{group}/categories | グループのフィードにカテゴリを追加します。管理者のみ。 |
update_category | 書き込み | PATCH /groups/{group}/categories/{category_id} | カテゴリ名、投稿できるユーザー、または並び順を変更します。管理者のみ。 |
delete_category | 書き込み | DELETE /groups/{group}/categories/{category_id} | フィードカテゴリを削除し、その投稿を別のカテゴリに移動します。管理者のみ。 |
list_group_rules | 読み取り | GET /groups/{group}/rules | グループに表示される順番で番号が付いた、グループのルールです。 |
add_group_rule | 書き込み | POST /groups/{group}/rules | グループのルールの末尾にルールを追加します。管理者のみ。 |
update_group_rule | 書き込み | PATCH /groups/{group}/rules/{number} | グループルールのタイトルまたは本文を変更します。管理者のみ。 |
delete_group_rule | 書き込み | DELETE /groups/{group}/rules/{number} | グループルールを削除します。管理者のみ。 |
list_group_links | 読み取り | GET /groups/{group}/links | グループに表示される順番で番号が付いた、グループのサイドバーのリンクです。 |
add_group_link | 書き込み | POST /groups/{group}/links | グループのサイドバーにリンクを追加します。管理者のみ。 |
update_group_link | 書き込み | PATCH /groups/{group}/links/{number} | サイドバーのリンクのテキストまたはアドレスを変更します。管理者のみ。 |
delete_group_link | 書き込み | DELETE /groups/{group}/links/{number} | グループのサイドバーからリンクを削除します。管理者のみ。 |
add_membership_question | 書き込み | POST /groups/{group}/membership-questions | グループへの参加を申請する際に回答する質問を追加します。管理者のみ。 |
update_membership_question | 書き込み | PATCH /groups/{group}/membership-questions/{number} | メンバーシップに関する質問を変更します。管理者のみ。 |
delete_membership_question | 書き込み | DELETE /groups/{group}/membership-questions/{number} | メンバーシップに関する質問を削除します。管理者のみ。 |
list_levels | 読み取り | GET /groups/{group}/levels | グループの9つのレベルと、それぞれに設定されたカスタムタイトル、および各レベルに到達したメンバー数です。 |
rename_level | 書き込み | PATCH /groups/{group}/levels/{level} | グループの9つのレベルのいずれかに、独自のタイトルを付けます。管理者のみ。 |
update_group_about | 書き込み | PUT /groups/{group}/about | グループの「概要」ページのテキストを置き換えます。管理者のみ。 |
get_auto_dm | 読み取り | GET /groups/{group}/auto-dm | Skoolが新しいメンバー全員に送信するウェルカムメッセージと、その有効・無効の状態です。管理者のみ。 |
set_auto_dm | 書き込み | PATCH /groups/{group}/auto-dm | 新しいメンバーに送るウェルカムメッセージを変更するか、有効または無効にします。管理者のみ。 |
チャットと通知
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
list_conversations | 読み取り | GET /conversations | Skool Chatの受信トレイです。相手、未読数、最新メッセージのプレビューが表示されます。 |
get_conversation | 読み取り | GET /conversations/{conversation_id} | Skool Chatの1つの会話の最新メッセージを、古い順に取得します。 |
send_message | 書き込み | POST /members/{member_id}/messages | Skool Chatでメンバーにダイレクトメッセージを送信します。必要に応じて会話を開始します。 |
list_notifications | 読み取り | GET /notifications | あなたのSkool通知です。新しい投稿、コメント、メンション、いいね、承認が新しい順に表示されます。 |
mark_notifications_read | 書き込み | POST /notifications/read | すべての通知を、全体または1つのグループで既読にします。 |
意図的に実装していない機能:Skoolへのサインイン、メールアドレス、パスワード、名前、プロフィール設定、および金銭が関わるすべての機能(プラン、支払い、払い出し、請求)。すべてのリクエストはガードを通過し、これらのSkoolパスへのアクセスは拒否されます。
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
SKOOL_MCP_HOME | ~/.config/skool-api-mcp | session.json の保存先フォルダーです。 |
SKOOL_AUTH_TOKEN | skool-mcp connect の代わりに使用する、Skool の auth_token Cookie です。 | |
SKOOL_PROXY | Skool へのすべてのリクエストに使用するプロキシです。例:http://user:pass@host:port | |
SKOOL_MCP_READ_ONLY | 1 にすると、Skool を変更するすべてのツールが非表示になり、実行できなくなります(--read-only と同じです)。 | |
SKOOL_MCP_TOKEN | serve に必要なベアラートークンです。127.0.0.1 以外で待ち受ける場合に必要です。 | |
SKOOL_MCP_HOST, SKOOL_MCP_PORT | 127.0.0.1, 8787 | serve のアドレスです。 |
セキュリティと Skool アカウント
- パスワードがこのコードに渡されることはありません。 読み取られるのは Cookie のみで、skool.com の Cookie に限られます。
- セッションファイルはユーザー自身のものです。
session.jsonはモード 0600 で作成されます。このファイルを持つ人は Skool でユーザーになりすまして操作できるため、git や共有フォルダーに保存しないでください。 - デフォルトではローカルで動作します。
serveは127.0.0.1にバインドされ、SKOOL_MCP_TOKENが設定されていない場合は別のアドレスを拒否します。 - skool.com のみを対象とします。 skool.com 外へのリクエストとリダイレクトは拒否されます。
- 読み取り専用モード。
--read-onlyまたはSKOOL_MCP_READ_ONLY=1を設定すると、28 個の読み取りツールのみが公開されます。 - 操作は実際の人々に影響します。 投稿、コメント、DM、招待、承認はユーザーの名前で送信されます。MCP クライアントは実行前に確認しますが、スクリプトは確認しないため、まずテストグループで試してください。
- スパムを送信しないでください。 大量の DM や招待は Skool のルール違反となり、アカウントが制限される可能性があります。アカウント上で実行する操作については、ユーザー自身が責任を負います。
エラー
REST API は {"error": "<code>", "message": "..."} を返します。MCP サーバーは同じコードとメッセージをツールエラーとして返します。
| ステータス | コード | 対処方法 |
|---|---|---|
| 401 | auth_required, auth_expired | セッションがないか、Skool からサインアウトされています。Chrome で Skool にサインインし、skool-mcp connect を実行してください。 |
| 403 | app_permission_denied | Skool でのユーザーのロールではこの操作を実行できません。例:メンバーとして統計情報を表示する場合。 |
| 403 | scope_denied | サーバーが読み取り専用で動作しています。 |
| 403 | target_blocked | Skool がリクエストを拒否したか、ボット確認画面が表示されました。Chrome で skool.com を一度開いてから、再試行してください。 |
| 409 | captcha_required | Skool で CAPTCHA が求められています。Chrome で解決してください。 |
| 422 | invalid_input | 引数が不足しているか、正しくありません。メッセージに該当する引数が示されます。 |
| 429 | rate_limited | Skool によってアカウントが制限されています。数分待ってください。 |
| 502 | target_error | Skool がエラーを返したか、サイトが変更されました。最新のツールを取得するには git pull を実行するか、issue を作成してください。 |
セルフホストまたはホステッド
| このリポジトリ | Cotlet、ホステッド | |
|---|---|---|
| ツール | 同じ 69 個 | 同じ 69 個 |
| 実行場所 | コンピューターの電源が入っている間、ユーザーのコンピューター上 | クラウド上、24 時間 365 日 |
| Skool セッション | ユーザーの Chrome、Cookie はローカルファイルに保存 | EU 内のユーザー専用 Cloud Browser、プロファイルは AES-256-GCM で暗号化 |
| Skool のサイトが変更された場合 | 修正後に git pull を一度実行 | ユーザーに代わって修正、すべてのツールを毎日テスト |
| 承認 | MCP クライアントが呼び出しごとに確認 | 投稿、DM、承認はユーザーの OK があるまで保留。ツールごとに切り替え可能 |
| 対応環境 | ユーザーのマシン上の MCP クライアント、ローカルスクリプト | Claude.ai と ChatGPT のコネクター、n8n、Make、Zapier、任意の HTTP クライアント |
| 利用対象 | ユーザー本人、非営利目的での利用 | チーム、企業、代理店 |
| 料金 | 無料 | 2,000 クレジット付きの 7 日間無料トライアル、カード不要。その後は 5,000 クレジットで $29 からの買い切りパック |
ホステッド版では、成功した呼び出しに 20〜30 クレジット(ほとんどのツールでは 25 クレジット)が使用され、失敗した呼び出しは無料です。また、Cloud Browser でエージェント向けのアプリが有効になっている間は、1 日あたり 50 クレジットが使用されます。料金の詳細。
よくある質問
Skool に公式 API はありますか? いいえ。Skool には公開 API も開発者向けドキュメントもありません。唯一の公式な連携機能は Pro プランの Zapier プラグインで、新規有料メンバーと Membership Questions の回答を外部に送信し、メンバーを招待してコースのロックを解除できます。全メンバーの一覧表示、申請の承認、投稿、コメント、DM の送信、統計情報の読み取りはできません。詳細はこちらをご覧ください:cotlet.dev/integrations/skool-api-mcp-server。
Claude、ChatGPT、Cursor 向けの Skool MCP サーバーはありますか?
はい。このサーバーはお使いのマシン上で動作します。Claude Code、Claude Desktop、Cursor、Codex では skool-mcp mcp を使用します。ChatGPT と Claude.ai のコネクターには公開 HTTPS URL が必要です。ホスト型 Skool MCP サーバーを使うと、その URL を利用できます。
これは Skool のスクレイパーですか? スクレイパーに求められる機能(メンバー、投稿、コースを CSV にエクスポートする機能)は備えていますが、ヘッドレスブラウザーで HTML を解析するものではありません。Skool のウェブアプリが呼び出すものと同じ JSON エンドポイントを、お客様のアカウントで呼び出します。
Skool のメンバーを CSV にエクスポートできますか?
はい。python examples/export_members.py --group yourgroup --out members.csv を実行してください。全ページにわたり、ロール、レベル、ポイント、参加日、プロフィール URL とともにすべてのメンバーを取得できます。
自分が所有していないコミュニティのメンバーもエクスポートできますか? お客様のアカウントが参加しているグループに限り、また Skool がお客様のロールに表示する情報に限り、エクスポートできます。
Skool の Pro プランや Zapier は必要ですか? いいえ。一部のメンバーロールなど、Skool の機能には Pro 限定のものがあります。Skool に拒否された場合は、ツールがその旨を通知します。
なぜ Chrome が必要なのですか? パスワードを使わずに Skool のセッションを読み取るためです。Chrome はサインインごとに一度だけ使用し、呼び出しのたびには使用しません。
Skool からサインアウトされた場合はどうなりますか?
呼び出しは auth_expired で失敗します。Chrome のリモートデバッグが有効な場合、次の呼び出し時にサーバーが新しい Cookie を読み取ります(Chrome から確認を求められたら「許可」をクリックしてください)。それ以外の場合は、再度 skool-mcp connect を実行してください。
VPS や Docker で実行できますか?
技術的には、SKOOL_AUTH_TOKEN を使用すれば可能です。その場合、Skool にはデータセンターの IP アドレスからセッションにアクセスしているように見えるため、お客様本人の操作には見えにくくなります。常時稼働させる場合は、ホスト型バージョンを使うと、固定 IP のお客様専用 Cloud Browser にセッションを保持できます。
Skool アカウントが停止されることはありますか? リクエストには Chrome のフィンガープリントが付与され、ユーザーがクリックするのと同じように一件ずつ送信されます。プラットフォームが決して措置を取らないと保証できる人はいません。通常の利用範囲を守り、一括 DM の送信は避けてください。
職場やクライアント向けに利用できますか? いいえ。ライセンスで許可されているのは非商用利用のみです。チーム、企業、クライアントの業務で利用する場合は、Cotletをご利用いただくか、[email protected]までご連絡ください。
オープンソースですか? ソースコードは公開されていますが、ライセンスはオープンソースライセンスではありません。非商用利用のみで、ビジネスでの利用は禁止されています。
ツールが動かなくなった場合や、別のツールが必要な場合はどうすればよいですか? ツール名とエラーメッセージを添えて、issue を作成してください。
ライセンス
PolyForm Noncommercial License 1.0.0。要約:
- 許可されること: 非商用利用。ご自身の Skool アカウントを使った個人的な目的での利用、または慈善団体、学校、公的研究機関、政府機関による利用。コードの変更と、同じライセンスでの共有。
- 許可されないこと: ご自身のビジネスを含むあらゆる商用利用、クライアント業務、販売もしくは提供、または本ソフトウェアを基にしたサービスの提供。
このリポジトリの 1.x までのバージョン(ホスト型 API 用のスクリプト)は、引き続き MIT ライセンスです。
Cotlet(@cotletdev)が保守しています。Skool はその所有者の商標です。このプロジェクトは非公式であり、Skool との提携、承認、後援を受けていません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。