Coursera MCP

Coursera MCP

Enables AI agents to programmatically interact with Coursera, including enrolling in courses, completing lectures, solving quizzes, submitting assignments, earning certificates, and pushing them to LinkedIn.

Category
Visit Server

README

<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/COURSERA-MCP-0056D2?style=for-the-badge&logo=coursera&logoColor=white&labelColor=0056D2"> <img alt="Coursera MCP" src="https://img.shields.io/badge/COURSERA-MCP-0056D2?style=for-the-badge&logo=coursera&logoColor=white&labelColor=0056D2"> </picture> </p>

<p align="center"> <b>The most advanced MCP server for Coursera.</b><br> <sub>87 tools · 8 integration layers · full course automation · Obsidian export</sub> </p>

<p align="center"> <a href="#setup"><img src="https://img.shields.io/badge/setup-guide-blue?style=flat-square" alt="Setup"></a> <a href="#tools-87"><img src="https://img.shields.io/badge/tools-87-green?style=flat-square" alt="Tools"></a> <a href="#architecture"><img src="https://img.shields.io/badge/architecture-8_layers-purple?style=flat-square" alt="Architecture"></a> <a href="https://github.com/VoidChecksum/coursera-mcp/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-yellow?style=flat-square" alt="License"></a> </p>

<p align="center"> <img src="https://img.shields.io/badge/python-3.11+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python"> <img src="https://img.shields.io/badge/node.js-22+-339933?style=flat-square&logo=nodedotjs&logoColor=white" alt="Node.js"> <img src="https://img.shields.io/badge/MCP-stdio-black?style=flat-square" alt="MCP"> <img src="https://img.shields.io/badge/scrapling-adaptive-FF6B35?style=flat-square" alt="Scrapling"> <img src="https://img.shields.io/badge/stealth-rebrowser-red?style=flat-square" alt="Stealth"> </p>


 ██████╗ ██████╗ ██╗   ██╗██████╗ ███████╗███████╗██████╗  █████╗       ███╗   ███╗ ██████╗██████╗
██╔════╝██╔═══██╗██║   ██║██╔══██╗██╔════╝██╔════╝██╔══██╗██╔══██╗      ████╗ ████║██╔════╝██╔══██╗
██║     ██║   ██║██║   ██║██████╔╝███████╗█████╗  ██████╔╝███████║█████╗██╔████╔██║██║     ██████╔╝
██║     ██║   ██║██║   ██║██╔══██╗╚════██║██╔══╝  ██╔══██╗██╔══██║╚════╝██║╚██╔╝██║██║     ██╔═══╝
╚██████╗╚██████╔╝╚██████╔╝██║  ██║███████║███████╗██║  ██║██║  ██║      ██║ ╚═╝ ██║╚██████╗██║
 ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝      ╚═╝     ╚═╝ ╚═════╝╚═╝

Give any AI agent — Claude, GPT, or your own — full programmatic access to Coursera. Enroll in courses, speedrun lectures, solve quizzes, submit assignments, earn certificates, and push them to LinkedIn. All from a single MCP server.


Highlights

Feature How
🚀 Speedrun entire courses speedrun_course completes lectures, quizzes, discussions, and graded exams in one call
🔓 Freemium bypass Auto-detects enrolledViaFreemiumAt restrictions and re-enrolls without the flag
🧠 Solve quizzes via GraphQL Elimination-learning solver: submits, learns from feedback, retries until passing
📝 Submit everything Written, peer review, discussion prompts, programming assignments — all automated
📊 Full analytics Learner stats, XP, streaks, goals, module progress, detailed grades, timelines
🔗 LinkedIn integration Auto-add certificates to your profile with duplicate detection
🕷️ Scrapling scraping Adaptive parser (1775× faster than BeautifulSoup) + JS rendering
🛡️ Stealth browser rebrowser-puppeteer + fingerprint injection defeats Cloudflare/bot detection
🔑 Cookie-based auth No passwords stored — session cookies via Cookie-Editor
📓 Obsidian export Summarize courses into structured study notes and write directly to your Obsidian vault

