coursera

coursera

Enables browsing your Coursera courses, viewing library maps and course outlines, and downloading transcripts and readings as text via MCP tools.

Category
访问服务器

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:

  1. The COURSERA_CAUTH environment variable
  2. Its own store, under the platform config directory
  3. 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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选