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 | |
🦀 | Native Rust binary | 4.9 MB stripped binary — no Python, no venv, no interpreter overhead |
⚡ | Async I/O | tokio runtime with zero-copy async HTTP — true non-blocking concurrency |
🚀 | Speedrun entire courses |
|
🔓 | Freemium bypass | Auto-detects |
🧠 | Solve quizzes via GraphQL | Elimination-learning solver: submits, learns from feedback, retries until passing |
🤖 | AI-powered quiz solving | Gemini LLM picks correct answers on first attempt, elimination as fallback |
📝 | 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 fuzzy duplicate detection |
📦 | Zero runtime deps | Single 5 MB binary — no Python, no Node.js, no interpreters, no scripting |
🔑 | 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 |
Python → Rust
Metric | Python (before) | Rust (now) |
Runtime size | 397 MB (venv + node_modules) | 5.0 MB |
Startup | ~500ms | <1ms |
Idle RAM | ~80 MB | ~5 MB |
Concurrency | GIL-bound threads | tokio async |
Tools | 126 | 231 |
Dependencies | pip + venv + npm + skipera + curl_cffi + scrapling + puppeteer | None — single binary |
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
git clone https://github.com/VoidChecksum/coursera-mcp.git
cd coursera-mcp
# Build the binary
cargo build --release
# Configure secrets
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>
# Optional: AI quiz solving via Gemini
GEMINI_API_KEY=<your Gemini API key>Tuning parallelism
COURSERA_MCP_PARALLEL_COURSES=3 # concurrent course speedruns (default 3)
COURSERA_MCP_MAX_CONCURRENT=6 # concurrent Coursera API requests (default 6)
COURSERA_MCP_MAX_WORKERS=6 # concurrent lecture completions (default 6)
COURSERA_MCP_MAX_RETRIES=4 # retry count for transient failures (default 4)
COURSERA_MCP_BACKOFF_BASE=0.5 # backoff base seconds (default 0.5)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 binary.
Tools (279)
Course Discovery & Enrollment
Tool | Description |
| Verify session, return user ID |
| List enrolled courses (name, slug, role) |
| Search Coursera catalog via GraphQL |
| Search with filters (free, difficulty, rating) |
| Full course metadata by slug |
| Course description, partners, instructors, workload, specialization |
| Enroll in a course, auto-bypassing freemium restrictions |
| Delete course enrollment |
| Enroll in multiple courses at once with freemium bypass |
| Reset/extend deadlines to unlock expired submissions |
Speedrunning
Tool | Description |
| Complete an entire course in one call: freemium bypass → lectures → quizzes → discussions → graded exams with elimination learning |
| Speedrun every enrolled course in parallel with bounded concurrency |
| Improved single-course completion with detailed status |
| Mark all lectures, readings, widgets, and labs as completed in parallel |
| Solve all failing quizzes across all enrolled courses in parallel |
Progress, Grades & Certificates
Tool | Description |
| Grades, outcomes, and passing state for all graded items |
| Overall progress % and per-item completion status |
| Full grade breakdown with item outcomes and assignment group grades |
| Per-module completion status (completed/in-progress/not-started) |
| Modules completed and modules passed counts |
| Assignment group pass/fail status |
| Detailed completion: progress %, items done/total, breakdown by type |
| All certificates with codes and verification URLs |
| Certificate grade, grant date, verification URL, preview image |
| Certificate preview image URL |
Learner Analytics
Tool | Description |
| Total XP, items completed, learning minutes, active days, weekly stats |
| Current and target weekly learning streaks |
| Day-by-day goal tracking and progress status |
| Start/end dates, ahead/behind/overdue schedule status |
| User ID, full name, locale, timezone, profile photos |
| Coursera Plus/trial/payment status and subscription details |
| Enrollment type (freemium/paid/Plus), ownership status |
| Detailed product ownership with expiry dates |
| Send learning time heartbeat (registers active time on a course item) |
| Social learning cohorts the user belongs to |
| Per-item content deadlines (more granular than session deadlines) |
| Unread notification center messages |
| Identity verification status (for verified certificates) |
| Program memberships (professional certificates, specializations) |
| Study group membership for a course |
| Check if AI Coach is available for a course |
| Check academic integrity incidents |
Skill & Career Intelligence
Tool | Description |
| Skill area XP breakdown per course (gained vs potential) |
| XP earned vs potential for a specific course item |
| AI-generated personalized learning plan (role, skills, courses) |
| Related course recommendations |
| User's interested career roles |
| Career role recommendations for a specialization |
| Progress across all courses in a specialization |
Quiz & Assessment (GraphQL — no browser)
Tool | Description |
| Fetch questions + option IDs via GraphQL, handles START_NEW_ATTEMPT |
| Submit answers, get instant grade + per-question feedback |
| Submit RichText / AI-graded essay answers via GraphQL |
| Check quiz attempt status, grade, and rate-limit info without starting |
| Get discussion prompt content and metadata |
| Post answer to discussion prompt |
| Solve a single quiz using systematic elimination |
| AI-powered answer selection + elimination fallback |
| Find and solve ALL failing quizzes in a course |
| List all unpassed quizzes in a course |
| View persisted elimination data (known correct/incorrect) |
| Discard a stuck quiz draft for fresh attempt |
| Wipe persisted quiz answer data |
| Check submission status for any graded item via GraphQL |
Peer Assignments (Native REST API — no browser)
Tool | Description |
| Get assignment definition, rubric, and submission schema |
| Get instructions for any assignment type (peer/programming/script) |
| Submit peer assignment with text/URL parts |
| Get your own submission content, status, and grade |
| Submit simple text-based written assignments |
Peer Review (Native REST API — no browser)
Tool | Description |
| Get review rubric, criteria, and scoring options |
| Get available submissions to review |
| Submit a peer review evaluation with scores and feedback |
| Check how many reviews done vs required |
Discussion Forums (Native REST API — no browser)
Tool | Description |
| Get threads with sort/filter (newest, most upvoted, most active) |
| Post new discussion thread |
| Get replies/answers for a thread |
| Reply to a thread or to a specific answer |
| Upvote a forum thread |
Programming Assignments (Native REST API)
Tool | Description |
| Get assignment key, parts, and schema |
| Submit code via authenticated session (no email/token needed) |
| Check autograder results for latest submission |
| Get programming assignment spec (REST + fallback) |
| Submit to external autograder (legacy, requires email/token) |
Content Extraction
Tool | Description |
| Clean text transcript of any lecture video (VTT dedup) |
| Video download URLs and subtitle tracks |
| Clean text of any reading/supplement |
| Downloadable slides, PDFs, and supplementary files |
| Glossary and reference materials |
| Module-level instructor notes |
| Module learning objectives |
| Personal study notes for a course item |
| Create study notes on lectures/readings with video timestamps |
| ALL content items with types, IDs, names, and completion status |
Course Structure & Navigation
Tool | Description |
| Full course syllabus: modules, lessons, items |
| Items in a specific module (lectures, quizzes, readings) |
| Full navigation with deadline status per module |
| Session deadlines per module and item |
| Session deadlines with module and item due dates |
| Full forum hierarchy (IDs, types, descriptions) |
| Specialization courses, partners, pricing |
| Specialization details + course list |
| Check if AI peer review grading is available |
| Mark item completed via API |
Item Completion (Pure REST/GraphQL)
Tool | Description |
| Get quiz questions via GraphQL (no browser needed) |
| Submit quiz answers via GraphQL |
| Get assignment instructions via REST API |
| Submit assignment via REST API |
| Get Jupyter/lab workspace URL via REST |
| Get forum threads via REST |
| Post thread via REST |
| Get review rubric via REST |
| Submit review via REST |
| Mark any item completed via REST/GraphQL completion APIs |
HTTP Utilities
Tool | Description |
| Fast Coursera API call via HTTP |
| Fetch authenticated course pages |
| General-purpose URL fetch |
LinkedIn — Coursera Certificate Sync
Tool | Description |
| Fetch existing certs on LinkedIn profile |
| Add cert to LinkedIn (auto-skips duplicates) |
| Batch-add all Coursera certs (dedup) |
| Remove a certification from LinkedIn |
| One-shot sync with optional stale removal |
| Post completion celebration to LinkedIn feed |
| Batch-post all not-yet-posted certificates |
| Fetch basic LinkedIn profile info |
| Fetch recent LinkedIn posts |
LinkedIn — Profile & Identity
Tool | Description |
| Full profile: headline, summary, education, experience, skills |
| Paginated connection list |
| Connection and follower counts |
| All endorsed skills |
| Education entries |
| Work experience entries |
| Update your headline |
LinkedIn — Search
Tool | Description |
| Search for people |
| Search for companies |
| Search for jobs |
| Search for posts/content |
LinkedIn — Messaging
Tool | Description |
| Recent messaging conversations |
| Messages in a conversation |
| Send a message |
| Unread message count |
LinkedIn — Posts & Feed
Tool | Description |
| Create a feed post |
| React (LIKE, CELEBRATE, SUPPORT, LOVE, INSIGHTFUL, FUNNY) |
| Comment on a post |
| Delete a post |
| Get reactions on a post |
| Get comments on a post |
LinkedIn — Network & Invitations
Tool | Description |
| Send a connection request |
| Sent pending invitations |
| Received invitations |
| Accept an invitation |
| Withdraw a sent invitation |
LinkedIn — Companies & Jobs
Tool | Description |
| Company page details |
| Company feed posts |
| Job posting details |
| Apply to a job |
| Save a job |
| Your saved jobs |
LinkedIn — Notifications & Analytics
Tool | Description |
| Notification counts |
| Notification feed |
| Profile view analytics |
| Who viewed your profile |
LinkedIn — Groups
Tool | Description |
| Your groups |
| Posts from a group |
LinkedIn — Profile Management
Tool | Description |
| Add education entry |
| Add work experience |
| Delete education entry |
| Delete work experience |
| Add a skill |
| Endorse a skill on another profile |
Study & Planning
Tool | Description |
| Bundle a module's transcripts + readings into one study document |
| Full-text search across a course's lecture transcripts |
| Progress %, certificate, and grade across all enrolled courses |
| Session end dates across enrolled courses, soonest first |
| Export deadlines as an importable |
Obsidian Integration
Tool | Description |
| Summarize a module's lectures and readings into concise study notes |
| Summarize an entire course organized by module |
| Summarize + write to Obsidian vault with frontmatter, wiki-links, callouts, and tags |
| Export a single module to Obsidian |
| Batch export all enrolled courses to Obsidian |
Reviews & Ratings
Tool | Description |
| Get aggregate ratings and recent reviews |
| Submit a star rating and text review |
| Get AI-generated review highlights |
Wishlist & Saved Courses
Tool | Description |
| Get courses saved to your wishlist |
| Save a course to wishlist |
| Remove from wishlist |
Announcements & Communications
Tool | Description |
| Get instructor announcements |
| Get notification settings |
| Toggle notification types |
Certificates & Accomplishments
Tool | Description |
| Download certificate as PDF (base64) |
| Get all accomplishments across courses |
| Get public share URLs for a certificate |
Account & Profile Management
Tool | Description |
| Update bio, location, company, title |
| Get privacy, language, timezone settings |
| Change language/timezone |
Session Management
Tool | Description |
| Get available course sessions |
| Switch to a different session |
| Get current session details |
Course Categories & Discovery
Tool | Description |
| Get all course domains/categories |
| Get subcategories for a domain |
| Get trending/recommended courses |
| Get autocomplete search suggestions |
Partners & Instructors
Tool | Description |
| Get university/company details |
| Get instructor biography and courses |
| Get all courses by a partner |
Activity & History
Tool | Description |
| Get recently viewed courses/items |
| Get learning activity log |
| Get course browsing history |
Bookmarks
Tool | Description |
| Get bookmarked content |
| Bookmark a course item |
| Remove a bookmark |
| Get all study notes across courses |
Labs & Workspaces
Tool | Description |
| Get lab session status |
| Start a lab environment |
| Get Jupyter/lab workspace details |
Degree Programs & Professional Certificates
Tool | Description |
| Get available degree programs |
| Get professional cert enrollments |
| Get specialization memberships |
Skills & Achievements
Tool | Description |
| Get skill proficiency scores |
| Get badges, streaks, milestones |
| Get skill tags for a course |
Batch Operations
Tool | Description |
| Complete multiple courses in parallel |
| Get progress for multiple courses at once |
| Solve all failing quizzes across multiple courses |
Honor Code & Compliance
Tool | Description |
| Get honor code text |
| Sign the honor code agreement |
| Check if honor code is signed |
Financial Aid
Tool | Description |
| Check financial aid status |
| Get application status |
Social & Community
Tool | Description |
| Get other learners in a course |
| Get course mentors |
| Follow another learner |
| Get your followers |
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 reimplemented natively in Rust (replacing the Python skipera library): submits answers, gets per-question feedback marking options correct/incorrect, persists learned answers to disk, and retries with improved answers until passing (≥70%). AI-powered first attempt via Gemini LLM, with systematic elimination as fallback. Handles START_NEW_ATTEMPT, RESUME_DRAFT, rate limits, option ID reshuffling, and all question types (multiple choice, checkbox, text reflect, rich text, numeric).
Architecture
coursera-mcp/
├── Cargo.toml Rust project manifest
├── src/
│ ├── main.rs Entry point — tokio runtime + MCP stdio transport
│ ├── config.rs Environment-based configuration
│ ├── client.rs Async HTTP client (retry, backoff, semaphore, caching)
│ ├── server.rs ServerHandler — 279-tool dispatch + tool descriptors
│ └── tools/
│ ├── courses.rs Course CRUD, search, specializations (9 tools)
│ ├── progress.rs Grades, progress, stats, XP (21 tools)
│ ├── enrollment.rs Enrollment, lecture completion, items (11 tools)
│ ├── quiz.rs Full quiz solver engine (10 tools, 3500 lines)
│ ├── speedrun.rs Speedrun, bulk solve (4 tools)
│ ├── content.rs Transcripts, supplements, notes (14 tools)
│ ├── forum.rs Forum threads, replies, upvotes (8 tools)
│ ├── assignments.rs Peer, programming, written (22 tools)
│ ├── linkedin.rs LinkedIn Voyager API (53 tools)
│ ├── obsidian.rs Obsidian vault export (5 tools)
│ ├── dashboard.rs Dashboard, deadlines, notifications (21 tools)
│ ├── ai_quiz.rs Gemini LLM quiz solver (1 tool + helpers)
│ ├── automation.rs Pure REST/GraphQL item completion (1 tool)
│ └── extra.rs Reviews, wishlist, accounts, social, etc. (53 tools)
├── run.sh Launcher (just execs the binary)
├── .env Your cookies (gitignored)
└── .env.example Template┌──────────────────────────────────────────────────────────────────────┐
│ MCP Clients (Claude / GPT / Custom) │
├──────────────────────────────────────────────────────────────────────┤
│ coursera-mcp · rmcp stdio · tokio async │
├─────────┬─────────┬──────────┬──────────┬──────────┬────────────────┤
│ REST │ GraphQL │ HTTP │ LinkedIn │ Gemini │ Obsidian │
│ API │ Gateway │ Client │ Voyager │ LLM │ API │
│ (279 │ (50+ │ (reqwest │ │ API │ │
│ endpts)│ ops) │ +rustls) │ │ │ REST :27123 │
└─────────┴─────────┴──────────┴──────────┴──────────┴────────────────┘
Single 5.6 MB binary — zero runtime dependenciesSecurity
No passwords stored | Cookie-based auth only — session tokens from your browser |
| Secrets never enter version control |
No hardcoded credentials | All secrets read from environment at runtime |
No secret logging | Cookies are never printed or logged to stdout/stderr |
| Contains only empty placeholders |
rustls | Pure-Rust TLS — no OpenSSL dependency or CVE surface |
Never commit your.env file. If you accidentally expose cookies, log out of
Coursera/LinkedIn immediately to invalidate them.
License
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/NetVar1337/coursera-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server