Skip to main content
Glama

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

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

Complete all lectures/readings in parallel via API — seconds, not hours

🧠

Solve quizzes via GraphQL

Fetch questions + option IDs, submit answers, get instant grades — no browser

📝

Submit assignments

Written, peer review, discussion prompts, programming — all automated

📊

Track everything

Grades, progress %, certificates, verification URLs

🔗

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


Related MCP server: Canvas MCP

📋 Prerequisites

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

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

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

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

# Node dependencies (for stealth browser automation)
npm install rebrowser-puppeteer puppeteer-extra puppeteer-extra-plugin-stealth \
            fingerprint-generator fingerprint-injector

# Configure credentials
cp .env.example .env
chmod 600 .env
# ✏️  Edit .env — paste your cookie values from Cookie-Editor

.env format

# ── Coursera (required) ──────────────────────────────
COURSERA_CAUTH=<paste CAUTH cookie value>
COURSERA_CSRF3=<paste CSRF3-Token cookie value>

# ── LinkedIn (optional) ──────────────────────────────
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

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

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


🛠️ Tools (43)

📚 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

Instantly enroll in any course

reset_course_deadlines

Reset/extend deadlines to unlock expired submissions

📊 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_certificates

All certificates with codes and verification URLs

⚡ Speedrunning

Tool

Description

complete_course_lectures

Instantly complete all lectures, readings, widgets, coach items — in parallel via REST API

🧠 Quiz & Assessment (GraphQL — no browser)

Tool

Description

get_quiz_questions_api

Fetch questions + option IDs via GraphQL

submit_quiz_answers_api

Submit answers, get instant grade + feedback

get_discussion_prompt

Get discussion prompt details

submit_discussion_prompt_answer

Post answer to discussion prompt

📖 Content Extraction

Tool

Description

get_video_transcript

Clean text transcript of any lecture video

get_supplement_content

Clean text of any reading/supplement

🌐 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, 1775× faster than BS4)

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 (read-only)

Tool

Description

course_content_digest

Bundle a module's/course's transcripts + readings into one study document

search_course_transcripts

Full-text search across a course's lecture transcripts, with snippets

learning_dashboard

Progress %, certificate, and grade across all enrolled courses in one call

get_upcoming_deadlines

Session end dates across enrolled courses, soonest first

export_deadlines_ics

Export deadlines as an importable .ics calendar

search_courses

Catalog search with free-only / difficulty / min-rating filters

get_specialization

Specialization details + its course list


🏗️ Architecture

coursera-mcp/
├── server.py            Python MCP server — all 43 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  │
│  API    │  API    │          │  Stealth  │  Voyager  │
│         │         │          │ Puppeteer │ + Browser │
├─────────┴─────────┤          ├───────────┤           │
│  curl_cffi        │ Fetcher  │automation │automation │
│  skipera          │ Dynamic  │   .mjs    │   .mjs    │
│  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 — use it however you want.


A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VoidChecksum/coursera-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server