🎓 Khan Academy MCPサーバー
AIアシスタントがKhan Academyの教育コンテンツを検索・閲覧・読解できるようにするオープンソースのModel Context Protocol(MCP)サーバーです。APIキーは不要です。
🚀 クイックスタート
npx khanmcp
またはグローバルにインストール:
npm install -g khanmcp
khanacademy-mcp
⚙️ Claude Desktopの設定
Claude Desktopの設定ファイル(macOSでは ~/Library/Application Support/Claude/claude_desktop_config.json)に以下を追加してください:
{
"mcpServers": {
"khanacademy": {
"command": "npx",
"args": ["-y", "khanmcp"]
}
}
}
🛠️ 利用可能なツール
| ツール |
説明 |
search |
Khan Academyで動画、記事、演習問題、コースを検索 |
list_subjects |
すべてのトップレベル科目と人気コースを一覧表示 |
get_topic_tree |
slugで科目/トピックの階層を閲覧(深さを指定可能) |
get_content |
特定のコンテンツ項目(動画、記事、演習)の詳細を取得 |
get_course |
ユニット、レッスン、コンテンツ項目を含むコース全体の構造を取得 |
get_transcript |
動画のトランスクリプトを取得(タイムスタンプ付きまたは全文) |
get_article |
Khan Academyの記事の全文を読む |
get_lesson |
特定のレッスン内のすべてのコンテンツ項目を取得 |
embed_video |
サムネイル、メタデータ、チャプター、任意のトランスクリプト付きで動画を埋め込む |
get_exercise |
関連する学習コンテンツ(動画、記事)と練習用URLを含む演習の詳細を取得 |
get_quiz |
準備資料付きで、コースのすべてのクイズ、単元テスト、コースチャレンジを一覧表示 |
study_guide |
任意のトピックの構造化された学習プランを作成 |
📖 ツールの詳細
search
query: string — 検索クエリ(例:"photosynthesis"、"quadratic formula")
limit?: number — 最大結果数(1〜30、デフォルト:10)
list_subjects
パラメータなし。すべてのトップレベル科目と人気コースを返します。
get_topic_tree
slug: string — トピックのslug(例:"math"、"science/biology")
depth?: number — 取得する階層の深さ(0〜3、デフォルト:1)
get_content
slug: string — コンテンツのslugまたは完全なURL
get_course
slug: string — コースのslugまたはURL(例:"math/algebra")
get_transcript
slug: string — 動画のslug、KA URL、YouTube URL、またはYouTube ID
language?: string — 言語コード(デフォルト:"en")
format?: string — "full"、"timestamped"、"both" のいずれか(デフォルト:"full")
get_article
slug: string — 記事のslugまたは完全なURL(記事のパスには"/a/"が含まれます)
get_lesson
slug: string — レッスンのslugまたは完全なURL
embed_video
slug: string — 動画のslug、KA URL、YouTube URL、またはYouTube ID
include_transcript?: bool — 全文トランスクリプトを含めるか(デフォルト:false)
language?: string — トランスクリプトの言語コード(デフォルト:"en")
get_exercise
slug: string — 演習のslugまたは完全なURL(演習のパスには"/e/"が含まれます)
get_quiz
slug: string — コースのslugまたはURL(例:"math/algebra")
kind?: string — "all"、"quiz"、"unit-test"、"course-challenge" のいずれか(デフォルト:"all")
study_guide
topic: string — 学習するトピックまたは概念(例:"quadratic equations")
depth?: string — "quick"、"standard"、"comprehensive" のいずれか(デフォルト:"standard")
🔄 ワークフロー
トピックの探索:
list_subjects → get_topic_tree → get_course → get_lesson → get_content / get_transcript
クイック検索:
search → get_content または get_article → get_transcript(動画の場合)
学習セッション:
search または get_topic_tree → 復習用に study_guide、その後、深掘り用に get_article / get_transcript
コースの概要:
get_course → ユニット/レッスンを選択 → get_lesson → get_content
テスト対策:
get_quiz → 対象のレッスンを復習 → 練習用に get_exercise → 苦手分野の学習に get_transcript / get_article
👨💻 開発
git clone https://github.com/aicoder2009/khanacademyMCP.git
cd khanacademyMCP
npm install
npm run build
テスト実行:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
🔧 仕組み(技術詳細)
Khan Academyは2020年に公開APIを廃止しました。このMCPサーバーは以下を使用しています:
- Khan Academyの内部GraphQL API — コンテンツのメタデータと検索のためのセーフリスト化されたクエリ
- YouTubeトランスクリプトAPI — 動画のキャプション/字幕を取得
- ページスクレイピング — フォールバックとしてKhan Academyのウェブページから構造化データを抽出
- 静的カタログ — 信頼性の高い
list_subjects のためのハードコードされたトップレベル科目
すべてのアクセスは読み取り専用で、Khan Academyのサーバーに配慮するため、レート制限(リクエスト間500ms)とインメモリキャッシュを使用しています。
⚠️ 制限事項
- 認証なし — ユーザー固有のデータ(進捗、レコメンデーション)にはアクセスできません
- Khan Academyの内部APIは予告なく変更される可能性があります — 静的なフォールバックが基本機能を保証します
- トランスクリプトの可用性は、YouTubeのキャプションが存在するかどうかに依存します
- Khan Academyのサーバーに過負荷をかけないようレート制限されています
📄 ライセンス
MIT