fix: les
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
# Les 16: Model Context Protocol — Bouw je eigen MCP-server
|
||||
# Les 16: RAG + Embeddings — Praat met je documenten
|
||||
|
||||
> ✅ **Deze les is volledig uitgewerkt**
|
||||
|
||||
## Lesmateriaal
|
||||
|
||||
- [Slide Overzicht](../Les16-MCP/Les16-Slide-Overzicht.md)
|
||||
- [Docenttekst](../Les16-MCP/Les16-Docenttekst.md)
|
||||
- [Lesstof](../Les16-MCP/Les16-Lesstof.md)
|
||||
- [Lesopdracht](../Les16-MCP/Les16-Lesopdracht.md)
|
||||
- [Huiswerk](../Les16-MCP/Les16-Huiswerk.md)
|
||||
- [Slide Overzicht](../Les16-RAG-Embeddings/Les16-Slide-Overzicht.md)
|
||||
- [Docenttekst](../Les16-RAG-Embeddings/Les16-Docenttekst.md)
|
||||
- [Lesstof](../Les16-RAG-Embeddings/Les16-Lesstof.md)
|
||||
- [Lesopdracht](../Les16-RAG-Embeddings/Les16-Lesopdracht.md)
|
||||
- [Huiswerk](../Les16-RAG-Embeddings/Les16-Huiswerk.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -16,65 +16,64 @@
|
||||
**Deel 3 — AI Development** (Les 11-16)
|
||||
|
||||
## Beschrijving
|
||||
MCP (Model Context Protocol) is de open standaard waarmee Anthropic, OpenAI en de community AI-clients koppelen aan tools en data. We bouwen een eigen MCP-server voor Polderfest-data en laden hem in Cursor én Claude Desktop.
|
||||
Hoe laat je een LLM antwoorden op basis van documenten die hij nooit heeft gezien? Antwoord: Retrieval-Augmented Generation (RAG). We bouwen een PDF Q&A-app from scratch met embeddings, vector search (pgvector) en context-injectie.
|
||||
|
||||
---
|
||||
|
||||
## Te Behandelen
|
||||
|
||||
### Theorie
|
||||
- Wat is MCP en waarom bestaat het?
|
||||
- Het probleem: tools zitten nu vast aan één app
|
||||
- MCP-architectuur: server, client, transport (stdio, HTTP)
|
||||
- Tools vs. Resources vs. Prompts
|
||||
- Bestaande MCP-ecosysteem (filesystem, git, Slack, GitHub)
|
||||
- MCP vs. Tool Calling — wanneer welke?
|
||||
- Het probleem: LLM kent jouw documenten niet
|
||||
- Twee oplossingen: alles meesturen vs. RAG
|
||||
- Wat zijn embeddings? (vectoren, semantische gelijkenis)
|
||||
- pgvector in Supabase: tabel-setup + index
|
||||
- De RAG-loop: chunk → embed → store → query → retrieve → answer
|
||||
- Limieten en valkuilen (chunking, recall vs. precision)
|
||||
|
||||
### Live demo's
|
||||
1. MCP SDK installeren + eerste server met 1 tool
|
||||
2. Server laden in Cursor + in Claude Desktop
|
||||
3. Eigen Polderfest MCP-server (search, stats, schedule)
|
||||
4. Resources en Prompts toevoegen
|
||||
5. Server publiceren op npm
|
||||
1. Nieuwe Next.js-app + Supabase met pgvector
|
||||
2. PDF parsen + chunking strategie
|
||||
3. Embeddings genereren via OpenAI `text-embedding-3-small`
|
||||
4. Vector-search route + top-K retrieval
|
||||
5. Chat-interface met context-injectie
|
||||
|
||||
---
|
||||
|
||||
## Tools
|
||||
- `@modelcontextprotocol/sdk` (TypeScript)
|
||||
- Cursor (`.cursor/mcp.json`)
|
||||
- Claude Desktop (`claude_desktop_config.json`)
|
||||
- Node.js + TypeScript
|
||||
- Vercel AI SDK v6
|
||||
- Supabase + pgvector extension
|
||||
- OpenAI embeddings API
|
||||
- pdf-parse / unpdf voor PDF-extractie
|
||||
|
||||
---
|
||||
|
||||
## Lesopdracht (in-class, 60 min)
|
||||
|
||||
Studenten kijken mee. In-class oefening:
|
||||
- Clone de Polderfest MCP-starter
|
||||
- Voeg een eigen tool toe (`getBandByCountry`)
|
||||
- Laad de server in Cursor of Claude Desktop
|
||||
- Test of de AI je tool vindt en gebruikt
|
||||
Studenten kijken klassikaal mee. In-class oefening:
|
||||
- Upload een eigen PDF in de demo-app
|
||||
- Stel 5 vragen — beoordeel de antwoorden
|
||||
- Probeer een vraag die NIET in de PDF staat: wat gebeurt er?
|
||||
|
||||
**Inleveren:** Screenshot van werkende MCP-tool in Cursor/Claude.
|
||||
**Inleveren:** Screenshot van Q&A-sessie + reflectie 1 alinea.
|
||||
|
||||
---
|
||||
|
||||
## Huiswerk (take-home)
|
||||
|
||||
Bouw een MCP-server voor je eigen domein:
|
||||
- Minimaal 3 tools
|
||||
- 1 resource (bijv. een doc-bestand)
|
||||
- 1 prompt-template
|
||||
- README met installatie-instructies voor Cursor
|
||||
Bouw een eigen RAG-app:
|
||||
- Eigen dataset (handleidingen, notities, eigen blog)
|
||||
- Werkende vector-search met pgvector
|
||||
- Chat-UI met source-attribution (welke chunks gebruikt?)
|
||||
- Deploy naar Vercel
|
||||
|
||||
**Inleveren:** GitHub URL via Teams.
|
||||
**Inleveren:** GitHub + Vercel URL.
|
||||
|
||||
---
|
||||
|
||||
## Leerdoelen
|
||||
Na deze les kan de student:
|
||||
- MCP uitleggen aan een collega (waarom + hoe)
|
||||
- Een eigen MCP-server opzetten met de TypeScript SDK
|
||||
- Een server laden in Cursor en/of Claude Desktop
|
||||
- Het verschil tussen Tool, Resource en Prompt benoemen
|
||||
- Bepalen wanneer een MCP-server vs. inline tool calling past
|
||||
- Het RAG-pattern uitleggen aan een collega
|
||||
- pgvector configureren in Supabase
|
||||
- PDF-content chunken en embedden
|
||||
- Een werkende vector-search query schrijven
|
||||
- Bepalen wanneer RAG vs. alles-meesturen vs. fine-tuning past
|
||||
|
||||
Reference in New Issue
Block a user