Prerequisites

1. Install Cookie-Editor

All authentication uses browser session cookies. Install Cookie-Editor to export them:

Browser Install
<img src="https://img.shields.io/badge/Chrome-4285F4?style=flat-square&logo=googlechrome&logoColor=white"> Chrome Web Store
<img src="https://img.shields.io/badge/Firefox-FF7139?style=flat-square&logo=firefoxbrowser&logoColor=white"> Firefox Add-ons
<img src="https://img.shields.io/badge/Edge-0078D7?style=flat-square&logo=microsoftedge&logoColor=white"> Edge Add-ons

2. Export Coursera Cookies

  1. Log into coursera.org
  2. Click Cookie-Editor icon → Export → copy CAUTH and CSRF3-Token values
  3. Paste into .env (see Setup)

3. Export LinkedIn Cookies (optional)

  1. Log into linkedin.com
  2. Click Cookie-Editor icon → Export → copy li_at and JSESSIONID values
  3. Paste into .env

Setup

git clone https://github.com/VoidChecksum/coursera-mcp.git
cd coursera-mcp

uv venv .venv
uv pip install -p .venv/bin/python mcp curl_cffi skipera requests "scrapling[fetchers]"
.venv/bin/scrapling install

npm install rebrowser-puppeteer puppeteer-extra puppeteer-extra-plugin-stealth \
            fingerprint-generator fingerprint-injector

cp .env.example .env
chmod 600 .env

.env format

COURSERA_CAUTH=<paste CAUTH cookie value>
COURSERA_CSRF3=<paste CSRF3-Token cookie value>

LINKEDIN_LI_AT=<paste li_at cookie value>
LINKEDIN_JSESSIONID=<paste JSESSIONID value, without quotes>

[!NOTE] When Coursera or LinkedIn logs you out, re-export cookies with Cookie-Editor and update .env.


Connect to Your AI Client

<details> <summary><b>Claude Desktop / Claude Code</b></summary>

Add to your MCP config (claude_desktop_config.json or via CLI):

{
  "mcpServers": {
    "coursera": {
      "command": "/path/to/coursera-mcp/run.sh"
    }
  }
}

Or via CLI:

claude mcp add coursera /path/to/coursera-mcp/run.sh

</details>

<details> <summary><b>Other MCP Clients</b></summary>

Any MCP-compatible client that supports stdio transport works. Point it at run.sh which loads .env and starts the server.

</details>


Tools (87)

Course Discovery & Enrollment

Tool Description
whoami Verify session, return user ID
my_courses List enrolled courses (name, slug, role)
search Search Coursera catalog via GraphQL
course_details Full course metadata by slug
enroll_course Enroll in a course, auto-bypassing freemium restrictions
unenroll_course Delete course enrollment
batch_enroll Enroll in multiple courses at once with freemium bypass
reset_course_deadlines Reset/extend deadlines to unlock expired submissions

Speedrunning

Tool Description
speedrun_course Complete an entire course in one call: freemium bypass → lectures → quizzes → discussions → graded exams with elimination learning
speedrun_all Speedrun every enrolled course, skipping 100% courses
complete_course_lectures Mark all lectures, readings, widgets, and labs as completed in parallel

Progress, Grades & Certificates

Tool Description
get_course_grades Grades, outcomes, and passing state for all graded items
get_course_progress Overall progress % and per-item completion status
get_detailed_grades Full grade breakdown with item outcomes and assignment group grades
get_module_progress Per-module completion status (completed/in-progress/not-started)
get_home_progress Modules completed and modules passed counts
get_certificates All certificates with codes and verification URLs
get_certificate_details Certificate grade, grant date, verification URL, preview image
get_certificate_image Certificate preview image URL

Learner Analytics (Reverse-Engineered GraphQL)

