Skip to main content
Glama
README.md
# @striderlabs/mcp-coursera

MCP (Model Context Protocol) server for [Coursera](https://www.coursera.org) — search courses, get details, enroll, track progress, and view certificates.

## Tools

| Tool | Description |
|------|-------------|
| `search_courses` | Search courses by topic, skill, difficulty level |
| `get_course_details` | Get full course info: syllabus, duration, instructor, reviews |
| `enroll_course` | Enroll in a course (requires login) |
| `get_my_courses` | List enrolled courses and progress |
| `get_certificates` | View earned certificates |

## Requirements

- Node.js 18+
- [Playwright](https://playwright.dev) (installed automatically)

## Installation

```bash
npm install @striderlabs/mcp-coursera
# Install browser binaries
npx playwright install chromium
```

## Configuration

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `BROWSERBASE_CDP_URL` | Optional | Browserbase CDP endpoint for cloud browsers |
| `COURSERA_EMAIL` | For auth tools | Your Coursera account email |
| `COURSERA_PASSWORD` | For auth tools | Your Coursera account password |

### Claude Desktop / MCP Client

Add to your MCP client config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "coursera": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-coursera"],
      "env": {
        "COURSERA_EMAIL": "your@email.com",
        "COURSERA_PASSWORD": "yourpassword",
        "BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY"
      }
    }
  }
}
```

### With Browserbase (Cloud Browsers)

[Browserbase](https://www.browserbase.com) provides cloud browser infrastructure. Set `BROWSERBASE_CDP_URL` to connect:

```bash
BROWSERBASE_CDP_URL="wss://connect.browserbase.com?apiKey=YOUR_API_KEY" npx @striderlabs/mcp-coursera
```

Without `BROWSERBASE_CDP_URL`, a local Chromium instance is launched.

## Usage Examples

### Search for Courses

```
search_courses(query="machine learning", difficulty="beginner", limit=5)
```

### Get Course Details

```
get_course_details(course_url="https://www.coursera.org/learn/machine-learning")
```

### Enroll in a Course

```
enroll_course(course_url="https://www.coursera.org/learn/python")
```

### Check Progress

```
get_my_courses()
```

### View Certificates

```
get_certificates()
```

## Authentication

Tools that access personal data (`enroll_course`, `get_my_courses`, `get_certificates`) require Coursera credentials. Provide them via:

1. **Environment variables** (recommended): `COURSERA_EMAIL` and `COURSERA_PASSWORD`
2. **Tool arguments**: Pass `email` and `password` directly in the tool call

Credentials are never stored or transmitted beyond the browser session.

## Development

```bash
git clone <repo>
cd mcp-coursera
npm install
npx playwright install chromium
npm run build
npm start
```

## License

MIT

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: enrolling in courses, viewing certificates, getting course details, listing enrolled courses, and searching for courses. There is no overlap in functionality, making it easy for an agent to select the correct tool for any task.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., enroll_course, get_certificates, get_course_details, get_my_courses, search_courses). This uniformity enhances readability and predictability for agents.

Tool Count5/5

With 5 tools, this server is well-scoped for a Coursera integration, covering key user actions without being overwhelming. Each tool serves a clear and necessary function, making the count appropriate for the domain.

Completeness4/5

The toolset covers core operations like enrollment, viewing certificates, course details, enrolled courses, and search, providing a solid foundation. However, there are minor gaps, such as no tools for unenrolling from courses, updating user profiles, or managing course progress, which agents might need to work around.

Maintenance

ActivityInactive
ResponsivenessNo issues