🎓 Khan Academy MCP 服務器
一個開源 Model Context Protocol(MCP)服務器,讓 AI 助手能夠搜索、瀏覽和閱讀 Khan Academy 的教育內容。無需 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 — 用於內容元數據和搜索的安全白名單查詢(safelisted queries)
- YouTube 轉寫 API — 獲取視頻字幕/說明文字
- 頁面抓取 — 作為後備方案,從 Khan Academy 網頁提取結構化數據
- 靜態目錄 — 為可靠的
list_subjects 硬編碼頂級學科
所有訪問均為只讀,並帶有速率限制(請求間隔 500ms)和內存緩存,以尊重 Khan Academy 的服務器。
⚠️ 限制
- 無身份驗證 — 無法訪問用戶特定數據(進度、推薦)
- Khan Academy 的內部 API 可能會在無通知的情況下變更 — 靜態後備方案可確保基本功能
- 文字稿可用性取決於 YouTube 是否提供字幕
- 已進行速率限制,以避免使 Khan Academy 的服務器過載
📄 許可證
MIT