Coursera MCP
Provides full programmatic access to Coursera, including course discovery and enrollment, progress tracking, speedrunning lectures, solving quizzes via GraphQL, submitting assignments, earning certificates, and auto-adding certificates to LinkedIn.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Coursera MCPEnroll me in the 'Machine Learning' course by Andrew Ng"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
██████╗ ██████╗ ██╗ ██╗██████╗ ███████╗███████╗██████╗ █████╗ ███╗ ███╗ ██████╗██████╗
██╔════╝██╔═══██╗██║ ██║██╔══██╗██╔════╝██╔════╝██╔══██╗██╔══██╗ ████╗ ████║██╔════╝██╔══██╗
██║ ██║ ██║██║ ██║██████╔╝███████╗█████╗ ██████╔╝███████║█████╗██╔████╔██║██║ ██████╔╝
██║ ██║ ██║██║ ██║██╔══██╗╚════██║██╔══╝ ██╔══██╗██╔══██║╚════╝██║╚██╔╝██║██║ ██╔═══╝
╚██████╗╚██████╔╝╚██████╔╝██║ ██║███████║███████╗██║ ██║██║ ██║ ██║ ╚═╝ ██║╚██████╗██║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝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
1. Install Cookie-Editor
All authentication uses browser session cookies. Install Cookie-Editor to export them:
Browser | Install |
2. Export Coursera Cookies
Log into coursera.org
Click Cookie-Editor icon → Export → copy
CAUTHandCSRF3-TokenvaluesPaste into
.env(see Setup)
3. Export LinkedIn Cookies (optional)
Log into linkedin.com
Click Cookie-Editor icon → Export → copy
li_atandJSESSIONIDvaluesPaste 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>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.shAny 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 |
| Verify session, return user ID |
| List enrolled courses (name, slug, role) |
| Search Coursera catalog via GraphQL |
| Full course metadata by slug |
| Instantly enroll in any course |
| Reset/extend deadlines to unlock expired submissions |
📊 Progress, Grades & Certificates
Tool | Description |
| Grades, outcomes, and passing state for all graded items |
| Overall progress % and per-item completion status |
| All certificates with codes and verification URLs |
⚡ Speedrunning
Tool | Description |
| Instantly complete all lectures, readings, widgets, coach items — in parallel via REST API |
🧠 Quiz & Assessment (GraphQL — no browser)
Tool | Description |
| Fetch questions + option IDs via GraphQL |
| Submit answers, get instant grade + feedback |
| Get discussion prompt details |
| Post answer to discussion prompt |
📖 Content Extraction
Tool | Description |
| Clean text transcript of any lecture video |
| Clean text of any reading/supplement |
🌐 Browser Automation (stealth Chromium)
Tool | Description |
| Start/resume quiz in browser, extract all questions |
| Answer quiz, sign honor code, submit |
| Extract assignment instructions + form fields |
| Submit written/peer assignment (text + files) |
| Get Jupyter/lab workspace URL |
| Trigger completion by loading item page |
| Extract discussion forum threads |
| Post new thread in forums |
| Get peer review criteria + rubrics |
| Submit peer review grading |
| Get programming assignment schema |
| Submit code to Coursera autograder |
🕷️ Scrapling (adaptive web scraping)
Tool | Description |
| Fast API call via Scrapling (stealth httpx, 1775× faster than BS4) |
| Scrape authenticated pages with JS rendering (Playwright) |
| General-purpose scraper with CSS selectors |
🔗 LinkedIn Integration
Tool | Description |
| Fetch existing certs on LinkedIn profile |
| Add cert to LinkedIn (auto-skips duplicates) |
| Batch-add all Coursera certs (dedup) |
🎓 Study & Planning (read-only)
Tool | Description |
| Bundle a module's/course's transcripts + readings into one study document |
| Full-text search across a course's lecture transcripts, with snippets |
| Progress %, certificate, and grade across all enrolled courses in one call |
| Session end dates across enrolled courses, soonest first |
| Export deadlines as an importable |
| Catalog search with free-only / difficulty / min-rating filters |
| 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 |
| Secrets never enter version control |
No hardcoded credentials | All secrets read from |
No secret logging | Cookies are never printed or logged to stdout/stderr |
| Contains only empty placeholders |
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.
This server cannot be installed
Maintenance
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