Skip to main content
Glama

Skolverket MCP Server

README.md14.5 kB
# Skolverket MCP Server En [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server som ger LLMs fullständig tillgång till Skolverkets öppna API:er. Med denna server kan Claude och andra LLMs söka, läsa och analysera läroplaner, skolenheter, utbildningstillfällen, statistik och inspektionsrapporter. ## 🌟 Funktioner ### 🔧 MCP Capabilities (Ny i v2.1.0) #### 🛠️ Tools (27 verktyg) - **17 verktyg** för Läroplan API - **4 verktyg** för Skolenhetsregistret - **6 verktyg** för Planned Educations API #### 📚 Resources (4 resurser) - Ny i v2.1.0 Statiska datakällor för snabb kontextinläsning: - `skolverket://api/info` - API-information och metadata - `skolverket://school-types` - Kompletta skoltyper (aktiva + utgångna) - `skolverket://types-of-syllabus` - Läroplanstyper och kategorier - `skolverket://subject-course-codes` - Alla ämnes- och kurskoder #### 💡 Prompts (5 guider) - Ny i v2.1.0 Guidade arbetsflöden för vanliga uppgifter: - `analyze_course` - Steg-för-steg kursanalys - `compare_curriculum_versions` - Jämför läroplansversioner - `find_adult_education` - Hitta vuxenutbildningar - `plan_study_path` - Studievägledning för elever - `teacher_course_planning` - Kursplanering för lärare ### 📚 Läroplan API (Syllabus API) - Sök och hämta läroplaner (LGR11, GY11, etc.) - Ämnen och kurser med kunskapskrav - Gymnasieprogram med inriktningar och yrkesutfall - Versionshistorik för alla läroplaner ### 🏫 Skolenhetsregistret API - Sök efter skolenheter (skolor, förskolor, gymnasier) - Filtrera efter status (aktiva, nedlagda, vilande) - Hämta skolenhetskoder och grundläggande information ### 🎓 Planned Educations API - **Vuxenutbildning**: Yrkeshögskola, SFI, Komvux - **Utbildningstillfällen**: Planerade utbildningar med start-datum och platser - **Statistik**: Skolstatistik per enhet och kommun - **Kvalitetsdata**: Inspektionsrapporter och skolenkäter - **Stöddata**: Utbildningsområden och inriktningar ## Installation ### Snabbstart med npx (rekommenderat) ```json { "mcpServers": { "skolverket": { "command": "npx", "args": ["-y", "skolverket-mcp"] } } } ``` ### Installation via npm ```bash npm install -g skolverket-mcp ``` Lägg sedan till i Claude Desktop config: ```json { "mcpServers": { "skolverket": { "command": "skolverket-mcp" } } } ``` ### Manuell installation från källkod ```bash git clone https://github.com/KSAklfszf921/skolverket-syllabus-mcp.git cd skolverket-syllabus-mcp npm install npm run build ``` Lägg till i Claude Desktop config: ```json { "mcpServers": { "skolverket": { "command": "node", "args": ["/sökväg/till/skolverket-syllabus-mcp/dist/index.js"] } } } ``` ## Användning ### Konfigurera Claude Desktop 1. Öppna Claude Desktop 2. Gå till inställningar (Settings) 3. Navigera till "Developer" → "Edit Config" 4. Lägg till server-konfigurationen ovan 5. Starta om Claude Desktop ## 📋 Alla Verktyg ### Läroplan API (17 verktyg) #### Ämnen - `search_subjects` - Sök ämnen med filter - `get_subject_details` - Hämta fullständig ämnesinformation - `get_subject_versions` - Se historiska versioner #### Kurser - `search_courses` - Sök kurser med omfattande filter - `get_course_details` - Detaljerad kursinformation med kunskapskrav - `get_course_versions` - Historiska kursversioner #### Program - `search_programs` - Sök gymnasieprogram - `get_program_details` - Programinformation med inriktningar - `get_program_versions` - Programversioner över tid #### Läroplaner - `search_curriculums` - Sök läroplaner (LGR11, GY11, etc.) - `get_curriculum_details` - Fullständig läroplan - `get_curriculum_versions` - Läroplansversioner #### Stöddata - `get_school_types` - Lista skoltyper - `get_types_of_syllabus` - Lista läroplanstyper - `get_subject_and_course_codes` - Alla ämnes- och kurskoder - `get_study_path_codes` - Studievägskodar - `get_api_info` - API-information ### Skolenhetsregistret API (4 verktyg) - `search_school_units` - Sök skolenheter med filter - `get_school_unit_details` - Hämta skolenhetsdetaljer - `get_school_units_by_status` - Filtrera efter status - `search_school_units_by_name` - Sök efter namn ### Planned Educations API (6 verktyg) #### Vuxenutbildning - `search_adult_education` - Sök vuxenutbildningar (YH, SFI, Komvux) - `get_adult_education_details` - Detaljerad utbildningsinformation - `filter_adult_education_by_distance` - Filtrera distans/campus - `filter_adult_education_by_pace` - Filtrera efter studietakt #### Stöddata - `get_education_areas` - Hämta utbildningsområden - `get_directions` - Hämta inriktningar ## 💡 Användningsexempel ### För Elever och Föräldrar **"Vilka yrkeshögskoleutbildningar inom IT finns i Stockholm som startar i höst?"** ``` Använder: search_adult_education Resultat: Lista över YH-utbildningar med startdatum och antagning ``` **"Vad är kunskapskraven för betyget E i Matematik 1c?"** ``` Använder: get_course_details med kod "MATMAT01c" Resultat: Fullständiga kunskapskrav för alla betyg ``` ### För Lärare **"Visa centralt innehåll för Svenska 2 på gymnasiet"** ``` Använder: get_course_details Resultat: Detaljerat centralt innehåll strukturerat per område ``` **"Hitta alla aktiva skolor i Göteborg"** ``` Använder: search_school_units med filter Resultat: Lista över aktiva skolenheter ``` ### För Studie- och Yrkesvägledare **"Vilka inriktningar finns på Naturvetenskapsprogrammet?"** ``` Använder: get_program_details med kod "NA" Resultat: Inriktningar, profiler och yrkesutfall ``` **"Visa alla SFI-kurser med låg studietakt i Uppsala"** ``` Använder: search_adult_education med filter Resultat: SFI-utbildningar anpassade för sökkriterierna ``` ### För Forskare och Administratörer **"Hur har läroplanen för matematik förändrats mellan 2011 och 2022?"** ``` Använder: get_subject_versions + get_subject_details Resultat: Jämförelse mellan olika versioner ``` **"Vilka skolor har lagts ner i Stockholms län de senaste åren?"** ``` Använder: get_school_units_by_status med status "UPPHORT" Resultat: Lista över nedlagda skolenheter ``` ## 🔑 Vanliga Koder och Termer ### Skoltyper - `GR` - Grundskolan - `GY` - Gymnasieskolan - `VUX` - Vuxenutbildning - `GRSÄR` - Grundsärskolan - `GYSÄR` - Gymnasiesärskolan ### Utbildningsformer (typeOfSchool) - `yh` - Yrkeshögskola - `sfi` - SFI (Svenska för invandrare) - `komvuxgycourses` - Komvux gymnasiekurser - `komvuxbasiccourses` - Komvux grundläggande kurser ### Exempel på Koder - **Kurser**: `MATMAT01c` (Matematik 1c), `SVESVE01` (Svenska 1) - **Ämnen**: `GRGRMAT01` (Matematik grundskola) - **Program**: `NA` (Naturvetenskap), `TE` (Teknik), `EK` (Ekonomi) - **Läroplaner**: `LGR11` (Läroplan för grundskolan 2011), `GY11` (Gymnasiet 2011) ## 🏗️ Teknisk Information ### Arkitektur ``` skolverket-mcp/ ├── src/ │ ├── index.ts # Huvudserver med Resources & Prompts │ ├── errors.ts # Custom error classes (ny i v2.1.0) │ ├── logger.ts # Winston logging (ny i v2.1.0) │ ├── cache.ts # In-memory cache (ny i v2.1.0) │ ├── validator.ts # Zod validation (ny i v2.1.0) │ ├── api/ │ │ ├── base-client.ts # HTTP-klient med rate limiting & caching │ │ ├── syllabus-client.ts # Läroplan API │ │ ├── school-units-client.ts # Skolenheter API │ │ └── planned-education-client.ts # Planned Educations API │ ├── tools/ │ │ ├── syllabus/ # Läroplanverktyg (17 st) │ │ ├── school-units/ # Skolenhetsverktyg (4 st) │ │ └── planned-education/ # Utbildningsverktyg (6 st) │ └── types/ │ ├── syllabus.ts # Läroplantyper │ ├── school-units.ts # Skolenhetstyper │ └── planned-education.ts # Utbildningstyper ├── dist/ # Kompilerad JavaScript ├── logs/ # Log-filer (ny i v2.1.0) │ ├── combined.log # Alla loggar │ ├── error.log # Endast errors │ ├── exceptions.log # Uncaught exceptions │ └── rejections.log # Unhandled promise rejections ├── package.json ├── tsconfig.json └── README.md ``` ### Byggd med - `@modelcontextprotocol/sdk` - MCP SDK - `axios` - HTTP-klient - `zod` - Schema-validering och runtime validation - `winston` - Strukturerad logging (ny i v2.1.0) - `p-limit` - Rate limiting och concurrency control (ny i v2.1.0) - TypeScript - Type-säkerhet ### Nya Funktioner i v2.1.0 #### 🔍 Strukturerad Logging - Winston-baserad logging med filrotation - Separata loggar för errors och kombinerad output - Automatisk loggning av alla API-anrop - Debug-läge med detaljerad information #### 💾 Intelligent Caching - In-memory cache med TTL (Time To Live) - Automatisk cache-rensning var 5:e minut - Statisk data cachas i 24 timmar - Cache-statistik tillgänglig via logger #### 🚦 Rate Limiting - Max 5 samtidiga API-anrop per klient - Automatisk kö-hantering med p-limit - Förhindrar API rate limiting - Optimerad prestanda #### ✅ Runtime Validation - Zod-baserad input-validering - Tydliga felmeddelanden på svenska - Återanvändbara valideringsscheman - Type-safe validering #### 🎯 Custom Error Handling - Hierarkisk error-struktur - SkolverketApiError för API-fel - ValidationError för input-fel - ResourceNotFoundError för saknade resurser - RateLimitError med retry-information ### API-dokumentation Servern använder följande Skolverket API:er: - **Läroplan API**: `https://api.skolverket.se/syllabus` - **Skolenhetsregistret**: `https://api.skolverket.se/skolenhetsregistret/v2` - **Planned Educations**: `https://api.skolverket.se/planned-educations` (v4) ## 🎯 Use Cases ### Lärare - Kursplanering med centralt innehåll - Bedömning med kunskapskrav - Tematiskt arbete över ämnen - Hitta närliggande skolenheter ### Elever - Kursval och programval - Förstå kunskapskrav och betyg - Hitta vuxenutbildningar och vidareutbildning - Söka yrkeshögskoleutbildningar ### Studie- och Yrkesvägledare - Programinformation med yrkesutfall - Vägledning om vidareutbildning - Sök utbildningstillfällen med filter - Jämför utbildningsalternativ ### Utbildningsadministratörer - Läroplansförändringar över tid - Kursutbud och planering - Skolenhetsregister och status - Statistik och kvalitetsdata ### Forskare - Analys av läroplaner - Historisk utveckling - Skolenkätsdata - Inspektionsrapporter ## 🆕 Version 2.1.0 - Nyheter ### 🎯 Nya MCP Capabilities ✅ **Resources** - 4 statiska resurser för snabb kontextinläsning ✅ **Prompts** - 5 guidade arbetsflöden för vanliga uppgifter ✅ **Förbättrade Tools** - Alla 27 verktyg har utökade beskrivningar med use cases ### 🔧 Nya Funktioner ✅ **Strukturerad Logging** - Winston-baserad logging med filrotation ✅ **Intelligent Caching** - In-memory cache med TTL och automatisk rensning ✅ **Rate Limiting** - Max 5 samtidiga API-anrop med p-limit ✅ **Runtime Validation** - Zod-baserad input-validering med svenska felmeddelanden ✅ **Custom Error Handling** - Hierarkisk error-struktur för bättre felhantering ### 📚 Resources - `skolverket://api/info` - API-information - `skolverket://school-types` - Skoltyper - `skolverket://types-of-syllabus` - Läroplanstyper - `skolverket://subject-course-codes` - Ämnes- och kurskoder ### 💡 Prompts - `analyze_course` - Kursanalys - `compare_curriculum_versions` - Versionsjämförelse - `find_adult_education` - Hitta vuxenutbildningar - `plan_study_path` - Studievägledning - `teacher_course_planning` - Kursplanering ## Utveckling ### Krav - Node.js 18 eller senare - npm 9 eller senare ### Bygg projektet ```bash npm install npm run build ``` ### Utvecklingsläge ```bash npm run dev ``` ### Testning lokalt ```bash npx @modelcontextprotocol/inspector node dist/index.js ``` ## Bidra Bidrag är välkomna! För att bidra: 1. Forka projektet 2. Skapa en feature branch (`git checkout -b feature/amazing-feature`) 3. Commita dina ändringar (`git commit -m 'Add amazing feature'`) 4. Pusha till branchen (`git push origin feature/amazing-feature`) 5. Öppna en Pull Request ## Licens MIT License - se [LICENSE](LICENSE) för detaljer. ## Attribution Data kommer från Skolverkets öppna API:er. Denna MCP server är inte officiellt associerad med Skolverket. ## Support För bugrapporter och feature requests, öppna ett issue på GitHub: https://github.com/KSAklfszf921/skolverket-syllabus-mcp/issues ## Changelog ### v2.1.0 (2025-10-30) - ✨ **KRITISKT**: Resources-support med 4 statiska URI:er - ✨ **KRITISKT**: Prompts-support med 5 guidade arbetsflöden - ✨ **VIKTIGT**: Strukturerad logging med Winston (filrotation, JSON-format) - ✨ **VIKTIGT**: Intelligent caching med TTL och automatisk rensning - ✨ **VIKTIGT**: Rate limiting med p-limit (max 5 samtidiga anrop) - ✨ **VIKTIGT**: Runtime validation med Zod och svenska felmeddelanden - ✨ **VIKTIGT**: Custom error classes (SkolverketApiError, ValidationError, etc.) - 🔧 Förbättrade tool-beskrivningar med ANVÄNDNINGSFALL, RETURNERAR, EXEMPEL - 🔧 Uppdaterad capabilities declaration (tools, resources, prompts, logging) - 📝 Omfattande dokumentation av alla nya funktioner ### v2.0.0 (2025-01-20) - ✨ Ny: Integration med Skolenhetsregistret API - ✨ Ny: Integration med Planned Educations API - ✨ Ny: 10 nya verktyg för vuxenutbildning och skolenheter - 🔧 Refaktorerad kodstruktur för bättre modularitet - 🔧 Delad base HTTP-klient för alla API:er - 📝 Uppdaterad dokumentation och exempel ### v1.0.0 (2025-01-20) - 🎉 Initial release - 17 verktyg för Läroplan API - Stöd för ämnen, kurser, program och läroplaner - Versionshantering och historiska läroplaner ## Relaterade Projekt - [Model Context Protocol](https://modelcontextprotocol.io/) - [Skolverkets API-dokumentation](https://api.skolverket.se/) - [Claude Desktop](https://claude.ai/download) ## Författare Skapat för att göra svensk utbildningsdata mer tillgänglig via LLMs.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KSAklfszf921/skolverket-syllabus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server