Tool Description
get_learner_stats Total XP, items completed, learning minutes, active days, weekly stats
get_weekly_streaks Current and target weekly learning streaks
get_weekly_goals Day-by-day goal tracking and progress status
get_course_timeline Start/end dates, ahead/behind/overdue schedule status
get_profile User ID, full name, locale, timezone, profile photos
get_subscription_status Coursera Plus/trial/payment status and subscription details
check_product_ownership Enrollment type (freemium/paid/Plus), ownership status
send_learning_heartbeat Send learning time heartbeat (registers active time on a course item)
get_cohorts Social learning cohorts the user belongs to
get_item_deadlines Per-item content deadlines (more granular than session deadlines)

Skill & Career Intelligence

Tool Description
get_skill_xp Skill area XP breakdown per course (gained vs potential)
get_item_xp XP earned vs potential for a specific course item
get_learning_plan AI-generated personalized learning plan (role, skills, courses)
get_related_courses Related course recommendations
get_interested_careers User's interested career roles
get_career_roles Career role recommendations for a specialization
get_specialization_progress Progress across all courses in a specialization
get_course_info Course description, partners, instructors, workload, primary specialization

Quiz & Assessment (GraphQL — no browser)

Tool Description
get_quiz_questions_api Fetch questions + option IDs via GraphQL, handles START_NEW_ATTEMPT
submit_quiz_answers_api Submit answers, get instant grade + per-question feedback
get_quiz_state Check quiz attempt status, grade, and rate-limit info without starting
get_discussion_prompt Get discussion prompt content and metadata
submit_discussion_prompt_answer Post answer to discussion prompt

Content Extraction

Tool Description
get_video_transcript Clean text transcript of any lecture video (VTT dedup)
get_supplement_content Clean text of any reading/supplement
get_lecture_assets Downloadable slides, PDFs, and supplementary files
get_course_references Glossary and reference materials
get_instructor_notes Module-level instructor notes
get_learning_objectives Module learning objectives
get_user_notes Personal study notes for a course item
create_user_note Create study notes on lectures/readings with video timestamps

Course Structure & Navigation

Tool Description
course_materials Full course syllabus: modules, lessons, items
module_items Items in a specific module (lectures, quizzes, readings)
get_course_navigation Full navigation with deadline status per module
get_course_schedule Session deadlines per module and item
get_forum_structure Full forum hierarchy (IDs, types, descriptions)
get_specialization_info Specialization courses, partners, pricing
get_career_roles Career role recommendations for specializations
get_ai_grading_eligibility Check if AI peer review grading is available

Browser Automation (stealth Chromium)

Tool Description
get_quiz_attempt Start/resume quiz in browser, extract all questions
submit_quiz_attempt Answer quiz, sign honor code, submit
get_assignment_instructions Extract assignment instructions + form fields
submit_assignment Submit written/peer assignment (text + files)
get_workspace_url Get Jupyter/lab workspace URL
mark_item_completed Trigger completion by loading item page
get_forum_threads Extract discussion forum threads
post_forum_thread Post new thread in forums
get_peer_review_questions Get peer review criteria + rubrics
submit_peer_review_evaluation Submit peer review grading
get_programming_assignment_instructions Get programming assignment schema
submit_programming_api Submit code to Coursera autograder

Scrapling (adaptive web scraping)

Tool Description
scrapling_api_fetch Fast API call via Scrapling (stealth httpx)
scrape_course_page Scrape authenticated pages with JS rendering (Playwright)
scrape_url General-purpose scraper with CSS selectors

LinkedIn Integration

Tool Description
get_linkedin_certifications Fetch existing certs on LinkedIn profile
add_certificate_to_linkedin Add cert to LinkedIn (auto-skips duplicates)
add_all_certificates_to_linkedin Batch-add all Coursera certs (dedup)

Study & Planning

