Welcome to the Data Engineering Zoomcamp 2026 workshop!
In this workshop, you'll use an AI-powered IDE to build a complete data pipeline. Using simple prompts, you can go from an API to a local data warehouse with dlt (data load tool). The AI handles the code generation. You focus on the results.
By the end of this workshop, you will have:
- A working dlt pipeline that extracts data from the Open Library API
- Normalized relational tables stored in DuckDB
- The ability to query, inspect, and visualize your data
- Experience using AI-assisted development for data engineering
No API key required! The Open Library API is completely open and doesn't require authentication. You can start building immediately.
Before the workshop, make sure you have the following set up:
If you're unfamiliar with dlt and what the library does, we recommend reading through the included Jupyter notebook before the workshop.
Open the notebook in Google Colab
It walks through dlt step by step:
- What a dlt source and pipeline are
- How data moves through Extract, Normalize, and Load
- How to inspect the loaded data
Understanding these concepts will help you know what the agent-generated code is actually doing.
You do not need to clone the repo to follow the workshop. The
dlt initcommand scaffolds everything you need.
You'll need an AI-powered code editor that can understand context and generate code from natural language. We recommend:
| IDE | Description |
|---|---|
| Cursor | VS Code fork with built-in AI assistance (recommended) |
| Windsurf | Alternative agentic IDE |
| VS Code + GitHub Copilot | Works, but less integrated |
python --version # Should be 3.11 or higherWe use uv for fast dependency management:
# Install uv (if you don't have it)
curl -LsSf https://astral.sh/uv/install.sh | shCreate a fresh folder for your pipeline and open it in Cursor (or your preferred agentic IDE):
mkdir my-dlt-pipeline
cd my-dlt-pipelineChoose the setup for your IDE:
Cursor - go to Settings → Tools & MCP → New MCP Server and add:
{
"mcpServers": {
"dlt": {
"command": "uv",
"args": [
"run",
"--with",
"dlt[duckdb]",
"--with",
"dlt-mcp[search]",
"python",
"-m",
"dlt_mcp"
]
}
}
}VS Code (Copilot) - create .vscode/mcp.json in your project folder:
{
"servers": {
"dlt": {
"command": "uv",
"args": [
"run",
"--with",
"dlt[duckdb]",
"--with",
"dlt-mcp[search]",
"python",
"-m",
"dlt_mcp"
]
}
}
}Claude Code - run in your terminal:
claude mcp add dlt -- uv run --with "dlt[duckdb]" --with "dlt-mcp[search]" python -m dlt_mcpThis enables the dlt MCP server, which gives the AI access to dlt documentation, code examples, and your pipeline metadata.
pip install "dlt[workspace]"dlt init dlthub:open_library duckdbThis scaffolds the pipeline files and configuration for Open Library. You now have everything you need to start prompting.
📖 Reference: Open Library Workspace Instructions
This is where the magic happens. The dlt init command scaffolds sample prompts you can use. Here's an example to get started:
Please generate a REST API Source for Open Library API, as specified in @open_library-docs.yaml
Start with endpoint(s) books and skip incremental loading for now.
Place the code in open_library_pipeline.py and name the pipeline open_library_pipeline.
If the file exists, use it as a starting point.
Do not add or modify any other files.
Use @dlt rest api as a tutorial.
After adding the endpoints, allow the user to run the pipeline with python open_library_pipeline.py and await further instructions.
Feel free to tweak the prompt based on your objective. The agent will:
- Generate the pipeline code
- Run the pipeline
- Load data into your local DuckDB database
All from a single prompt.
If there are any errors, paste them into the chat and let the AI resolve them. This is the power of AI-assisted development: you iterate quickly without getting stuck.
Once your pipeline runs successfully, launch the dashboard to inspect your data and metadata:
dlt pipeline open_library_pipeline showThis opens a web app where you can:
- View pipeline state and run history
- Explore schemas, tables, and columns
- Query the loaded data
- Debug any issues
📖 Reference: dlt Dashboard Documentation
With the dlt MCP server configured, you can ask the AI about your pipeline directly:
"What tables were created in the pipeline?"
"Show me the schema for the books table."
"How many rows were loaded?"
The agent has access to your pipeline metadata and can answer these questions.
Take your analysis further by creating interactive reports with marimo notebooks and ibis.
Prompt the agent to build a visualization:
"Create a marimo notebook that visualizes the top 10 authors by book count. Use ibis for data access. Reference: https://dlthub.com/docs/general-usage/dataset-access/marimo"
By providing the docs link, the agent will use the correct stack.
Run your notebook:
# Edit mode (for development)
marimo edit your_notebook.py
# Run mode (view the report)
marimo run your_notebook.py📖 Reference: Explore Data with marimo
You've seen me do it, now it's your turn!
See dlt_homework.md for instructions.
| Resource | Link |
|---|---|
| dlt Documentation | dlthub.com/docs |
| Open Library Workspace Guide | dlthub.com/workspace/source/open-library |
| dlt Dashboard Docs | dlthub.com/docs/general-usage/dashboard |
| marimo + dlt Guide | dlthub.com/docs/general-usage/dataset-access/marimo |
| Open Library API | openlibrary.org/developers/api |
Workshop by dltHub for the Data Engineering Zoomcamp 2026