@dpesch/mantisbt-mcp-server 1.14.1 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/README.de.md +123 -33
- package/README.md +123 -33
- package/dist/client.js +4 -0
- package/dist/coerce.js +8 -0
- package/dist/config.js +5 -2
- package/dist/deprecation.js +9 -0
- package/dist/index.js +20 -31
- package/dist/issue-enrich.js +23 -0
- package/dist/issue-envelope.js +4 -0
- package/dist/prompts/index.js +4 -4
- package/dist/resources/index.js +4 -8
- package/dist/search/embedder.js +83 -34
- package/dist/search/index.js +9 -7
- package/dist/search/lexical.js +88 -0
- package/dist/search/store.js +44 -3
- package/dist/search/sync.js +26 -15
- package/dist/search/tools.js +23 -22
- package/dist/tools/config.js +9 -4
- package/dist/tools/files.js +12 -5
- package/dist/tools/index.js +34 -0
- package/dist/tools/issues.js +285 -147
- package/dist/tools/metadata.js +99 -40
- package/dist/tools/monitors.js +145 -20
- package/dist/tools/notes.js +67 -9
- package/dist/tools/project-versions.js +40 -18
- package/dist/tools/projects.js +109 -37
- package/dist/tools/users.js +3 -1
- package/dist/tools/version.js +61 -35
- package/dist/toolsets.js +104 -0
- package/docs/cookbook.de.md +604 -183
- package/docs/cookbook.md +604 -183
- package/docs/examples.de.md +37 -3
- package/docs/examples.md +37 -3
- package/package.json +3 -1
- package/server.json +2 -2
package/docs/cookbook.de.md
CHANGED
|
@@ -6,10 +6,10 @@ Tool-orientierte Rezepte für den MantisBT MCP Server – jedes Rezept zeigt gen
|
|
|
6
6
|
|
|
7
7
|
- [Verbindung einrichten](#verbindung-einrichten)
|
|
8
8
|
- [Installation ohne URL-Rewriting anbinden](#installation-ohne-url-rewriting-anbinden)
|
|
9
|
+
- [Nur bestimmte Tool-Gruppen anbieten](#nur-bestimmte-tool-gruppen-anbieten)
|
|
9
10
|
- [Die eigene Instanz erkunden](#die-eigene-instanz-erkunden)
|
|
10
11
|
- [Alle Projekte abrufen](#alle-projekte-abrufen)
|
|
11
|
-
- [Gültige Enum-Werte ermitteln
|
|
12
|
-
- [Gültige Feldnamen für `select` ermitteln](#gültige-feldnamen-für-select-ermitteln)
|
|
12
|
+
- [Gültige select-Felder und Enum-Werte ermitteln](#gültige-select-felder-und-enum-werte-ermitteln)
|
|
13
13
|
- [Issues](#issues)
|
|
14
14
|
- [Einzelnes Issue abrufen](#einzelnes-issue-abrufen)
|
|
15
15
|
- [Mehrere Issues in einem Aufruf abrufen](#mehrere-issues-in-einem-aufruf-abrufen)
|
|
@@ -18,6 +18,7 @@ Tool-orientierte Rezepte für den MantisBT MCP Server – jedes Rezept zeigt gen
|
|
|
18
18
|
- [Nach Status filtern](#nach-status-filtern)
|
|
19
19
|
- [Nach Bearbeiter oder Melder filtern](#nach-bearbeiter-oder-melder-filtern)
|
|
20
20
|
- [Gespeicherten Filter anwenden](#gespeicherten-filter-anwenden)
|
|
21
|
+
- [Issues je Status, Bearbeiter, Priorität oder Kategorie zählen](#issues-je-status-bearbeiter-priorität-oder-kategorie-zählen)
|
|
21
22
|
- [Issue erstellen](#issue-erstellen)
|
|
22
23
|
- [Issue schließen (Status + Auflösung)](#issue-schließen-status--auflösung)
|
|
23
24
|
- [Issue auflösen mit Begründungs-Notiz (ein Aufruf)](#issue-auflösen-mit-begründungs-notiz-ein-aufruf)
|
|
@@ -25,9 +26,11 @@ Tool-orientierte Rezepte für den MantisBT MCP Server – jedes Rezept zeigt gen
|
|
|
25
26
|
- [Issue neu zuweisen](#issue-neu-zuweisen)
|
|
26
27
|
- [Fix-Version setzen](#fix-version-setzen)
|
|
27
28
|
- [Notizen](#notizen)
|
|
29
|
+
- [Notizen eines Issues abrufen](#notizen-eines-issues-abrufen)
|
|
28
30
|
- [Öffentliche Notiz hinzufügen](#öffentliche-notiz-hinzufügen)
|
|
29
31
|
- [Private Notiz hinzufügen](#private-notiz-hinzufügen)
|
|
30
32
|
- [Notiz löschen](#notiz-löschen)
|
|
33
|
+
- [Notiz ändern](#notiz-ändern)
|
|
31
34
|
- [Dateianhänge](#dateianhänge)
|
|
32
35
|
- [Lokale Datei hochladen](#lokale-datei-hochladen)
|
|
33
36
|
- [Dateiinhalt hochladen (Base64)](#dateiinhalt-hochladen-base64)
|
|
@@ -41,8 +44,9 @@ Tool-orientierte Rezepte für den MantisBT MCP Server – jedes Rezept zeigt gen
|
|
|
41
44
|
- [Tags per Name anhängen](#tags-per-name-anhängen)
|
|
42
45
|
- [Tag entfernen](#tag-entfernen)
|
|
43
46
|
- [Monitore (Beobachter)](#monitore-beobachter)
|
|
44
|
-
- [Beobachter
|
|
45
|
-
- [Beobachter
|
|
47
|
+
- [Beobachter via update_issue ändern](#beobachter-via-update_issue-ändern)
|
|
48
|
+
- [Beobachter hinzufügen (veraltet)](#beobachter-hinzufügen-veraltet)
|
|
49
|
+
- [Beobachter entfernen (veraltet)](#beobachter-entfernen-veraltet)
|
|
46
50
|
- [Semantische Suche](#semantische-suche)
|
|
47
51
|
- [Initialen Index aufbauen](#initialen-index-aufbauen)
|
|
48
52
|
- [Inkrementelles Index-Update](#inkrementelles-index-update)
|
|
@@ -50,18 +54,19 @@ Tool-orientierte Rezepte für den MantisBT MCP Server – jedes Rezept zeigt gen
|
|
|
50
54
|
- [Nach Bedeutung suchen](#nach-bedeutung-suchen)
|
|
51
55
|
- [Suche mit Felderweiterung](#suche-mit-felderweiterung)
|
|
52
56
|
- [Projekte & Kategorien](#projekte--kategorien)
|
|
57
|
+
- [Projekt mit Kategorien, Nutzern und Versionen abrufen](#projekt-mit-kategorien-nutzern-und-versionen-abrufen)
|
|
53
58
|
- [Projektkategorien auflisten](#projektkategorien-auflisten)
|
|
54
59
|
- [Projektmitglied suchen](#projektmitglied-suchen)
|
|
55
60
|
- [Projektversion erstellen](#projektversion-erstellen)
|
|
56
61
|
- [Projektversion aktualisieren](#projektversion-aktualisieren)
|
|
57
|
-
- [Version freigeben und nächsten Bugfix-Platzhalter erstellen](#version-freigeben-und-nächsten-bugfix-platzhalter-erstellen)
|
|
62
|
+
- [Version freigeben und nächsten Bugfix-Platzhalter erstellen (veraltet)](#version-freigeben-und-nächsten-bugfix-platzhalter-erstellen-veraltet)
|
|
58
63
|
- [Projektversion löschen](#projektversion-löschen)
|
|
59
64
|
- [Metadaten](#metadaten)
|
|
60
65
|
- [Metadaten-Zusammenfassung abrufen](#metadaten-zusammenfassung-abrufen)
|
|
66
|
+
- [Metadaten-Cache aktualisieren](#metadaten-cache-aktualisieren)
|
|
61
67
|
- [Vollständigen Metadaten-Cache abrufen](#vollständigen-metadaten-cache-abrufen)
|
|
62
68
|
- [Version & Diagnose](#version--diagnose)
|
|
63
|
-
- [MCP-Server
|
|
64
|
-
- [MantisBT-Version abrufen](#mantisbt-version-abrufen)
|
|
69
|
+
- [Versionen abrufen (MCP-Server und MantisBT)](#versionen-abrufen-mcp-server-und-mantisbt)
|
|
65
70
|
- [Aktuellen Benutzer abrufen](#aktuellen-benutzer-abrufen)
|
|
66
71
|
- [Ressourcen](#ressourcen)
|
|
67
72
|
- [Eigenes Benutzerprofil lesen](#eigenes-benutzerprofil-lesen)
|
|
@@ -109,42 +114,52 @@ Manche MantisBT-Installationen liefern die REST-API ausschließlich über ihren
|
|
|
109
114
|
|
|
110
115
|
Endet `MANTIS_BASE_URL` auf `/api/rest/index.php`, wird das index.php-Routing automatisch aktiviert. Ein explizit gesetztes `MANTIS_USE_INDEX_PHP` hat immer Vorrang vor der Erkennung – steht es zusammen mit einer solchen URL auf `false`, wird das normale `/api/rest/`-Routing erzwungen und eine Warnung auf stderr ausgegeben.
|
|
111
116
|
|
|
112
|
-
**Prüfen:** `
|
|
117
|
+
**Prüfen:** `get_version` aufrufen. Kommt eine Antwort zurück, stimmt das Routing.
|
|
113
118
|
|
|
114
119
|
---
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Alle Projekte abrufen
|
|
121
|
+
### Nur bestimmte Tool-Gruppen anbieten
|
|
119
122
|
|
|
120
|
-
|
|
123
|
+
Standardmäßig sind alle 41 Tools aktiv (Suche deaktiviert). Mit `MANTIS_TOOLSETS` lassen sich nur die benötigten Gruppen laden – das hält den Kontext des Modells kürzer. Mit `MANTIS_DISABLE_DESTRUCTIVE=true` werden alle destruktiven Tools ausgeblendet, unabhängig von den aktiven Gruppen.
|
|
121
124
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
**Parameter:** _(keine)_
|
|
125
|
+
Gültige Gruppennamen: `issues`, `notes`, `links`, `files`, `projects`, `versions`, `meta`, `search`. Ein unbekannter Name stoppt den Server beim Start mit einer Meldung, die die gültigen Namen auflistet. Veraltete Tools gehören immer zur gleichen Gruppe wie ihr Ersatz. Die vollständige Zuordnung von Gruppe zu Tools findet sich unter [Angebotene Tools einschränken im README](../README.de.md#angebotene-tools-einschränken).
|
|
125
126
|
|
|
126
|
-
**
|
|
127
|
+
**Beispiel A – Triage-Setup** (`issues`, `notes`, `meta`; keine destruktiven Operationen):
|
|
127
128
|
|
|
128
129
|
```json
|
|
129
|
-
{
|
|
130
|
+
{
|
|
131
|
+
"env": {
|
|
132
|
+
"MANTIS_BASE_URL": "https://mantis.example.com",
|
|
133
|
+
"MANTIS_API_KEY": "dein-api-token",
|
|
134
|
+
"MANTIS_TOOLSETS": "issues,notes,meta",
|
|
135
|
+
"MANTIS_DISABLE_DESTRUCTIVE": "true"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
130
138
|
```
|
|
131
139
|
|
|
132
|
-
**
|
|
140
|
+
**Beispiel B – alle Gruppen, nur Löschschutz** (36 von 41 Standard-Tools):
|
|
133
141
|
|
|
134
142
|
```json
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
{
|
|
144
|
+
"env": {
|
|
145
|
+
"MANTIS_BASE_URL": "https://mantis.example.com",
|
|
146
|
+
"MANTIS_API_KEY": "dein-api-token",
|
|
147
|
+
"MANTIS_DISABLE_DESTRUCTIVE": "true"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
139
150
|
```
|
|
140
151
|
|
|
152
|
+
Die Gruppe `search` erfordert zusätzlich `MANTIS_SEARCH_ENABLED=true`. Fehlt `search` in `MANTIS_TOOLSETS`, wird das Such-Modul – Index, Embedding-Modell, Hintergrund-Sync – gar nicht gestartet, auch wenn `MANTIS_SEARCH_ENABLED=true` gesetzt ist.
|
|
153
|
+
|
|
141
154
|
---
|
|
142
155
|
|
|
143
|
-
|
|
156
|
+
## Die eigene Instanz erkunden
|
|
144
157
|
|
|
145
|
-
|
|
158
|
+
### Alle Projekte abrufen
|
|
146
159
|
|
|
147
|
-
|
|
160
|
+
Gibt die vollständige Liste der mit dem API-Key zugänglichen Projekte zurück.
|
|
161
|
+
|
|
162
|
+
**Tool:** `list_projects`
|
|
148
163
|
|
|
149
164
|
**Parameter:** _(keine)_
|
|
150
165
|
|
|
@@ -157,57 +172,27 @@ Gibt die auf der eigenen MantisBT-Instanz konfigurierten Enum-Werte zurück. Vor
|
|
|
157
172
|
**Response:**
|
|
158
173
|
|
|
159
174
|
```json
|
|
160
|
-
|
|
161
|
-
"
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
{ "id": 30, "name": "normal" },
|
|
165
|
-
{ "id": 40, "name": "high" },
|
|
166
|
-
{ "id": 50, "name": "urgent" },
|
|
167
|
-
{ "id": 60, "name": "immediate" }
|
|
168
|
-
],
|
|
169
|
-
"severities": [
|
|
170
|
-
{ "id": 10, "name": "feature" },
|
|
171
|
-
{ "id": 20, "name": "trivial" },
|
|
172
|
-
{ "id": 50, "name": "major" },
|
|
173
|
-
{ "id": 60, "name": "crash" }
|
|
174
|
-
// ...
|
|
175
|
-
],
|
|
176
|
-
"statuses": [
|
|
177
|
-
{ "id": 10, "name": "new" },
|
|
178
|
-
{ "id": 50, "name": "assigned" },
|
|
179
|
-
{ "id": 80, "name": "resolved" },
|
|
180
|
-
{ "id": 90, "name": "closed" }
|
|
181
|
-
// ...
|
|
182
|
-
],
|
|
183
|
-
"resolutions": [
|
|
184
|
-
{ "id": 10, "name": "open" },
|
|
185
|
-
{ "id": 20, "name": "fixed" },
|
|
186
|
-
{ "id": 60, "name": "duplicate" }
|
|
187
|
-
// ...
|
|
188
|
-
]
|
|
189
|
-
}
|
|
175
|
+
[
|
|
176
|
+
{ "id": 3, "name": "Webshop", "status": { "id": 10, "name": "development" }, "enabled": true },
|
|
177
|
+
{ "id": 5, "name": "Backend API", "status": { "id": 10, "name": "development" }, "enabled": true }
|
|
178
|
+
]
|
|
190
179
|
```
|
|
191
180
|
|
|
192
|
-
> **Hinweis:** Auf lokalisierten Instanzen liefert `get_issue_enums()` im Feld `name` den lokalisierten Begriff und optional im Feld `canonical_name` den englischen Originalnamen. `create_issue` akzeptiert **beides** – sowohl den kanonischen englischen Namen (z.B. `minor`) als auch den lokalisierten Namen (z.B. `Unschönheit`). Der Server löst den Wert automatisch auf.
|
|
193
|
-
|
|
194
181
|
---
|
|
195
182
|
|
|
196
|
-
### Gültige
|
|
183
|
+
### Gültige select-Felder und Enum-Werte ermitteln
|
|
197
184
|
|
|
198
|
-
Gibt
|
|
185
|
+
Gibt die gültigen `select`-Feldnamen und die Enum-Werte (severity, status, priority, resolution, reproducibility) für diesen MantisBT-Server in einem Aufruf zurück. Vor dem Aufbau eines `select`-Strings oder dem Setzen von Enum-Feldern in `create_issue` / `update_issue` aufrufen.
|
|
199
186
|
|
|
200
|
-
**Tool:** `
|
|
187
|
+
**Tool:** `get_issue_schema`
|
|
201
188
|
|
|
202
189
|
**Parameter:**
|
|
203
|
-
- `project_id` – _(optional)_ auf
|
|
190
|
+
- `project_id` – _(optional)_ Feldermittlung auf ein bestimmtes Projekt einschränken
|
|
204
191
|
|
|
205
192
|
**Request:**
|
|
206
193
|
|
|
207
194
|
```json
|
|
208
|
-
{
|
|
209
|
-
"project_id": 3
|
|
210
|
-
}
|
|
195
|
+
{}
|
|
211
196
|
```
|
|
212
197
|
|
|
213
198
|
**Response:**
|
|
@@ -221,10 +206,46 @@ Gibt alle Feldnamen zurück, die dem `select`-Parameter von `list_issues` überg
|
|
|
221
206
|
"severity", "status", "summary", "tags", "target_version",
|
|
222
207
|
"updated_at", "version", "view_state"
|
|
223
208
|
],
|
|
224
|
-
"
|
|
209
|
+
"fields_source": "live",
|
|
210
|
+
"enums": {
|
|
211
|
+
"severity": [
|
|
212
|
+
{ "id": 10, "name": "feature" },
|
|
213
|
+
{ "id": 20, "name": "trivial" },
|
|
214
|
+
{ "id": 50, "name": "major" },
|
|
215
|
+
{ "id": 60, "name": "crash" }
|
|
216
|
+
],
|
|
217
|
+
"status": [
|
|
218
|
+
{ "id": 10, "name": "new" },
|
|
219
|
+
{ "id": 50, "name": "assigned" },
|
|
220
|
+
{ "id": 80, "name": "resolved" },
|
|
221
|
+
{ "id": 90, "name": "closed" }
|
|
222
|
+
],
|
|
223
|
+
"priority": [
|
|
224
|
+
{ "id": 10, "name": "none" },
|
|
225
|
+
{ "id": 20, "name": "low" },
|
|
226
|
+
{ "id": 30, "name": "normal" },
|
|
227
|
+
{ "id": 40, "name": "high" },
|
|
228
|
+
{ "id": 50, "name": "urgent" },
|
|
229
|
+
{ "id": 60, "name": "immediate" }
|
|
230
|
+
],
|
|
231
|
+
"resolution": [
|
|
232
|
+
{ "id": 10, "name": "open" },
|
|
233
|
+
{ "id": 20, "name": "fixed" },
|
|
234
|
+
{ "id": 60, "name": "duplicate" }
|
|
235
|
+
],
|
|
236
|
+
"reproducibility": [
|
|
237
|
+
{ "id": 10, "name": "always" },
|
|
238
|
+
{ "id": 30, "name": "sometimes" },
|
|
239
|
+
{ "id": 70, "name": "have not tried" }
|
|
240
|
+
]
|
|
241
|
+
}
|
|
225
242
|
}
|
|
226
243
|
```
|
|
227
244
|
|
|
245
|
+
`fields_source` ist `"cache"`, `"live"` oder `"static"`. Auf lokalisierten Installationen kann jeder Enum-Eintrag ein `label` (lokalisiert) und einen `canonical_name` (englischer Standardname) enthalten. `create_issue` akzeptiert beides – kanonische englische Namen (z.B. `minor`) wie auch lokalisierte Namen; der Server löst den Wert automatisch auf.
|
|
246
|
+
|
|
247
|
+
> **Veraltet:** `get_issue_fields` (nur Felder) und `get_issue_enums` (nur Enums) werden durch `get_issue_schema` abgelöst – sie werden in 2.0.0 entfernt. Die Ressource `mantis://enums` bleibt erhalten.
|
|
248
|
+
|
|
228
249
|
---
|
|
229
250
|
|
|
230
251
|
## Issues
|
|
@@ -287,10 +308,11 @@ Kompakte Variante (nur die benötigten Felder):
|
|
|
287
308
|
|
|
288
309
|
Ruft bis zu 50 Issues in einem einzigen MCP-Aufruf ab. Die Anfragen laufen parallel (max. 5 gleichzeitig). Nicht zugängliche IDs liefern `null` an ihrer Position – der Aufruf schlägt nie wegen einzelner fehlender IDs fehl.
|
|
289
310
|
|
|
290
|
-
**Tool:** `
|
|
311
|
+
**Tool:** `get_issue`
|
|
291
312
|
|
|
292
313
|
**Parameter:**
|
|
293
314
|
- `ids` – Array numerischer Issue-IDs (1–50)
|
|
315
|
+
- `select` – _(optional)_ kommagetrennte Feldliste
|
|
294
316
|
|
|
295
317
|
**Request:**
|
|
296
318
|
|
|
@@ -327,6 +349,8 @@ Ruft bis zu 50 Issues in einem einzigen MCP-Aufruf ab. Die Anfragen laufen paral
|
|
|
327
349
|
|
|
328
350
|
> **Hinweis:** `null`-Einträge zeigen IDs an, die nicht gefunden oder nicht zugänglich waren. `failed` gibt an, wie viele IDs nicht abgerufen werden konnten.
|
|
329
351
|
|
|
352
|
+
> **Veraltet:** `get_issues` bietet dieselbe Funktion, ist aber veraltet – stattdessen `get_issue` mit `ids` wie oben gezeigt verwenden; `get_issues` wird in 2.0.0 entfernt.
|
|
353
|
+
|
|
330
354
|
---
|
|
331
355
|
|
|
332
356
|
### Issues auflisten (paginiert)
|
|
@@ -412,7 +436,7 @@ Eine kommagetrennte Liste von Feldnamen übergeben, um nur die benötigten Felde
|
|
|
412
436
|
}
|
|
413
437
|
```
|
|
414
438
|
|
|
415
|
-
> **Hinweis:** Mit `
|
|
439
|
+
> **Hinweis:** Mit `get_issue_schema()` lassen sich alle verfügbaren Feldnamen anzeigen.
|
|
416
440
|
|
|
417
441
|
> **Hinweis:** `view_url` ist in allen Issue-Responses immer vorhanden – es wird vom MCP-Server injiziert und wird durch den `select`-Parameter nicht beeinflusst.
|
|
418
442
|
|
|
@@ -553,6 +577,71 @@ Einen in MantisBT vorgespeicherten Filter anhand seiner ID verwenden. Dies ist d
|
|
|
553
577
|
|
|
554
578
|
---
|
|
555
579
|
|
|
580
|
+
### Issues je Status, Bearbeiter, Priorität oder Kategorie zählen
|
|
581
|
+
|
|
582
|
+
Gibt die Anzahl der passenden Issues gruppiert nach einem einzelnen Feld zurück, anstatt einzelne Issues aufzulisten – deutlich weniger Tokens als das Lesen aller Seiten.
|
|
583
|
+
|
|
584
|
+
**Tool:** `list_issues`
|
|
585
|
+
|
|
586
|
+
**Parameter:**
|
|
587
|
+
- `project_id` – _(optional)_ numerische Projekt-ID
|
|
588
|
+
- `group_by` – `"status"`, `"handler"`, `"priority"` oder `"category"`
|
|
589
|
+
- `status`, `assigned_to`, `reporter_id`, Datumsfilter – _(optional)_ alle Filter greifen weiterhin; `page`, `page_size` und `select` werden ignoriert
|
|
590
|
+
|
|
591
|
+
**Request:**
|
|
592
|
+
|
|
593
|
+
```json
|
|
594
|
+
{
|
|
595
|
+
"project_id": 3,
|
|
596
|
+
"group_by": "status"
|
|
597
|
+
}
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
**Response:**
|
|
601
|
+
|
|
602
|
+
```json
|
|
603
|
+
{
|
|
604
|
+
"group_by": "status",
|
|
605
|
+
"total": 604,
|
|
606
|
+
"groups": [
|
|
607
|
+
{ "id": 80, "name": "resolved", "label": "erledigt", "count": 412 },
|
|
608
|
+
{ "id": 50, "name": "assigned", "label": "zugewiesen", "count": 98 },
|
|
609
|
+
{ "id": 40, "name": "confirmed", "label": "bestätigt", "count": 57 },
|
|
610
|
+
{ "id": 20, "name": "feedback", "label": "Rückmeldung", "count": 37 }
|
|
611
|
+
]
|
|
612
|
+
}
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
Die Gruppen sind absteigend nach Anzahl, danach aufsteigend nach Name sortiert. Das Feld `label` enthält den lokalisierten Anzeigenamen und entfällt bei Gruppen ohne Label (z.B. Bearbeiter).
|
|
616
|
+
|
|
617
|
+
**Request (Bearbeiter, nur offene Issues):**
|
|
618
|
+
|
|
619
|
+
```json
|
|
620
|
+
{
|
|
621
|
+
"project_id": 3,
|
|
622
|
+
"group_by": "handler",
|
|
623
|
+
"status": "open"
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
**Response:**
|
|
628
|
+
|
|
629
|
+
```json
|
|
630
|
+
{
|
|
631
|
+
"group_by": "handler",
|
|
632
|
+
"total": 185,
|
|
633
|
+
"groups": [
|
|
634
|
+
{ "id": 7, "name": "jdoe", "count": 72 },
|
|
635
|
+
{ "id": 4, "name": "jsmith", "count": 68 },
|
|
636
|
+
{ "id": null, "name": "(unassigned)", "count": 45 }
|
|
637
|
+
]
|
|
638
|
+
}
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
> **Hinweis:** Der Server durchsucht alle passenden Issues bis zu einem Limit von 50.000. Wird das Limit erreicht, enthält die Antwort `"truncated": true` und die Zählwerte sind unvollständig. Das ist ein deutlich größerer Scan als das 500-Issue-Limit der clientseitigen Filter in `list_issues`.
|
|
642
|
+
|
|
643
|
+
---
|
|
644
|
+
|
|
556
645
|
### Issue erstellen
|
|
557
646
|
|
|
558
647
|
Legt ein neues Issue in MantisBT an.
|
|
@@ -564,8 +653,8 @@ Legt ein neues Issue in MantisBT an.
|
|
|
564
653
|
- `project_id` – numerische Projekt-ID
|
|
565
654
|
- `category` – Kategoriename als Zeichenkette
|
|
566
655
|
- `description` – _(optional)_ ausführliche Beschreibung
|
|
567
|
-
- `priority` – _(optional)_ Priorität: kanonischer englischer Name (`none`, `low`, `normal`, `high`, `urgent`, `immediate`) oder lokalisierter Begriff. Standard: `"normal"`. Alle verfügbaren Werte über `
|
|
568
|
-
- `severity` – _(optional)_ Schweregrad: kanonischer englischer Name (`feature`, `trivial`, `text`, `tweak`, `minor`, `major`, `crash`, `block`) oder lokalisierter Begriff. Standard: `"minor"`. Alle verfügbaren Werte über `
|
|
656
|
+
- `priority` – _(optional)_ Priorität: kanonischer englischer Name (`none`, `low`, `normal`, `high`, `urgent`, `immediate`) oder lokalisierter Begriff. Standard: `"normal"`. Alle verfügbaren Werte über `get_issue_schema()` ermitteln.
|
|
657
|
+
- `severity` – _(optional)_ Schweregrad: kanonischer englischer Name (`feature`, `trivial`, `text`, `tweak`, `minor`, `major`, `crash`, `block`) oder lokalisierter Begriff. Standard: `"minor"`. Alle verfügbaren Werte über `get_issue_schema()` ermitteln.
|
|
569
658
|
- `handler` – _(optional)_ Benutzername des Bearbeiters (wird automatisch in eine ID aufgelöst)
|
|
570
659
|
- `handler_id` – _(optional)_ numerische Benutzer-ID des Bearbeiters (Alternative zu `handler`)
|
|
571
660
|
|
|
@@ -609,11 +698,11 @@ Legt ein neues Issue in MantisBT an.
|
|
|
609
698
|
|
|
610
699
|
**Fehler: unbekannter Schweregrad oder unbekannte Priorität**
|
|
611
700
|
|
|
612
|
-
Der Server prüft zuerst kanonische englische Namen und fällt dann auf einen Live
|
|
701
|
+
Der Server prüft zuerst kanonische englische Namen und fällt dann auf einen Live-Enum-Lookup zurück. Ein Fehler wird nur zurückgegeben, wenn der Wert weder kanonisch noch lokalisiert erkannt wird:
|
|
613
702
|
|
|
614
|
-
> Error: Invalid severity "xyz". Valid canonical names: feature, trivial, text, tweak, minor, major, crash, block. Call
|
|
703
|
+
> Error: Invalid severity "xyz". Valid canonical names: feature, trivial, text, tweak, minor, major, crash, block. Call get_issue_schema to see localized labels.
|
|
615
704
|
|
|
616
|
-
Mit `
|
|
705
|
+
Mit `get_issue_schema` lassen sich alle akzeptierten Werte ermitteln – sowohl kanonische als auch lokalisierte Namen funktionieren.
|
|
617
706
|
|
|
618
707
|
---
|
|
619
708
|
|
|
@@ -655,7 +744,7 @@ Löst ein Issue auf und schließt es. **Immer beide Felder** `status` und `resol
|
|
|
655
744
|
}
|
|
656
745
|
```
|
|
657
746
|
|
|
658
|
-
> **Hinweis:** Auflösungs-ID 20 entspricht in einer Standard-MantisBT-Installation »behoben«. Mit `
|
|
747
|
+
> **Hinweis:** Auflösungs-ID 20 entspricht in einer Standard-MantisBT-Installation »behoben«. Mit `get_issue_schema()` die korrekte ID für die eigene Instanz prüfen.
|
|
659
748
|
|
|
660
749
|
---
|
|
661
750
|
|
|
@@ -710,7 +799,7 @@ Schreibt Custom-Field-Werte beim Anlegen oder Aktualisieren. Dasselbe `custom_fi
|
|
|
710
799
|
}
|
|
711
800
|
```
|
|
712
801
|
|
|
713
|
-
> **Hinweis:** Nur die aufgeführten Custom Fields werden geändert – alle anderen bleiben unangetastet. Verfügbare Felder pro Projekt mit `
|
|
802
|
+
> **Hinweis:** Nur die aufgeführten Custom Fields werden geändert – alle anderen bleiben unangetastet. Verfügbare Felder pro Projekt mit `get_issue_schema()` oder `get_metadata()` ermitteln. Werte sind immer Strings.
|
|
714
803
|
|
|
715
804
|
---
|
|
716
805
|
|
|
@@ -783,12 +872,54 @@ Setzt das Feld `fixed_in_version` eines Issues.
|
|
|
783
872
|
}
|
|
784
873
|
```
|
|
785
874
|
|
|
786
|
-
> **Hinweis:** Mit `
|
|
875
|
+
> **Hinweis:** Mit `get_project` und `include: ["versions"]` lassen sich gültige Versionsnamen für ein Projekt auflisten.
|
|
787
876
|
|
|
788
877
|
---
|
|
789
878
|
|
|
790
879
|
## Notizen
|
|
791
880
|
|
|
881
|
+
### Notizen eines Issues abrufen
|
|
882
|
+
|
|
883
|
+
Ruft nur die Notizen eines Issues über serverseitige Feldprojektion ab. Dies ist die bevorzugte Alternative zum veralteten `list_notes`-Tool.
|
|
884
|
+
|
|
885
|
+
**Tool:** `get_issue`
|
|
886
|
+
|
|
887
|
+
**Parameter:**
|
|
888
|
+
- `id` – numerische Issue-ID
|
|
889
|
+
- `select` – `"id,notes"` (`id` einschließen, damit `view_url` auch bei Projektionen immer gesetzt wird)
|
|
890
|
+
|
|
891
|
+
**Request:**
|
|
892
|
+
|
|
893
|
+
```json
|
|
894
|
+
{
|
|
895
|
+
"id": 1042,
|
|
896
|
+
"select": "id,notes"
|
|
897
|
+
}
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
**Response:**
|
|
901
|
+
|
|
902
|
+
```json
|
|
903
|
+
{
|
|
904
|
+
"id": 1042,
|
|
905
|
+
"notes": [
|
|
906
|
+
{
|
|
907
|
+
"id": 88,
|
|
908
|
+
"reporter": { "id": 7, "name": "jdoe" },
|
|
909
|
+
"text": "In Version 2.0.3 reproduziert. Ursache in der Auth-Middleware identifiziert.",
|
|
910
|
+
"view_state": { "id": 10, "name": "public" },
|
|
911
|
+
"created_at": "2024-11-05T14:02:11+00:00",
|
|
912
|
+
"view_url": "https://mantis.example.com/view.php?id=1042#bugnote88"
|
|
913
|
+
}
|
|
914
|
+
],
|
|
915
|
+
"view_url": "https://mantis.example.com/view.php?id=1042"
|
|
916
|
+
}
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
> **Veraltet:** `list_notes` wird in 2.0.0 entfernt – stattdessen `get_issue` mit `select: "id,notes"` wie oben gezeigt verwenden.
|
|
920
|
+
|
|
921
|
+
---
|
|
922
|
+
|
|
792
923
|
### Öffentliche Notiz hinzufügen
|
|
793
924
|
|
|
794
925
|
Fügt eine öffentlich sichtbare Notiz zu einem Issue hinzu.
|
|
@@ -868,7 +999,7 @@ Entfernt eine Notiz dauerhaft von einem Issue.
|
|
|
868
999
|
|
|
869
1000
|
**Parameter:**
|
|
870
1001
|
- `issue_id` – numerische Issue-ID
|
|
871
|
-
- `note_id` – numerische Notiz-ID (aus `
|
|
1002
|
+
- `note_id` – numerische Notiz-ID (aus `get_issue`)
|
|
872
1003
|
|
|
873
1004
|
**Request:**
|
|
874
1005
|
|
|
@@ -889,6 +1020,51 @@ Entfernt eine Notiz dauerhaft von einem Issue.
|
|
|
889
1020
|
|
|
890
1021
|
---
|
|
891
1022
|
|
|
1023
|
+
### Notiz ändern
|
|
1024
|
+
|
|
1025
|
+
Bearbeitet Text und/oder Sichtbarkeit einer bestehenden Notiz über `update_issue`. Die Notiz-ID stammt aus `get_issue`. Mindestens eines von `text` oder `view_state` muss angegeben werden. Mehrere Notizen können in einem Aufruf bearbeitet werden.
|
|
1026
|
+
|
|
1027
|
+
**Tool:** `update_issue`
|
|
1028
|
+
|
|
1029
|
+
**Parameter:**
|
|
1030
|
+
- `id` – numerische Issue-ID
|
|
1031
|
+
- `fields.notes` – Array von Notiz-Änderungen: `{ id, text?, view_state? }`; ein weggelassenes `view_state` behält die aktuelle Sichtbarkeit der Notiz
|
|
1032
|
+
|
|
1033
|
+
**Request:** _(nur Text ändern)_
|
|
1034
|
+
|
|
1035
|
+
```json
|
|
1036
|
+
{
|
|
1037
|
+
"id": 1042,
|
|
1038
|
+
"fields": {
|
|
1039
|
+
"notes": [
|
|
1040
|
+
{ "id": 88, "text": "Auf Version 2.0.4 reproduziert – Null-Check in der Auth-Middleware fehlt." }
|
|
1041
|
+
]
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
```
|
|
1045
|
+
|
|
1046
|
+
**Response:**
|
|
1047
|
+
|
|
1048
|
+
```json
|
|
1049
|
+
{
|
|
1050
|
+
"id": 1042,
|
|
1051
|
+
"summary": "Login-Button reagiert auf Mobile Safari nicht",
|
|
1052
|
+
"notes": [
|
|
1053
|
+
{
|
|
1054
|
+
"id": 88,
|
|
1055
|
+
"text": "Auf Version 2.0.4 reproduziert – Null-Check in der Auth-Middleware fehlt.",
|
|
1056
|
+
"view_state": { "id": 10, "name": "public" },
|
|
1057
|
+
"updated_at": "2024-11-06T12:00:00+00:00"
|
|
1058
|
+
}
|
|
1059
|
+
],
|
|
1060
|
+
"view_url": "https://mantis.example.com/view.php?id=1042"
|
|
1061
|
+
}
|
|
1062
|
+
```
|
|
1063
|
+
|
|
1064
|
+
> **Hinweis:** Unbekannte Notiz-IDs werden vor dem Schreiben abgelehnt. Hat MantisBT eine Änderung nicht übernommen, enthält die Antwort `notes_error` mit Details statt den gesamten Aufruf abzubrechen – nur wenn die Notizbearbeitung die einzige angeforderte Änderung war, wird ein Fehler zurückgegeben. Zum Hinzufügen einer neuen Notiz den `note`-Parameter oder `add_note` verwenden.
|
|
1065
|
+
|
|
1066
|
+
---
|
|
1067
|
+
|
|
892
1068
|
## Dateianhänge
|
|
893
1069
|
|
|
894
1070
|
### Lokale Datei hochladen
|
|
@@ -969,36 +1145,45 @@ Hängt eine Datei an, indem ihr base64-kodierter Inhalt direkt übergeben wird.
|
|
|
969
1145
|
|
|
970
1146
|
### Anhänge auflisten
|
|
971
1147
|
|
|
972
|
-
Gibt alle Dateianhänge eines Issues zurück.
|
|
1148
|
+
Gibt alle Dateianhänge eines Issues über serverseitige Feldprojektion zurück. Jeder Anhang enthält eine `download_url`, die über den MantisBT-File-Download-Endpoint aufgebaut wird.
|
|
973
1149
|
|
|
974
|
-
**Tool:** `
|
|
1150
|
+
**Tool:** `get_issue`
|
|
975
1151
|
|
|
976
1152
|
**Parameter:**
|
|
977
|
-
- `
|
|
1153
|
+
- `id` – numerische Issue-ID
|
|
1154
|
+
- `select` – `"id,attachments"`
|
|
978
1155
|
|
|
979
1156
|
**Request:**
|
|
980
1157
|
|
|
981
1158
|
```json
|
|
982
1159
|
{
|
|
983
|
-
"
|
|
1160
|
+
"id": 1042,
|
|
1161
|
+
"select": "id,attachments"
|
|
984
1162
|
}
|
|
985
1163
|
```
|
|
986
1164
|
|
|
987
1165
|
**Response:**
|
|
988
1166
|
|
|
989
1167
|
```json
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1168
|
+
{
|
|
1169
|
+
"id": 1042,
|
|
1170
|
+
"attachments": [
|
|
1171
|
+
{
|
|
1172
|
+
"id": 23,
|
|
1173
|
+
"filename": "login-error.png",
|
|
1174
|
+
"size": 42318,
|
|
1175
|
+
"content_type": "image/png",
|
|
1176
|
+
"created_at": "2024-11-05T15:30:00+00:00",
|
|
1177
|
+
"reporter": { "id": 4, "name": "jsmith" },
|
|
1178
|
+
"download_url": "https://mantis.example.com/file_download.php?file_id=23&type=bug"
|
|
1179
|
+
}
|
|
1180
|
+
],
|
|
1181
|
+
"view_url": "https://mantis.example.com/view.php?id=1042"
|
|
1182
|
+
}
|
|
1000
1183
|
```
|
|
1001
1184
|
|
|
1185
|
+
> **Veraltet:** `list_issue_files` wird in 2.0.0 entfernt – stattdessen `get_issue` mit `select: "id,attachments"` wie oben gezeigt verwenden.
|
|
1186
|
+
|
|
1002
1187
|
---
|
|
1003
1188
|
|
|
1004
1189
|
## Verknüpfungen
|
|
@@ -1261,7 +1446,70 @@ Entfernt einen Tag von einem Issue. Erfordert die numerische Tag-ID.
|
|
|
1261
1446
|
|
|
1262
1447
|
## Monitore (Beobachter)
|
|
1263
1448
|
|
|
1264
|
-
### Beobachter
|
|
1449
|
+
### Beobachter via update_issue ändern
|
|
1450
|
+
|
|
1451
|
+
Fügt Beobachter (Monitore) eines Issues hinzu und/oder entfernt sie in einem einzigen `update_issue`-Aufruf. `fields` darf entfallen – es genügt `add_monitors`, `remove_monitors` oder beides. Namen werden ohne Rücksicht auf Groß-/Kleinschreibung abgeglichen.
|
|
1452
|
+
|
|
1453
|
+
**Tool:** `update_issue`
|
|
1454
|
+
|
|
1455
|
+
**Parameter:**
|
|
1456
|
+
- `id` – numerische Issue-ID
|
|
1457
|
+
- `add_monitors` – _(optional)_ Array von MantisBT-Login-Namen, die als Beobachter eingetragen werden sollen
|
|
1458
|
+
- `remove_monitors` – _(optional)_ Array von MantisBT-Login-Namen, die aus den Beobachtern entfernt werden sollen; Namen, die das Issue nicht beobachten, werden still übergangen
|
|
1459
|
+
- Ein Name in beiden Arrays wird abgelehnt.
|
|
1460
|
+
|
|
1461
|
+
**Request:** _(einen Beobachter hinzufügen)_
|
|
1462
|
+
|
|
1463
|
+
```json
|
|
1464
|
+
{
|
|
1465
|
+
"id": 1042,
|
|
1466
|
+
"add_monitors": ["jsmith"]
|
|
1467
|
+
}
|
|
1468
|
+
```
|
|
1469
|
+
|
|
1470
|
+
**Response:**
|
|
1471
|
+
|
|
1472
|
+
```json
|
|
1473
|
+
{
|
|
1474
|
+
"id": 1042,
|
|
1475
|
+
"view_url": "https://mantis.example.com/view.php?id=1042",
|
|
1476
|
+
"monitors": {
|
|
1477
|
+
"added": ["jsmith"],
|
|
1478
|
+
"current": ["asmith", "jsmith"]
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
```
|
|
1482
|
+
|
|
1483
|
+
**Request:** _(einen Beobachter entfernen)_
|
|
1484
|
+
|
|
1485
|
+
```json
|
|
1486
|
+
{
|
|
1487
|
+
"id": 1042,
|
|
1488
|
+
"remove_monitors": ["jsmith"]
|
|
1489
|
+
}
|
|
1490
|
+
```
|
|
1491
|
+
|
|
1492
|
+
**Response:**
|
|
1493
|
+
|
|
1494
|
+
```json
|
|
1495
|
+
{
|
|
1496
|
+
"id": 1042,
|
|
1497
|
+
"view_url": "https://mantis.example.com/view.php?id=1042",
|
|
1498
|
+
"monitors": {
|
|
1499
|
+
"removed": ["jsmith"],
|
|
1500
|
+
"not_monitoring": [],
|
|
1501
|
+
"current": ["asmith"]
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
```
|
|
1505
|
+
|
|
1506
|
+
`monitors.current` listet stets alle verbleibenden Beobachter. `monitors.added` enthält erfolgreich hinzugefügte, `monitors.removed` erfolgreich entfernte Namen; `monitors.not_monitoring` enthält Namen, die das Issue nicht beobachtet haben und daher übersprungen wurden. Andere Benutzer hinzuzufügen oder zu entfernen erfordert die Zugriffsstufe `monitor_add_others_bug_threshold` bzw. `monitor_delete_others_bug_threshold`. Die Schritte laufen nacheinander – `fields`, Beobachter, `note`. Sobald einer davon geklappt hat, wird ein späterer Fehler in der Antwort als `monitors_error` bzw. `note_error` gemeldet (nichts wird zurückgenommen); nur wenn alle angeforderten Schritte fehlschlagen, liefert der Aufruf einen Fehler.
|
|
1507
|
+
|
|
1508
|
+
---
|
|
1509
|
+
|
|
1510
|
+
### Beobachter hinzufügen (veraltet)
|
|
1511
|
+
|
|
1512
|
+
> **Veraltet:** stattdessen `update_issue` mit `add_monitors` verwenden – `add_monitor` wird in 2.0.0 entfernt.
|
|
1265
1513
|
|
|
1266
1514
|
Abonniert einen Benutzer für Benachrichtigungen zu einem Issue.
|
|
1267
1515
|
|
|
@@ -1269,7 +1517,7 @@ Abonniert einen Benutzer für Benachrichtigungen zu einem Issue.
|
|
|
1269
1517
|
|
|
1270
1518
|
**Parameter:**
|
|
1271
1519
|
- `issue_id` – numerische Issue-ID
|
|
1272
|
-
- `username` –
|
|
1520
|
+
- `username` – MantisBT-Login-Name
|
|
1273
1521
|
|
|
1274
1522
|
**Request:**
|
|
1275
1523
|
|
|
@@ -1283,12 +1531,19 @@ Abonniert einen Benutzer für Benachrichtigungen zu einem Issue.
|
|
|
1283
1531
|
**Response:**
|
|
1284
1532
|
|
|
1285
1533
|
```json
|
|
1286
|
-
{
|
|
1534
|
+
{
|
|
1535
|
+
"success": true,
|
|
1536
|
+
"monitors": ["asmith", "jsmith"]
|
|
1537
|
+
}
|
|
1287
1538
|
```
|
|
1288
1539
|
|
|
1540
|
+
`monitors` listet alle Benutzer, die das Issue jetzt beobachten. Ist der Benutzer bereits Beobachter, ändert sich nichts, und der Aufruf gelingt trotzdem. Andere Benutzer hinzuzufügen erfordert die Zugriffsstufe `monitor_add_others_bug_threshold`.
|
|
1541
|
+
|
|
1289
1542
|
---
|
|
1290
1543
|
|
|
1291
|
-
### Beobachter entfernen
|
|
1544
|
+
### Beobachter entfernen (veraltet)
|
|
1545
|
+
|
|
1546
|
+
> **Veraltet:** stattdessen `update_issue` mit `remove_monitors` verwenden – `remove_monitor` wird in 2.0.0 entfernt.
|
|
1292
1547
|
|
|
1293
1548
|
Deabonniert einen Benutzer von Benachrichtigungen zu einem Issue.
|
|
1294
1549
|
|
|
@@ -1296,7 +1551,7 @@ Deabonniert einen Benutzer von Benachrichtigungen zu einem Issue.
|
|
|
1296
1551
|
|
|
1297
1552
|
**Parameter:**
|
|
1298
1553
|
- `issue_id` – numerische Issue-ID
|
|
1299
|
-
- `username` –
|
|
1554
|
+
- `username` – MantisBT-Login-Name (Groß-/Kleinschreibung egal)
|
|
1300
1555
|
|
|
1301
1556
|
**Request:**
|
|
1302
1557
|
|
|
@@ -1310,9 +1565,15 @@ Deabonniert einen Benutzer von Benachrichtigungen zu einem Issue.
|
|
|
1310
1565
|
**Response:**
|
|
1311
1566
|
|
|
1312
1567
|
```json
|
|
1313
|
-
{
|
|
1568
|
+
{
|
|
1569
|
+
"success": true,
|
|
1570
|
+
"removed": true,
|
|
1571
|
+
"monitors": ["asmith"]
|
|
1572
|
+
}
|
|
1314
1573
|
```
|
|
1315
1574
|
|
|
1575
|
+
`monitors` listet die Benutzer, die das Issue weiterhin beobachten. War `jsmith` gar kein Beobachter, ändert sich nichts, und die Antwort enthält `"removed": false` sowie eine `message`. Andere Benutzer zu entfernen erfordert die Zugriffsstufe `monitor_delete_others_bug_threshold`; fehlt sie, liefert das Tool einen Fehler.
|
|
1576
|
+
|
|
1316
1577
|
---
|
|
1317
1578
|
|
|
1318
1579
|
## Semantische Suche
|
|
@@ -1323,6 +1584,8 @@ Deabonniert einen Benutzer von Benachrichtigungen zu einem Issue.
|
|
|
1323
1584
|
|
|
1324
1585
|
Baut den vollständigen Vektor-Suchindex von Grund auf neu auf. Einmalig nach der Aktivierung der semantischen Suche ausführen.
|
|
1325
1586
|
|
|
1587
|
+
Der Server baut den Index außerdem von selbst neu auf, wenn er mit einem anderen Embedding-Modell oder auf andere Weise erstellt wurde – nach einer Änderung von `MANTIS_SEARCH_MODEL` oder nach einem Update, das die Art der Einbettung ändert. Ein vollständiger Neuaufbau von 7.700 Issues dauerte mit dem Standard von 1 Thread etwa 6 Minuten, mit `MANTIS_SEARCH_THREADS=4` keine 3 Minuten.
|
|
1588
|
+
|
|
1326
1589
|
**Tool:** `rebuild_search_index`
|
|
1327
1590
|
|
|
1328
1591
|
**Parameter:**
|
|
@@ -1353,7 +1616,7 @@ Baut den vollständigen Vektor-Suchindex von Grund auf neu auf. Einmalig nach de
|
|
|
1353
1616
|
|
|
1354
1617
|
Aktualisiert den Index mit Issues, die seit der letzten Synchronisation hinzugekommen oder geändert wurden. Schneller als ein vollständiger Neuaufbau: Nur die seitdem geänderten Issues werden abgerufen und neu eingebettet.
|
|
1355
1618
|
|
|
1356
|
-
Es synchronisiert immer nur ein Serverprozess den gemeinsamen Index. Läuft bereits eine Synchronisation in einem anderen Prozess (etwa einer anderen Client-Sitzung), gibt das Tool einen Fehler zurück – nach deren Ende einfach erneut aufrufen. Eine auf `project_id` beschränkte Synchronisation verschiebt `last_synced_at` nicht, damit Änderungen in anderen Projekten beim nächsten Sync trotzdem erfasst werden.
|
|
1619
|
+
Es synchronisiert immer nur ein Serverprozess den gemeinsamen Index. Läuft bereits eine Synchronisation in einem anderen Prozess (etwa einer anderen Client-Sitzung), gibt das Tool einen Fehler zurück – nach deren Ende einfach erneut aufrufen. Eine auf `project_id` beschränkte Synchronisation verschiebt `last_synced_at` nicht, damit Änderungen in anderen Projekten beim nächsten Sync trotzdem erfasst werden. Wurde der Index mit einem anderen Embedding-Modell oder einer anderen Version erstellt, baut der Sync ihn für alle Projekte neu auf, auch mit `project_id`.
|
|
1357
1620
|
|
|
1358
1621
|
**Tool:** `rebuild_search_index`
|
|
1359
1622
|
|
|
@@ -1386,7 +1649,7 @@ Es synchronisiert immer nur ein Serverprozess den gemeinsamen Index. Läuft bere
|
|
|
1386
1649
|
|
|
1387
1650
|
Gibt die Anzahl der indizierten Issues, die Gesamtanzahl der Issues und den Zeitstempel der letzten Synchronisation zurück. `last_synced_at` ist das jüngste `updated_at`, das der MantisBT-Server bei dieser Synchronisation gemeldet hat (Serverzeit), und kann daher vor dem tatsächlichen Zeitpunkt der Synchronisation liegen.
|
|
1388
1651
|
|
|
1389
|
-
**Tool:** `
|
|
1652
|
+
**Tool:** `get_metadata`
|
|
1390
1653
|
|
|
1391
1654
|
**Parameter:** _(keine)_
|
|
1392
1655
|
|
|
@@ -1396,23 +1659,32 @@ Gibt die Anzahl der indizierten Issues, die Gesamtanzahl der Issues und den Zeit
|
|
|
1396
1659
|
{}
|
|
1397
1660
|
```
|
|
1398
1661
|
|
|
1399
|
-
**Response:**
|
|
1662
|
+
**Response (relevanter Ausschnitt):**
|
|
1400
1663
|
|
|
1401
1664
|
```json
|
|
1402
1665
|
{
|
|
1403
|
-
"
|
|
1404
|
-
"
|
|
1405
|
-
"
|
|
1406
|
-
"
|
|
1407
|
-
"
|
|
1666
|
+
"projects": 24,
|
|
1667
|
+
"tags": 15,
|
|
1668
|
+
"byProject": { "3": { "name": "Webshop", "users": 8, "versions": 12, "categories": 4 } },
|
|
1669
|
+
"cached_at": "2026-03-27T09:00:00.000Z",
|
|
1670
|
+
"ttl_seconds": 82800,
|
|
1671
|
+
"search_index": {
|
|
1672
|
+
"summary": "312/312 (100 %)",
|
|
1673
|
+
"indexed": 312,
|
|
1674
|
+
"total": 312,
|
|
1675
|
+
"percent": 100,
|
|
1676
|
+
"last_synced_at": "2024-11-05T14:00:00+01:00"
|
|
1677
|
+
}
|
|
1408
1678
|
}
|
|
1409
1679
|
```
|
|
1410
1680
|
|
|
1681
|
+
> **Veraltet:** `get_search_index_status` wird in 2.0.0 entfernt – stattdessen `get_metadata` (Feld `search_index`) wie oben gezeigt verwenden.
|
|
1682
|
+
|
|
1411
1683
|
---
|
|
1412
1684
|
|
|
1413
1685
|
### Nach Bedeutung suchen
|
|
1414
1686
|
|
|
1415
|
-
Findet Issues, die einem natürlichsprachigen Suchbegriff semantisch ähnlich sind. Gibt Issue-IDs und Relevanz-Scores zurück.
|
|
1687
|
+
Findet Issues, die einem natürlichsprachigen Suchbegriff semantisch ähnlich sind, kombiniert mit einer Stichwortsuche, damit auch exakte Begriffe (Bezeichner, Fehlercodes, Versionsnummern) gefunden werden. Gibt Issue-IDs und Relevanz-Scores zurück. `score` ist die semantische Ähnlichkeit; die Reihenfolge folgt der kombinierten Rangfolge, ein Ergebnis mit exaktem Stichworttreffer kann also vor einem mit höherem `score` stehen.
|
|
1416
1688
|
|
|
1417
1689
|
**Tool:** `search_issues`
|
|
1418
1690
|
|
|
@@ -1542,68 +1814,159 @@ Zeigt, welcher Teil eines Issues mit der Suchanfrage übereinstimmt. Jedes Ergeb
|
|
|
1542
1814
|
|
|
1543
1815
|
## Projekte & Kategorien
|
|
1544
1816
|
|
|
1817
|
+
### Projekt mit Kategorien, Nutzern und Versionen abrufen
|
|
1818
|
+
|
|
1819
|
+
Ruft die Stammdaten eines Projekts sowie beliebige Kombinationen von Kategorien, Nutzern und Versionen in einem Aufruf ab. Kategorienamen werden ohne das Prefix `[All Projects]` geliefert und können direkt in `create_issue` verwendet werden. `member_query` filtert Nutzer per Teilstring-Suche in Login-Name, Realname und E-Mail und liefert alle Treffer.
|
|
1820
|
+
|
|
1821
|
+
**Tool:** `get_project`
|
|
1822
|
+
|
|
1823
|
+
**Parameter:**
|
|
1824
|
+
- `project_id` – numerische Projekt-ID (mit `list_projects` ermitteln)
|
|
1825
|
+
- `include` – _(optional)_ Array aus `"categories"`, `"users"`, `"versions"` (beliebige Kombination)
|
|
1826
|
+
- `access_level` – _(optional)_ nur Nutzer ab dieser Zugriffsstufe (10=Betrachter, 25=Reporter, 40=Bearbeiter, 55=Entwickler, 70=Manager, 90=Administrator); impliziert `"users"`
|
|
1827
|
+
- `member_query` – _(optional)_ Teilstring für die Nutzersuche; impliziert `"users"`, liefert alle Treffer
|
|
1828
|
+
- `obsolete` – _(optional)_ veraltete Versionen einschließen; impliziert `"versions"`
|
|
1829
|
+
- `inherit` – _(optional)_ Versionen des Elternprojekts einschließen; impliziert `"versions"`
|
|
1830
|
+
|
|
1831
|
+
**Request:** _(Stammdaten + Kategorien + Nutzer + Versionen)_
|
|
1832
|
+
|
|
1833
|
+
```json
|
|
1834
|
+
{
|
|
1835
|
+
"project_id": 3,
|
|
1836
|
+
"include": ["categories", "users", "versions"]
|
|
1837
|
+
}
|
|
1838
|
+
```
|
|
1839
|
+
|
|
1840
|
+
**Response:**
|
|
1841
|
+
|
|
1842
|
+
```json
|
|
1843
|
+
{
|
|
1844
|
+
"id": 3,
|
|
1845
|
+
"name": "Webshop",
|
|
1846
|
+
"description": "Kundenportal",
|
|
1847
|
+
"status": { "id": 10, "name": "development" },
|
|
1848
|
+
"enabled": true,
|
|
1849
|
+
"view_state": { "id": 10, "name": "public" },
|
|
1850
|
+
"categories": [
|
|
1851
|
+
{ "id": 1, "name": "General" },
|
|
1852
|
+
{ "id": 2, "name": "UI" },
|
|
1853
|
+
{ "id": 3, "name": "Backend" }
|
|
1854
|
+
],
|
|
1855
|
+
"users": [
|
|
1856
|
+
{ "id": 4, "name": "jsmith", "real_name": "John Smith", "email": "jsmith@example.com", "access_level": { "id": 55, "name": "developer" } },
|
|
1857
|
+
{ "id": 7, "name": "jdoe", "real_name": "Jane Doe", "email": "jdoe@example.com", "access_level": { "id": 70, "name": "manager" } }
|
|
1858
|
+
],
|
|
1859
|
+
"versions": [
|
|
1860
|
+
{ "id": 42, "name": "1.2.0", "released": false, "obsolete": false, "timestamp": "2026-10-31T00:00:00+00:00" },
|
|
1861
|
+
{ "id": 43, "name": "1.2.1", "released": false, "obsolete": false, "timestamp": "2026-10-31T00:00:00+00:00" }
|
|
1862
|
+
]
|
|
1863
|
+
}
|
|
1864
|
+
```
|
|
1865
|
+
|
|
1866
|
+
**Request:** _(Mitgliedersuche)_
|
|
1867
|
+
|
|
1868
|
+
```json
|
|
1869
|
+
{
|
|
1870
|
+
"project_id": 3,
|
|
1871
|
+
"member_query": "smith"
|
|
1872
|
+
}
|
|
1873
|
+
```
|
|
1874
|
+
|
|
1875
|
+
**Response:**
|
|
1876
|
+
|
|
1877
|
+
```json
|
|
1878
|
+
{
|
|
1879
|
+
"id": 3,
|
|
1880
|
+
"name": "Webshop",
|
|
1881
|
+
"status": { "id": 10, "name": "development" },
|
|
1882
|
+
"enabled": true,
|
|
1883
|
+
"users": [
|
|
1884
|
+
{ "id": 4, "name": "jsmith", "real_name": "John Smith", "email": "jsmith@example.com", "access_level": { "id": 55, "name": "developer" } },
|
|
1885
|
+
{ "id": 11, "name": "asmith", "real_name": "Alice Smith", "email": "asmith@example.com", "access_level": { "id": 40, "name": "updater" } }
|
|
1886
|
+
]
|
|
1887
|
+
}
|
|
1888
|
+
```
|
|
1889
|
+
|
|
1890
|
+
> **Hinweis:** `get_project_categories`, `get_project_users`, `get_project_versions` und `find_project_member` sind zugunsten von `get_project` mit `include` bzw. `member_query` veraltet und werden in 2.0.0 entfernt.
|
|
1891
|
+
|
|
1892
|
+
---
|
|
1893
|
+
|
|
1545
1894
|
### Projektkategorien auflisten
|
|
1546
1895
|
|
|
1547
1896
|
Gibt alle verfügbaren Kategorien eines MantisBT-Projekts zurück. Die zurückgegebenen Namen können direkt beim Erstellen von Issues verwendet werden.
|
|
1548
1897
|
|
|
1549
|
-
**Tool:** `
|
|
1898
|
+
**Tool:** `get_project`
|
|
1550
1899
|
|
|
1551
1900
|
**Parameter:**
|
|
1552
1901
|
- `project_id` – numerische Projekt-ID
|
|
1902
|
+
- `include` – `["categories"]`
|
|
1553
1903
|
|
|
1554
1904
|
**Request:**
|
|
1555
1905
|
|
|
1556
1906
|
```json
|
|
1557
1907
|
{
|
|
1558
|
-
"project_id": 3
|
|
1908
|
+
"project_id": 3,
|
|
1909
|
+
"include": ["categories"]
|
|
1559
1910
|
}
|
|
1560
1911
|
```
|
|
1561
1912
|
|
|
1562
1913
|
**Response:**
|
|
1563
1914
|
|
|
1564
1915
|
```json
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
{ "id":
|
|
1569
|
-
|
|
1916
|
+
{
|
|
1917
|
+
"id": 3,
|
|
1918
|
+
"name": "Webshop",
|
|
1919
|
+
"status": { "id": 10, "name": "development" },
|
|
1920
|
+
"enabled": true,
|
|
1921
|
+
"categories": [
|
|
1922
|
+
{ "id": 1, "name": "General" },
|
|
1923
|
+
{ "id": 2, "name": "UI" },
|
|
1924
|
+
{ "id": 3, "name": "Backend" }
|
|
1925
|
+
]
|
|
1926
|
+
}
|
|
1570
1927
|
```
|
|
1571
1928
|
|
|
1572
1929
|
> **Hinweis:** Kategorienamen mit dem Prefix `[All Projects]` (aus dem globalen Projekt geerbt) werden in der Antwort automatisch ohne diesen Prefix zurückgegeben.
|
|
1573
1930
|
|
|
1931
|
+
> **Veraltet:** `get_project_categories` wird in 2.0.0 entfernt – stattdessen `get_project` mit `include: ["categories"]` wie oben gezeigt verwenden.
|
|
1932
|
+
|
|
1574
1933
|
---
|
|
1575
1934
|
|
|
1576
1935
|
### Projektmitglied suchen
|
|
1577
1936
|
|
|
1578
|
-
Sucht Projektmitglieder nach Name, Realname oder E-Mail. Die Suche ist Groß-/Kleinschreibungsunabhängig und findet Teilstrings.
|
|
1937
|
+
Sucht Projektmitglieder nach Name, Realname oder E-Mail. Die Suche ist Groß-/Kleinschreibungsunabhängig und findet Teilstrings. Alle Treffer werden zurückgegeben – es gibt kein `limit`.
|
|
1579
1938
|
|
|
1580
|
-
**Tool:** `
|
|
1939
|
+
**Tool:** `get_project`
|
|
1581
1940
|
|
|
1582
1941
|
**Parameter:**
|
|
1583
1942
|
- `project_id` – numerische Projekt-ID
|
|
1584
|
-
- `
|
|
1585
|
-
- `limit` – _(optional)_ maximale Trefferanzahl, Standard 10, max. 100
|
|
1943
|
+
- `member_query` – Suchbegriff für `name`, `real_name` oder `email`
|
|
1586
1944
|
|
|
1587
1945
|
**Request:**
|
|
1588
1946
|
|
|
1589
1947
|
```json
|
|
1590
1948
|
{
|
|
1591
1949
|
"project_id": 3,
|
|
1592
|
-
"
|
|
1593
|
-
"limit": 5
|
|
1950
|
+
"member_query": "smith"
|
|
1594
1951
|
}
|
|
1595
1952
|
```
|
|
1596
1953
|
|
|
1597
1954
|
**Response:**
|
|
1598
1955
|
|
|
1599
1956
|
```json
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1957
|
+
{
|
|
1958
|
+
"id": 3,
|
|
1959
|
+
"name": "Webshop",
|
|
1960
|
+
"status": { "id": 10, "name": "development" },
|
|
1961
|
+
"enabled": true,
|
|
1962
|
+
"users": [
|
|
1963
|
+
{ "id": 4, "name": "jsmith", "real_name": "John Smith", "email": "jsmith@example.com", "access_level": { "id": 55, "name": "developer" } },
|
|
1964
|
+
{ "id": 11, "name": "asmith", "real_name": "Alice Smith", "email": "asmith@example.com", "access_level": { "id": 40, "name": "updater" } }
|
|
1965
|
+
]
|
|
1966
|
+
}
|
|
1604
1967
|
```
|
|
1605
1968
|
|
|
1606
|
-
> **
|
|
1969
|
+
> **Veraltet:** `find_project_member` wird in 2.0.0 entfernt – stattdessen `get_project` mit `member_query` wie oben gezeigt verwenden. Anders als `find_project_member` hat `get_project` kein `limit` und gibt alle Treffer zurück.
|
|
1607
1970
|
|
|
1608
1971
|
---
|
|
1609
1972
|
|
|
@@ -1658,12 +2021,13 @@ Aktualisiert eine bestehende Version eines MantisBT-Projekts. Es werden nur die
|
|
|
1658
2021
|
|
|
1659
2022
|
**Parameter:**
|
|
1660
2023
|
- `project_id` – numerische Projekt-ID
|
|
1661
|
-
- `version_id` – numerische Versions-ID (mit `
|
|
2024
|
+
- `version_id` – numerische Versions-ID (mit `get_project` und `include: ["versions"]` ermittelbar)
|
|
1662
2025
|
- `name` – _(optional)_ neuer Versionsname (muss im Projekt eindeutig sein)
|
|
1663
2026
|
- `description` – _(optional)_ neue Versionsbeschreibung
|
|
1664
2027
|
- `released` – _(optional)_ Veröffentlichungs-Flag
|
|
1665
2028
|
- `obsolete` – _(optional)_ Veraltet-Flag
|
|
1666
2029
|
- `timestamp` – _(optional)_ Versionsdatum als ISO-8601-String
|
|
2030
|
+
- `next_version` – _(optional, nur zusammen mit `released: true`)_ Name der Folgeversion, die als unveröffentlichter Platzhalter angelegt wird, z.B. `"1.2.1"`; wird unverändert übernommen – keine automatische Nummerierung
|
|
1667
2031
|
|
|
1668
2032
|
**Request:** _(Version als veraltet markieren)_
|
|
1669
2033
|
|
|
@@ -1687,9 +2051,46 @@ Aktualisiert eine bestehende Version eines MantisBT-Projekts. Es werden nur die
|
|
|
1687
2051
|
}
|
|
1688
2052
|
```
|
|
1689
2053
|
|
|
2054
|
+
**Request:** _(Version freigeben und Folgeversion anlegen)_
|
|
2055
|
+
|
|
2056
|
+
```json
|
|
2057
|
+
{
|
|
2058
|
+
"project_id": 3,
|
|
2059
|
+
"version_id": 42,
|
|
2060
|
+
"released": true,
|
|
2061
|
+
"timestamp": "2026-10-31",
|
|
2062
|
+
"next_version": "1.2.1"
|
|
2063
|
+
}
|
|
2064
|
+
```
|
|
2065
|
+
|
|
2066
|
+
**Response:**
|
|
2067
|
+
|
|
2068
|
+
```json
|
|
2069
|
+
{
|
|
2070
|
+
"version": {
|
|
2071
|
+
"id": 42,
|
|
2072
|
+
"name": "1.2.0",
|
|
2073
|
+
"released": true,
|
|
2074
|
+
"obsolete": false,
|
|
2075
|
+
"timestamp": "2026-10-31T00:00:00+00:00"
|
|
2076
|
+
},
|
|
2077
|
+
"next_version": {
|
|
2078
|
+
"id": 43,
|
|
2079
|
+
"name": "1.2.1",
|
|
2080
|
+
"released": false,
|
|
2081
|
+
"obsolete": false,
|
|
2082
|
+
"timestamp": "2026-10-31T00:00:00+00:00"
|
|
2083
|
+
}
|
|
2084
|
+
}
|
|
2085
|
+
```
|
|
2086
|
+
|
|
2087
|
+
Das Setzen von `released=true` ändert das Versionsdatum nicht – `timestamp` mit dem Freigabedatum immer mitübergeben. Schlägt das Anlegen der Folgeversion fehl, bleibt der Update wirksam und der Fehler wird als `next_version_error` in der Antwort gemeldet.
|
|
2088
|
+
|
|
1690
2089
|
---
|
|
1691
2090
|
|
|
1692
|
-
### Version freigeben und nächsten Bugfix-Platzhalter erstellen
|
|
2091
|
+
### Version freigeben und nächsten Bugfix-Platzhalter erstellen (veraltet)
|
|
2092
|
+
|
|
2093
|
+
> **Veraltet:** stattdessen `update_version` mit `released: true`, `timestamp` und optional `next_version` verwenden – `release_version` wird in 2.0.0 entfernt. Das Ersatzrezept steht unter [Projektversion aktualisieren](#projektversion-aktualisieren).
|
|
1693
2094
|
|
|
1694
2095
|
Markiert eine Version als veröffentlicht (mit Datumsangabe) und erstellt im selben Aufruf optional eine Folgeversion als Platzhalter. Der Name der Folgeversion wird unverändert übernommen – keine automatische Nummerierung. Schlägt das Erstellen der Folgeversion fehl, bleibt die Freigabe wirksam und der Fehler wird in `next_version_error` gemeldet.
|
|
1695
2096
|
|
|
@@ -1735,7 +2136,7 @@ Markiert eine Version als veröffentlicht (mit Datumsangabe) und erstellt im sel
|
|
|
1735
2136
|
}
|
|
1736
2137
|
```
|
|
1737
2138
|
|
|
1738
|
-
> **Hinweis:** Das Setzen von `released=true` via `update_version` ändert das Versionsdatum nicht – `
|
|
2139
|
+
> **Hinweis:** Das Setzen von `released=true` via `update_version` ändert das Versionsdatum nicht – `timestamp` mit dem Freigabedatum immer mitübergeben. Mit `next_version` lässt sich die Folgeversion im selben Aufruf anlegen.
|
|
1739
2140
|
|
|
1740
2141
|
---
|
|
1741
2142
|
|
|
@@ -1776,9 +2177,11 @@ Gibt eine kompakte Übersicht aller gecachten Metadaten zurück: Gesamtzahl der
|
|
|
1776
2177
|
|
|
1777
2178
|
**Tool:** `get_metadata`
|
|
1778
2179
|
|
|
1779
|
-
**Parameter:**
|
|
2180
|
+
**Parameter:**
|
|
2181
|
+
- `detail` – _(optional)_ `"summary"` (Standard) für Zählwerte; `"full"` für den vollständigen rohen Cache
|
|
2182
|
+
- `refresh` – _(optional)_ `true`, um alle Metadaten vor der Antwort von MantisBT neu zu laden; Standard `false`
|
|
1780
2183
|
|
|
1781
|
-
**Request:**
|
|
2184
|
+
**Request:** _(Zusammenfassung, aus Cache)_
|
|
1782
2185
|
|
|
1783
2186
|
```json
|
|
1784
2187
|
{}
|
|
@@ -1799,36 +2202,75 @@ Gibt eine kompakte Übersicht aller gecachten Metadaten zurück: Gesamtzahl der
|
|
|
1799
2202
|
}
|
|
1800
2203
|
```
|
|
1801
2204
|
|
|
1802
|
-
|
|
2205
|
+
Mit `MANTIS_SEARCH_ENABLED=true` enthält die Antwort zusätzlich einen `search_index`-Block:
|
|
2206
|
+
|
|
2207
|
+
```json
|
|
2208
|
+
{
|
|
2209
|
+
"projects": 24,
|
|
2210
|
+
"tags": 15,
|
|
2211
|
+
"byProject": { "3": { "name": "Webshop", "users": 8, "versions": 12, "categories": 4 } },
|
|
2212
|
+
"cached_at": "2026-03-27T09:00:00.000Z",
|
|
2213
|
+
"ttl_seconds": 82800,
|
|
2214
|
+
"search_index": {
|
|
2215
|
+
"summary": "312/312 (100 %)",
|
|
2216
|
+
"indexed": 312,
|
|
2217
|
+
"total": 312,
|
|
2218
|
+
"percent": 100,
|
|
2219
|
+
"last_synced_at": "2026-03-27T08:55:00+01:00"
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
```
|
|
2223
|
+
|
|
2224
|
+
> **Hinweis:** Für vollständige Listen `list_projects`, `get_project` (mit `include`) oder `list_tags` verwenden.
|
|
2225
|
+
|
|
2226
|
+
---
|
|
2227
|
+
|
|
2228
|
+
### Metadaten-Cache aktualisieren
|
|
2229
|
+
|
|
2230
|
+
Erzwingt einen Neu-Abruf aller Metadaten von MantisBT, bevor die Zusammenfassung zurückgegeben wird.
|
|
2231
|
+
|
|
2232
|
+
**Tool:** `get_metadata`
|
|
2233
|
+
|
|
2234
|
+
**Parameter:**
|
|
2235
|
+
- `refresh` – `true`
|
|
2236
|
+
|
|
2237
|
+
**Request:**
|
|
2238
|
+
|
|
2239
|
+
```json
|
|
2240
|
+
{ "refresh": true }
|
|
2241
|
+
```
|
|
2242
|
+
|
|
2243
|
+
**Response:** gleiche Struktur wie die Zusammenfassung oben, mit aktualisiertem `cached_at`.
|
|
1803
2244
|
|
|
1804
2245
|
---
|
|
1805
2246
|
|
|
1806
2247
|
### Vollständigen Metadaten-Cache abrufen
|
|
1807
2248
|
|
|
1808
|
-
Gibt den vollständigen rohen Metadaten-Cache als minifiziertes JSON zurück.
|
|
2249
|
+
Gibt den vollständigen rohen Metadaten-Cache als minifiziertes JSON zurück. Die Cache-Struktur lautet `{ timestamp, projects, byProject: {"<id>": { users, versions, categories }}, tags }`.
|
|
1809
2250
|
|
|
1810
|
-
**Tool:** `
|
|
2251
|
+
**Tool:** `get_metadata`
|
|
1811
2252
|
|
|
1812
|
-
**Parameter:**
|
|
2253
|
+
**Parameter:**
|
|
2254
|
+
- `detail` – `"full"`
|
|
1813
2255
|
|
|
1814
2256
|
**Request:**
|
|
1815
2257
|
|
|
1816
2258
|
```json
|
|
1817
|
-
{}
|
|
2259
|
+
{ "detail": "full" }
|
|
1818
2260
|
```
|
|
1819
2261
|
|
|
1820
2262
|
**Response:**
|
|
1821
2263
|
|
|
1822
2264
|
```json
|
|
1823
2265
|
{
|
|
2266
|
+
"timestamp": 1743066000000,
|
|
1824
2267
|
"projects": [
|
|
1825
|
-
{
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
"enabled": true,
|
|
2268
|
+
{ "id": 3, "name": "Webshop", "status": { "id": 10, "name": "development" }, "enabled": true }
|
|
2269
|
+
],
|
|
2270
|
+
"byProject": {
|
|
2271
|
+
"3": {
|
|
1830
2272
|
"users": [
|
|
1831
|
-
{ "id": 4, "name": "jsmith", "real_name": "John Smith", "email": "jsmith@example.com"
|
|
2273
|
+
{ "id": 4, "name": "jsmith", "real_name": "John Smith", "email": "jsmith@example.com" }
|
|
1832
2274
|
],
|
|
1833
2275
|
"versions": [
|
|
1834
2276
|
{ "id": 21, "name": "2.4.0", "released": false, "obsolete": false }
|
|
@@ -1838,81 +2280,57 @@ Gibt den vollständigen rohen Metadaten-Cache als minifiziertes JSON zurück. En
|
|
|
1838
2280
|
{ "id": 2, "name": "UI" }
|
|
1839
2281
|
]
|
|
1840
2282
|
}
|
|
1841
|
-
|
|
2283
|
+
},
|
|
1842
2284
|
"tags": [
|
|
1843
2285
|
{ "id": 1, "name": "regression" },
|
|
1844
2286
|
{ "id": 2, "name": "hotfix" }
|
|
1845
|
-
]
|
|
1846
|
-
"cached_at": "2026-03-27T09:00:00.000Z"
|
|
2287
|
+
]
|
|
1847
2288
|
}
|
|
1848
2289
|
```
|
|
1849
2290
|
|
|
1850
|
-
> **
|
|
2291
|
+
> **Veraltet:** `get_metadata_full` wird in 2.0.0 entfernt – stattdessen `get_metadata` mit `detail: "full"` wie oben gezeigt verwenden.
|
|
1851
2292
|
|
|
1852
2293
|
---
|
|
1853
2294
|
|
|
1854
2295
|
## Version & Diagnose
|
|
1855
2296
|
|
|
1856
|
-
### MCP-Server
|
|
1857
|
-
|
|
1858
|
-
Gibt die Version dieser mantisbt-mcp-server-Instanz zurück.
|
|
1859
|
-
|
|
1860
|
-
**Tool:** `get_mcp_version`
|
|
1861
|
-
|
|
1862
|
-
**Parameter:** _(keine)_
|
|
1863
|
-
|
|
1864
|
-
**Request:**
|
|
2297
|
+
### Versionen abrufen (MCP-Server und MantisBT)
|
|
1865
2298
|
|
|
1866
|
-
|
|
1867
|
-
{}
|
|
1868
|
-
```
|
|
2299
|
+
Gibt die Version dieses mantisbt-mcp-servers und der verbundenen MantisBT-Installation in einer Antwort zurück. Mit `check_latest: true` (Standard) wird die MantisBT-Version mit dem neuesten Release auf GitHub verglichen (ausgehende HTTPS-Verbindung, max. 5 s). Ist MantisBT nicht erreichbar, enthält `mantis` ein `error`-Feld; die MCP-Server-Version wird trotzdem zurückgegeben.
|
|
1869
2300
|
|
|
1870
|
-
**
|
|
1871
|
-
|
|
1872
|
-
```json
|
|
1873
|
-
{
|
|
1874
|
-
"version": "1.5.8"
|
|
1875
|
-
}
|
|
1876
|
-
```
|
|
1877
|
-
|
|
1878
|
-
---
|
|
1879
|
-
|
|
1880
|
-
### MantisBT-Version abrufen
|
|
1881
|
-
|
|
1882
|
-
Gibt die Version der verbundenen MantisBT-Installation zurück und vergleicht sie optional mit dem neuesten offiziellen Release auf GitHub.
|
|
1883
|
-
|
|
1884
|
-
**Tool:** `get_mantis_version`
|
|
2301
|
+
**Tool:** `get_version`
|
|
1885
2302
|
|
|
1886
2303
|
**Parameter:**
|
|
1887
|
-
- `check_latest` – _(optional)_
|
|
2304
|
+
- `check_latest` – _(optional)_ MantisBT gegen das neueste GitHub-Release vergleichen; Standard `true`
|
|
1888
2305
|
|
|
1889
2306
|
**Request:**
|
|
1890
2307
|
|
|
1891
2308
|
```json
|
|
1892
|
-
{
|
|
1893
|
-
"check_latest": true
|
|
1894
|
-
}
|
|
2309
|
+
{}
|
|
1895
2310
|
```
|
|
1896
2311
|
|
|
1897
2312
|
**Response:**
|
|
1898
2313
|
|
|
1899
2314
|
```json
|
|
1900
2315
|
{
|
|
1901
|
-
"
|
|
1902
|
-
"
|
|
1903
|
-
|
|
2316
|
+
"mcp_server": { "version": "1.15.0" },
|
|
2317
|
+
"mantis": {
|
|
2318
|
+
"installed_version": "2.27.0",
|
|
2319
|
+
"latest_version": "2.27.1",
|
|
2320
|
+
"status": "update-available"
|
|
2321
|
+
}
|
|
1904
2322
|
}
|
|
1905
2323
|
```
|
|
1906
2324
|
|
|
1907
|
-
Mögliche Werte für `status`: `up-to-date`, `update-available`, `newer-than-release`, `unknown`.
|
|
2325
|
+
Mögliche Werte für `status`: `up-to-date`, `update-available`, `newer-than-release`, `unknown`. Mit `check_latest: false` den GitHub-Vergleich überspringen.
|
|
1908
2326
|
|
|
1909
|
-
> **
|
|
2327
|
+
> **Veraltet:** `get_mcp_version` und `get_mantis_version` werden in 2.0.0 entfernt – stattdessen `get_version` wie oben gezeigt verwenden.
|
|
1910
2328
|
|
|
1911
2329
|
---
|
|
1912
2330
|
|
|
1913
2331
|
### Aktuellen Benutzer abrufen
|
|
1914
2332
|
|
|
1915
|
-
Gibt das Profil des Benutzers zurück, der dem konfigurierten API-Key zugeordnet ist. Nützlich, um die Verbindung zu prüfen und das verwendete Konto zu bestätigen.
|
|
2333
|
+
Gibt das Profil des Benutzers zurück, der dem konfigurierten API-Key zugeordnet ist. Nützlich, um die Verbindung zu prüfen und das verwendete Konto zu bestätigen. Das Feld `language` gibt die MantisBT-Sprache des Benutzers an – als Hinweis, in welcher Sprache Issue-Texte und Notizen verfasst werden sollten und welche Sprache die lokalisierten Enum-Bezeichnungen haben.
|
|
1916
2334
|
|
|
1917
2335
|
**Tool:** `get_current_user`
|
|
1918
2336
|
|
|
@@ -1932,6 +2350,7 @@ Gibt das Profil des Benutzers zurück, der dem konfigurierten API-Key zugeordnet
|
|
|
1932
2350
|
"name": "jsmith",
|
|
1933
2351
|
"real_name": "John Smith",
|
|
1934
2352
|
"email": "jsmith@example.com",
|
|
2353
|
+
"language": "german",
|
|
1935
2354
|
"access_level": { "id": 55, "name": "developer" }
|
|
1936
2355
|
}
|
|
1937
2356
|
```
|
|
@@ -1974,7 +2393,7 @@ Gibt alle MantisBT-Projekte zurück, auf die der konfigurierte API-Key Zugriff h
|
|
|
1974
2393
|
|
|
1975
2394
|
**Ressource-URI:** `mantis://projects`
|
|
1976
2395
|
|
|
1977
|
-
**Abrufverhalten:** Wird aus dem MetadataCache bedient (Standard-TTL 24 h). Fällt auf einen Live-API-Aufruf zurück, wenn der Cache leer ist. `
|
|
2396
|
+
**Abrufverhalten:** Wird aus dem MetadataCache bedient (Standard-TTL 24 h). Fällt auf einen Live-API-Aufruf zurück, wenn der Cache leer ist. `get_metadata` mit `refresh: true` aufrufen, um eine Aktualisierung zu erzwingen.
|
|
1978
2397
|
|
|
1979
2398
|
**Response:**
|
|
1980
2399
|
|
|
@@ -2064,7 +2483,7 @@ Gibt gültige ID/Name-Paare für alle Issue-Enum-Felder zurück (Severity, Prior
|
|
|
2064
2483
|
}
|
|
2065
2484
|
```
|
|
2066
2485
|
|
|
2067
|
-
> **Tipp:** Das Tool `
|
|
2486
|
+
> **Tipp:** Das Tool `get_issue_schema` liefert Enum-Werte für Clients ohne Ressourcen-Unterstützung (und gibt zusätzlich die gültigen `select`-Felder zurück).
|
|
2068
2487
|
|
|
2069
2488
|
---
|
|
2070
2489
|
|
|
@@ -2090,7 +2509,7 @@ Sammelt strukturierte Bug-Daten und ruft `create_issue` auf.
|
|
|
2090
2509
|
- `actual` – tatsächliches (beobachtetes) Verhalten
|
|
2091
2510
|
- `environment` – Umgebungsangaben (Betriebssystem, Browser, Version usw.)
|
|
2092
2511
|
|
|
2093
|
-
**Ablauf:** Der Prompt liefert eine Nachricht, die den LLM anweist, zunächst `
|
|
2512
|
+
**Ablauf:** Der Prompt liefert eine Nachricht, die den LLM anweist, zunächst `get_issue_schema` aufzurufen (um gültige Schweregrad- und Prioritätswerte zu ermitteln) und anschließend `create_issue` mit den übergebenen Daten auszuführen.
|
|
2094
2513
|
|
|
2095
2514
|
**Beispielaufruf:**
|
|
2096
2515
|
|
|
@@ -2184,6 +2603,8 @@ Listet alle Issues eines Projekts auf und erstellt einen Status-Report nach Schw
|
|
|
2184
2603
|
|
|
2185
2604
|
## Destruktive Operationen
|
|
2186
2605
|
|
|
2606
|
+
> Um alle destruktiven Tools auf einmal auszublenden – etwa für eine Sitzung, die nie etwas löschen soll –, `MANTIS_DISABLE_DESTRUCTIVE=true` setzen; siehe [Nur bestimmte Tool-Gruppen anbieten](#nur-bestimmte-tool-gruppen-anbieten).
|
|
2607
|
+
|
|
2187
2608
|
### Issue löschen
|
|
2188
2609
|
|
|
2189
2610
|
Löscht ein MantisBT-Issue dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.
|