coursera
Enables browsing your Coursera courses, viewing library maps and course outlines, and downloading transcripts and readings as text via MCP tools.
README
coursera-cli
Your own Coursera courses, from the terminal — and from Claude Code, over MCP.
Downloads the transcripts and readings of courses you are enrolled in, through Coursera's internal API. No HTML scraping, no gigabytes of video.
coursera courses --search pricing find the course
coursera map see what you actually studied
coursera transcript <slug> pull the content as text
Install
Requires Bun.
cd klipso_reverse/Cli-propios/coursera-cli
bun install
Session
The CLI needs your account's CAUTH cookie. It looks in three places, in order:
- The
COURSERA_CAUTHenvironment variable - Its own store, under the platform config directory
- The store written by the Python recon repo (
~/.config/coursera_recon/session.json)
If you have none, capture one with capture_session.py from the coursera_recon repo: it
opens a visible Chromium, you log in by hand, and it saves the cookie. Logging in is not
automated — typing credentials from a script is what triggers the CAPTCHA.
coursera session # is it alive, where did it come from, how old is it
coursera doctor # session + routes + paths, all at once
[OK] version: coursera-cli 0.2.0 on win32, bun 1.3.11
[OK] session-present: found via legacy, 108.2 h old
[OK] session-alive: 215 courses visible
[OK] endpoints: 10 routes declared, domains.v1 alive
[OK] paths: state C:\Users\you\AppData\Local\coursera-cli
5/5 checks passed
Commands
| Command | What it does |
|---|---|
coursera session |
Session state: source, age, alive or dead |
coursera doctor |
Diagnoses session, live routes and writable paths |
coursera courses [filters] |
Your courses |
coursera map [--detail] |
Branches, levels, institutions, unfinished specializations |
coursera course <slug> |
Syllabus, institution, instructors, declared level |
coursera transcript <slug> |
Downloads transcripts and readings |
Filters
Filters compose with AND, and multi-word values need no quotes:
coursera courses --search machine learning
coursera courses --level intermediate --domain data-science
coursera courses --lang es --hours 5 # short courses in Spanish
coursera courses --university duke
| Flag | Example |
|---|---|
--search <text> |
name or slug |
--level |
beginner, intermediate, advanced |
--domain <id> |
branch or sub-branch, e.g. data-science, machine-learning |
--lang <code> |
primary language, e.g. es |
--hours <n> |
at most n estimated hours |
--university <name> |
e.g. duke |
Global flags
| Flag | Default | Purpose |
|---|---|---|
--json |
off | Structured output. Implied when stdout is piped |
--out <dir> |
platform data dir | Where to write |
--limit <n> |
all | Stop after n items |
--lang es,en |
es,es-LA,en |
Subtitle preference order |
--quiet |
off | No progress output |
Library map
coursera map cross-references your library against Coursera's own taxonomy:
215 courses in your library
levels: beginner 99 intermediate 66 advanced 7 undeclared 43
business 158 ████████████████████████ 1366 h
data-science 90 ██████████████ 735 h
computer-science 35 █████ 255 h
SPECIALIZATIONS (15)
✓ AI Product Management 3/3 complete
○ Digital Product Management 3/5 2 missing
Two caveats it prints itself, because both are real: a course filed under two branches counts in both, and hours come from Coursera's free-text workload field, which 78 of 215 courses do not state readably.
MCP for Claude Code
Register the server with the absolute path to the Bun binary — the process that
launches MCP servers does not inherit your PATH, so "command": "bun" fails with
"Failed to connect":
{
"mcpServers": {
"coursera": {
"command": "C:/Users/you/.bun/bin/bun.exe",
"args": ["C:/Users/you/klipso_reverse/Cli-propios/coursera-cli/src/mcp/index.ts"]
}
}
}
| Tool | Returns |
|---|---|
session_status |
Whether the session is alive, where it came from, how many courses it sees |
list_courses |
Your courses, with the same filters as the CLI |
get_library_map |
Branches, levels, institutions, specialization progress |
get_course_outline |
The course tree plus institution and instructors |
fetch_transcripts |
Downloads a course, returns the index of what landed |
read_transcript |
The text of one item |
fetch_transcripts returns paths, not text: a course is ~130 KB (≈35k tokens) and sending
it whole would blow up the conversation. To read, use read_transcript.
What it downloads
Text, by default: a .txt transcript per video and a .reading.md per reading. No video —
a course is gigabytes as MP4 against ~130 KB as text, and for studying or summarizing the
text carries the same signal.
Files are organized per module, numbered in order, with a manifest.json index.
Locked modules
When a course is in preview or has locked weeks, the aggregating API censors the item type: it returns them empty, and extractors that filter by type skip 75% of the syllabus believing it is empty.
This CLI does not filter. It asks the video and reading microservices about every item directly and keeps whatever answers.
Docs
| File | Contents |
|---|---|
SPEC.md |
The spec: problem, decisions, scope, verification |
CONTEXT.md |
Domain glossary |
RESEARCH.md |
Portal recon: endpoints, gotchas, what is alive |
CHANGELOG.md |
What changed in each version |
endpoints.json |
The routes. A deprecation is fixed here, not in the code |
Tests
bun test # 76 tests against responses captured live from the API
bun run typecheck
Legal
Reaches your own account with your own session, for courses you are already enrolled in. Downloaded material is copyrighted by Coursera and its universities: it is for your personal study. Do not redistribute it.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。