Skip to main content
Glama

Skolverket MCP Server

search.ts4.59 kB
/** * Verktyg för att söka och filtrera skolenheter */ import { z } from 'zod'; import { schoolUnitsApi } from '../../api/school-units-client.js'; // Zod-scheman för validering export const searchSchoolUnitsSchema = { name: z.string().optional().describe('Sök efter skolenhet med namn (delmatchning)'), status: z.enum(['AKTIV', 'UPPHORT', 'VILANDE']).optional().describe('Filtrera på status (AKTIV, UPPHORT, VILANDE)'), limit: z.number().optional().default(50).describe('Maximalt antal resultat att returnera') }; export const getSchoolUnitDetailsSchema = { code: z.string().describe('Skolenhetskod (t.ex. "29824923")') }; export const getSchoolUnitsByStatusSchema = { status: z.enum(['AKTIV', 'UPPHORT', 'VILANDE']).describe('Status att filtrera på'), limit: z.number().optional().default(50).describe('Maximalt antal resultat att returnera') }; export const searchSchoolUnitsByNameSchema = { name: z.string().describe('Namn eller del av namn att söka efter'), limit: z.number().optional().default(50).describe('Maximalt antal resultat att returnera') }; // Verktygsimplementationer export async function searchSchoolUnits(params: { name?: string; status?: 'AKTIV' | 'UPPHORT' | 'VILANDE'; limit?: number; }) { try { const units = await schoolUnitsApi.searchSchoolUnits({ name: params.name, status: params.status }); // Begränsa antal resultat const limitedUnits = params.limit ? units.slice(0, params.limit) : units.slice(0, 50); return { content: [ { type: 'text' as const, text: JSON.stringify({ totalFound: units.length, showing: limitedUnits.length, schoolUnits: limitedUnits }, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text' as const, text: `Fel vid sökning av skolenheter: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } export async function getSchoolUnitDetails(params: { code: string; }) { try { const unit = await schoolUnitsApi.getSchoolUnit(params.code); if (!unit) { return { content: [ { type: 'text' as const, text: `Ingen skolenhet hittades med kod: ${params.code}` } ], isError: true }; } return { content: [ { type: 'text' as const, text: JSON.stringify(unit, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text' as const, text: `Fel vid hämtning av skolenhet: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } export async function getSchoolUnitsByStatus(params: { status: 'AKTIV' | 'UPPHORT' | 'VILANDE'; limit?: number; }) { try { const units = await schoolUnitsApi.getSchoolUnitsByStatus(params.status); // Begränsa antal resultat const limitedUnits = params.limit ? units.slice(0, params.limit) : units.slice(0, 50); return { content: [ { type: 'text' as const, text: JSON.stringify({ status: params.status, totalFound: units.length, showing: limitedUnits.length, schoolUnits: limitedUnits }, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text' as const, text: `Fel vid hämtning av skolenheter efter status: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } export async function searchSchoolUnitsByName(params: { name: string; limit?: number; }) { try { const units = await schoolUnitsApi.searchSchoolUnitsByName(params.name); // Begränsa antal resultat const limitedUnits = params.limit ? units.slice(0, params.limit) : units.slice(0, 50); return { content: [ { type: 'text' as const, text: JSON.stringify({ searchTerm: params.name, totalFound: units.length, showing: limitedUnits.length, schoolUnits: limitedUnits }, null, 2) } ] }; } catch (error) { return { content: [ { type: 'text' as const, text: `Fel vid sökning av skolenheter efter namn: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } }

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