Tool Description
course_content_digest Bundle a module's transcripts + readings into one study document
search_course_transcripts Full-text search across a course's lecture transcripts
learning_dashboard Progress %, certificate, and grade across all enrolled courses
get_upcoming_deadlines Session end dates across enrolled courses, soonest first
export_deadlines_ics Export deadlines as an importable .ics calendar
get_specialization Specialization details + its course list

Obsidian Integration

Tool Description
summarize_module Summarize a module's lectures and readings into concise study notes
summarize_course Summarize an entire course organized by module
export_course_to_obsidian Summarize + write to Obsidian vault with frontmatter, wiki-links, callouts, and tags
export_module_to_obsidian Export a single module to Obsidian
export_all_courses_to_obsidian Batch export all enrolled courses to Obsidian

Reverse Engineering

Several tools were built by intercepting live browser traffic and reverse-engineering Coursera's internal APIs:

Freemium Bypass — Coursera sets enrolledViaFreemiumAt on free enrollments, which causes all opencourse.v1 video-event and supplement-completion endpoints to return 403. The bypass deletes the enrollment via DELETE /api/openCourseMemberships.v1/{uid}~{courseId} (with an empty {} body — Akka backend requires it) and re-creates it via POST without the freemium flag.

GraphQL Gateway — 48+ operations captured from graphql-gateway, including GetLearnerStats, WeeklyStreaks_QueryWeeklyStreaks, GetLearnerWeeklyGoals, GetCourseBranchModuleProgressByCourse, GetLearnerCourseTimeline, GetMyCertificateByProduct, CourseNavigation, GetAiGradingEligibilityByCourse, CareerRolesQuery, and GetProductOwnership.

REST APIs — 61+ endpoints mapped from browser network traffic, including onDemandCourseViewGrades.v1, onDemandReferences.v1, onDemandLectureAssets.v1, onDemandInstructorNotes.v1, userNotes.v1, onDemandCourseForums.v1, onDemandLearningObjectives.v2, and subscriptions.v1.

Quiz Solver — Elimination-learning algorithm: submits first-option answers, gets per-question feedback marking options correct/incorrect, persists learned answers to ~/.skipera/gradedData/, and retries with improved answers until passing (≥70%). Handles START_NEW_ATTEMPT, rate limits, and MultipleChoiceReflectQuestion types.


Architecture

coursera-mcp/
├── server.py            Python MCP server — all 87 tools
├── automation.mjs       Stealth browser automation (Node.js)
├── run.sh               Launcher (loads .env, starts stdio)
├── .env                 Your cookies (gitignored)
├── .env.example         Template
└── .gitignore
┌──────────────────────────────────────────────────────────────────────┐
│              MCP Clients (Claude / GPT / Custom)                     │
├──────────────────────────────────────────────────────────────────────┤
│                server.py  ·  FastMCP stdio                           │
├─────────┬─────────┬──────────┬───────────┬──────────┬────────┬───────┤
│  REST   │ GraphQL │ Scrapling│  Browser  │ LinkedIn │ gRPC   │Obsidi-│
│  API    │ Gateway │          │  Stealth  │  Voyager │  API   │an API │
│         │         │          │ Puppeteer │ + Browser│        │       │
├─────────┴─────────┤          ├───────────┤          │        │       │
│  curl_cffi        │ Fetcher  │automation │automation│        │ REST  │
│  skipera          │ Dynamic  │   .mjs    │   .mjs   │        │:27123 │
│  requests         │ Fetcher  │ (Node.js) │ (Node.js)│        │       │
└───────────────────┴──────────┴───────────┴──────────┴────────┴───────┘

Security

No passwords stored Cookie-based auth only — session tokens from your browser
.env is gitignored Secrets never enter version control
No hardcoded credentials All secrets read from os.environ at runtime
No secret logging Cookies are never printed or logged to stdout/stderr
.env.example is safe Contains only empty placeholders

[!CAUTION] Never commit your .env file. If you accidentally expose cookies, log out of Coursera/LinkedIn immediately to invalidate them.


License

MIT


<p align="center"> <sub>Built for agents that learn faster than humans.</sub> </p>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured