Skip to main content
Glama
README.md
# DeepLearning.AI MCP Server (`dlai-mcp`)

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Model Context Protocol](https://img.shields.io/badge/MCP-1.0+-green.svg)](https://modelcontextprotocol.io/)

A Model Context Protocol (MCP) server providing AI agents (Claude Desktop, Cursor, Antigravity, custom agent loops) with direct programmatic access to DeepLearning.AI Short Courses on [`learn.deeplearning.ai`](https://learn.deeplearning.ai).

Designed for **autonomous note-taking**, **code & lab extraction**, and **instant course research**.

---

## Features

- 📚 **Full Course Catalog Access**: Browse 100+ DeepLearning.AI short courses with partners, topics, and duration.
- 📑 **Complete Syllabi & Outlines**: Query module hierarchies, lesson indices, durations, and lesson types.
- 🎙️ **Timestamped Video Transcripts**: Extract caption tracks with structured timestamp markers (`[00:14]`) for exact citation.
- 💻 **Jupyter Lab & Code Extraction**: Read `.ipynb` notebooks and code exercises rendered in clean Markdown.
- ⚡ **Zero-Auth Direct API**: High-speed public tRPC queries without browser overhead.
- 🔍 **Offline SQLite Cache & FTS5 Search**: Instant full-text search with BM25 ranking across all synced materials.
- 🔐 **Interactive CLI Login**: Simple one-time login command (`dlai-mcp login`) to authenticate your account.

---

## Installation

### Using `uv` (Recommended)
```bash
# Clone the repository
git clone https://github.com/WilliamAxelC/deeplearning.ai-MCP-Server.git
cd deeplearning.ai-MCP-Server

# Create virtual environment and install
uv venv
source .venv/bin/activate
uv pip install -e .
```

### Using `pip`
```bash
pip install -e .
```

---

## Quickstart & CLI Commands

### 1. Interactive Authentication (Optional for Public Data, Required for Enrolled Labs)
```bash
dlai-mcp login
```
*Opens a Chromium browser window for you to log into your DeepLearning.AI account.*

### 2. Check Status & Local Cache Statistics
```bash
dlai-mcp status
```

### 3. Pre-fetch Course Transcripts for Offline Agent Access
```bash
# Sync a specific course by slug
dlai-mcp sync --course chatgpt-prompt-eng

# Or sync all courses
dlai-mcp sync --all
```

### 4. Search Indexed Course Transcripts via CLI
```bash
dlai-mcp search "temperature parameter"
```

### 5. Start the MCP Server
```bash
# Standard stdio mode (for Claude Desktop / Cursor / Antigravity)
dlai-mcp serve

# Or SSE / HTTP network mode
dlai-mcp serve --transport sse --port 8000
```

---

## Configuring MCP Clients

### Claude Desktop Configuration (`claude_desktop_config.json`)
```json
{
  "mcpServers": {
    "deeplearning-ai": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/deeplearning.ai-MCP-Server",
        "run",
        "dlai-mcp",
        "serve"
      ]
    }
  }
}
```

### Cursor / Antigravity Configuration
```json
{
  "mcpServers": {
    "deeplearning-ai": {
      "command": "/path/to/deeplearning.ai-MCP-Server/.venv/bin/dlai-mcp",
      "args": ["serve"]
    }
  }
}
```

---

## Available MCP Tools

| Tool | Parameters | Description |
| :--- | :--- | :--- |
| `list_courses` | `query: Optional[str]`, `partner: Optional[str]`, `topic: Optional[str]` | List and filter short courses. |
| `get_course_structure` | `course_slug: str` | Retrieve syllabus, modules, and all lessons. |
| `get_lesson_transcript` | `course_slug: str`, `lesson_slug_or_index: str`, `include_timestamps: bool` | Fetch timestamped transcript text. |
| `get_lesson_lab` | `course_slug: str`, `lesson_slug_or_index: str`, `raw_json: bool` | Extract Jupyter notebook code & markdown. |
| `search_course_content` | `query: str`, `course_slug: Optional[str]`, `limit: int` | SQLite FTS5 BM25 search across transcripts. |
| `sync_course` | `course_slug: str`, `force_refresh: bool` | Pre-fetch and index an entire course into SQLite. |
| `get_auth_status` | *none* | Check active user session and account details. |

---

## Author

- **William Axel C** ([@WilliamAxelC](https://github.com/WilliamAxelC)) - `williamaxelcuangdinata@gmail.com`

---

## License

MIT

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: course listing, course structure, lesson transcript, lesson lab, course-level search, sync/offline indexing, and auth status. There is no meaningful overlap or ambiguity among the tool names or their responsibilities.

Naming Consistency5/5

Tools consistently use snake_case verb_noun naming: list_courses, get_ourse_structure, get_lesson_transcript, search_course_ontent, sync_course. The pattern is obvious and predictable for an agent routing to tools.

Tool Count5/5

Seven tools fit the server's scope well: discovery, course inspection, lesson content retrieval, search, and sync. It feels complete without unnecessary bulk or missing core steps.

Completeness4/5

The main learning workflow is covered: find a course, get its structure, fetch lesson transcripts and labs, and search indexed content. Minor gaps exist, such as no direct quiz content fetch and only a limited auth status check, but these do not block the core set.

Maintenance

ActivityMaintained
ResponsivenessNo issues