dlai-mcp
# DeepLearning.AI MCP Server (`dlai-mcp`)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](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
Scored across 7 tools
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.
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.
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.
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.