CI / build-and-test (push) Canceled after 0s
Nutzer-Feedback aus echtem Live-Test der neuen Untis-MCP-Tools: groupId ist ueberall Pflichtparameter (get_grades, get_schedule, get_lesson_plans, get_untis_absence_rows, ...), war aber nirgends ueber MCP auflösbar - ein KI-Client kannte bestenfalls den Klarnamen einer Lerngruppe, nie ihre Id. - Neues GroupTools.cs mit get_groups (Read): listet Lerngruppen mit Id/Name/Typ/Schuljahr/ Klassenstufe/SubjectId/IsActive, optional nach Schuljahr gefiltert. - UntisHubStatusRowDto liefert zusaetzlich GroupId mit (null bei den drei dashboard-weiten Zeilen), damit fuer eine dort gelistete Gruppe nicht zusaetzlich get_groups noetig ist. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
1.4 KiB
C#
24 lines
1.4 KiB
C#
using System.ComponentModel;
|
|
using LehrerApp.Core.Interfaces;
|
|
|
|
namespace LehrerApp.Desktop.Services.Mcp.Tools;
|
|
|
|
/// <summary>MCP-Read-Tool "get_groups" (Nutzer-Nachtrag: die GroupId, die praktisch jedes andere
|
|
/// Tool als Pflichtparameter verlangt - get_grades, get_schedule, get_lesson_plans,
|
|
/// get_untis_absence_rows usw. - war nirgends über MCP auflösbar; ein KI-Client kannte bestenfalls
|
|
/// den Klarnamen einer Lerngruppe aus dem Gespräch, nie ihre Id). Reiner Lesezugriff auf das
|
|
/// bestehende Repository, keine eigene Datenzugriffslogik.</summary>
|
|
public class GroupTools(IGroupRepository groups)
|
|
{
|
|
[Description("Listet Lerngruppen (Klassen/Kurse) mit ihrer Id - Voraussetzung, um andere Tools (z.B. get_grades, get_schedule, get_untis_absence_rows) für eine bestimmte Gruppe aufzurufen, wenn nur ihr Name bekannt ist. Ohne schoolYear werden alle Schuljahre zurückgegeben.")]
|
|
public List<GroupDto> GetGroups(
|
|
[Description("Optionales Schuljahr zum Filtern, Format \"2025/26\". Ohne Angabe alle Schuljahre.")] string? schoolYear = null,
|
|
[Description("Auch inaktive/archivierte Gruppen einbeziehen.")] bool includeInactive = false)
|
|
{
|
|
var list = schoolYear is null
|
|
? groups.GetAll(includeInactive)
|
|
: groups.GetBySchoolYear(schoolYear, includeInactive);
|
|
return list.Select(g => new GroupDto(g.Id, g.Name, g.Type, g.SchoolYear, g.GradeLevel, g.SubjectId, g.IsActive)).ToList();
|
|
}
|
|
}
|