@dpesch/mantisbt-mcp-server 1.11.0 → 1.13.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/docs/cookbook.md CHANGED
@@ -4,6 +4,8 @@ Tool-oriented recipes for the MantisBT MCP server — each recipe shows exactly
4
4
 
5
5
  ---
6
6
 
7
+ - [Connection setup](#connection-setup)
8
+ - [Connect to an installation without URL rewriting](#connect-to-an-installation-without-url-rewriting)
7
9
  - [Discovering your instance](#discovering-your-instance)
8
10
  - [Get all projects](#get-all-projects)
9
11
  - [Discover valid enum values (severity, status, priority)](#discover-valid-enum-values-severity-status-priority)
@@ -50,6 +52,10 @@ Tool-oriented recipes for the MantisBT MCP server — each recipe shows exactly
50
52
  - [Projects & Categories](#projects--categories)
51
53
  - [List project categories](#list-project-categories)
52
54
  - [Find a project member](#find-a-project-member)
55
+ - [Create a project version](#create-a-project-version)
56
+ - [Update a project version](#update-a-project-version)
57
+ - [Release a version and create the next bugfix placeholder](#release-a-version-and-create-the-next-bugfix-placeholder)
58
+ - [Delete a project version](#delete-a-project-version)
53
59
  - [Metadata](#metadata)
54
60
  - [Get a metadata summary](#get-a-metadata-summary)
55
61
  - [Get the full metadata cache](#get-the-full-metadata-cache)
@@ -72,6 +78,41 @@ Tool-oriented recipes for the MantisBT MCP server — each recipe shows exactly
72
78
 
73
79
  ---
74
80
 
81
+ ## Connection setup
82
+
83
+ ### Connect to an installation without URL rewriting
84
+
85
+ Some MantisBT installations serve the REST API only through its front controller — typically Apache without `mod_rewrite`, or IIS without a rewrite module. There, `/api/rest/issues` returns 404 while `/api/rest/index.php/issues` works.
86
+
87
+ **Option A — set the flag explicitly:**
88
+
89
+ ```json
90
+ {
91
+ "env": {
92
+ "MANTIS_BASE_URL": "https://mantis.example.com",
93
+ "MANTIS_API_KEY": "your-api-token",
94
+ "MANTIS_USE_INDEX_PHP": "true"
95
+ }
96
+ }
97
+ ```
98
+
99
+ **Option B — paste the full REST URL and let the server detect it:**
100
+
101
+ ```json
102
+ {
103
+ "env": {
104
+ "MANTIS_BASE_URL": "https://mantis.example.com/api/rest/index.php",
105
+ "MANTIS_API_KEY": "your-api-token"
106
+ }
107
+ }
108
+ ```
109
+
110
+ When `MANTIS_BASE_URL` ends with `/api/rest/index.php`, index.php routing is enabled automatically. An explicitly set `MANTIS_USE_INDEX_PHP` always wins over the detection — setting it to `false` alongside such a URL forces plain `/api/rest/` routing and logs a warning on stderr.
111
+
112
+ **Verify:** call `get_mantis_version`. A successful response means the routing is correct.
113
+
114
+ ---
115
+
75
116
  ## Discovering your instance
76
117
 
77
118
  ### Get all projects
@@ -1564,6 +1605,167 @@ Searches project members by name, real name, or email. The search is case-insens
1564
1605
 
1565
1606
  ---
1566
1607
 
1608
+ ### Create a project version
1609
+
1610
+ Creates a new version in a MantisBT project. Without `timestamp`, MantisBT uses the current date. Version names must be unique within the project.
1611
+
1612
+ > **Permission required:** `manage_project_threshold` (MantisBT default: manager).
1613
+
1614
+ **Tool:** `create_version`
1615
+
1616
+ **Parameters:**
1617
+ - `project_id` — numeric project ID
1618
+ - `name` — version name, e.g. `"2.0.0"`
1619
+ - `description` — _(optional)_ version description
1620
+ - `released` — _(optional)_ mark the version as released; default `false`
1621
+ - `obsolete` — _(optional)_ mark the version as obsolete; default `false`
1622
+ - `timestamp` — _(optional)_ version date as ISO 8601 string, e.g. `"2026-09-27"`
1623
+
1624
+ **Request:**
1625
+
1626
+ ```json
1627
+ {
1628
+ "project_id": 3,
1629
+ "name": "2.0.0",
1630
+ "description": "Major rewrite"
1631
+ }
1632
+ ```
1633
+
1634
+ **Response:**
1635
+
1636
+ ```json
1637
+ {
1638
+ "id": 50,
1639
+ "name": "2.0.0",
1640
+ "description": "Major rewrite",
1641
+ "released": false,
1642
+ "obsolete": false,
1643
+ "timestamp": "2026-09-27T00:00:00+00:00"
1644
+ }
1645
+ ```
1646
+
1647
+ ---
1648
+
1649
+ ### Update a project version
1650
+
1651
+ Updates an existing version of a MantisBT project. Only the fields you pass are changed; at least one field is required. Renaming a version also rewrites the `version`, `target_version`, and `fixed_in_version` fields of all issues that reference it (including subprojects with inherited versions).
1652
+
1653
+ > **Permission required:** `manage_project_threshold` (MantisBT default: manager). Versions inherited from a parent project can only be changed via the parent's `project_id`.
1654
+
1655
+ **Tool:** `update_version`
1656
+
1657
+ **Parameters:**
1658
+ - `project_id` — numeric project ID
1659
+ - `version_id` — numeric version ID (use `get_project_versions` to discover)
1660
+ - `name` — _(optional)_ new version name (must be unique within the project)
1661
+ - `description` — _(optional)_ new version description
1662
+ - `released` — _(optional)_ released flag
1663
+ - `obsolete` — _(optional)_ obsolete flag
1664
+ - `timestamp` — _(optional)_ version date as ISO 8601 string
1665
+
1666
+ **Request:** _(mark a version as obsolete)_
1667
+
1668
+ ```json
1669
+ {
1670
+ "project_id": 3,
1671
+ "version_id": 21,
1672
+ "obsolete": true
1673
+ }
1674
+ ```
1675
+
1676
+ **Response:**
1677
+
1678
+ ```json
1679
+ {
1680
+ "id": 21,
1681
+ "name": "1.9.0",
1682
+ "released": true,
1683
+ "obsolete": true,
1684
+ "timestamp": "2025-06-01T00:00:00+00:00"
1685
+ }
1686
+ ```
1687
+
1688
+ ---
1689
+
1690
+ ### Release a version and create the next bugfix placeholder
1691
+
1692
+ Marks a version as released (setting its date) and creates a follow-up version placeholder in the same call. The follow-up version name is used as-is — no automatic numbering. If the follow-up creation fails, the release stays in effect and the error is reported in `next_version_error`.
1693
+
1694
+ > **Permission required:** `manage_project_threshold` (MantisBT default: manager). Versions inherited from a parent project can only be changed via the parent's `project_id`.
1695
+
1696
+ **Tool:** `release_version`
1697
+
1698
+ **Parameters:**
1699
+ - `project_id` — numeric project ID
1700
+ - `version_id` — numeric version ID of the version to release
1701
+ - `timestamp` — _(optional)_ release date as ISO 8601 string; default: now
1702
+ - `next_version` — _(optional)_ name of the follow-up version to create as an unreleased placeholder
1703
+
1704
+ **Request:**
1705
+
1706
+ ```json
1707
+ {
1708
+ "project_id": 3,
1709
+ "version_id": 42,
1710
+ "timestamp": "2026-09-27",
1711
+ "next_version": "1.2.1"
1712
+ }
1713
+ ```
1714
+
1715
+ **Response:**
1716
+
1717
+ ```json
1718
+ {
1719
+ "released": {
1720
+ "id": 42,
1721
+ "name": "1.2.0",
1722
+ "released": true,
1723
+ "obsolete": false,
1724
+ "timestamp": "2026-09-27T00:00:00+00:00"
1725
+ },
1726
+ "next_version": {
1727
+ "id": 43,
1728
+ "name": "1.2.1",
1729
+ "released": false,
1730
+ "obsolete": false,
1731
+ "timestamp": "2026-09-27T00:00:00+00:00"
1732
+ }
1733
+ }
1734
+ ```
1735
+
1736
+ > **Note:** Setting `released=true` via `update_version` does not change the version date — use `release_version` when you want to set both in one step.
1737
+
1738
+ ---
1739
+
1740
+ ### Delete a project version
1741
+
1742
+ Permanently deletes a version from a MantisBT project. This action is irreversible. MantisBT clears the `version`, `target_version`, and `fixed_in_version` fields of all issues that reference the deleted version. To retire a version without touching issues, use `update_version` with `obsolete=true` instead.
1743
+
1744
+ > **Permission required:** `manage_project_threshold` (MantisBT default: manager). Versions inherited from a parent project can only be deleted via the parent's `project_id`.
1745
+
1746
+ **Tool:** `delete_version`
1747
+
1748
+ **Parameters:**
1749
+ - `project_id` — numeric project ID
1750
+ - `version_id` — numeric version ID
1751
+
1752
+ **Request:**
1753
+
1754
+ ```json
1755
+ {
1756
+ "project_id": 3,
1757
+ "version_id": 7
1758
+ }
1759
+ ```
1760
+
1761
+ **Response:**
1762
+
1763
+ ```
1764
+ Version 7 deleted successfully.
1765
+ ```
1766
+
1767
+ ---
1768
+
1567
1769
  ## Metadata
1568
1770
 
1569
1771
  ### Get a metadata summary
@@ -1,6 +1,6 @@
1
1
  # Anwendungsbeispiele
2
2
 
3
- Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der MCP-Server verbunden ist. Einfach in natürlicher Sprache fragen — keine Tool-Namen oder Parameter erforderlich. Für exakte Tool-Aufrufe und Parameter siehe das [Cookbook](cookbook.de.md).
3
+ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der MCP-Server verbunden ist. Einfach in natürlicher Sprache fragen – keine Tool-Namen oder Parameter erforderlich. Für exakte Tool-Aufrufe und Parameter siehe das [Cookbook](cookbook.de.md).
4
4
 
5
5
  ---
6
6
 
@@ -16,7 +16,7 @@ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der
16
16
 
17
17
  > »Was ist der Status von Issue #1042?«
18
18
 
19
- > »Zeige mir von Issue #1042 nur Titel, Status und Bearbeiter — ohne die vollständige Beschreibung und Notizen.«
19
+ > »Zeige mir von Issue #1042 nur Titel, Status und Bearbeiter – ohne die vollständige Beschreibung und Notizen.«
20
20
 
21
21
  > »Zeige mir alle Issues, die jsmith diesen Monat gemeldet hat.«
22
22
 
@@ -28,7 +28,7 @@ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der
28
28
 
29
29
  > »Erstelle einen Bug-Report: Auf der Checkout-Seite wird die Bestellung doppelt abgeschickt, wenn man zweimal auf 'Bestellen' klickt. Kategorie: Shop, Schweregrad: schwerwiegend.«
30
30
 
31
- > »Öffne ein neues Issue im API-Projekt — der Token-Refresh-Endpoint gibt 500 zurück, wenn das Refresh-Token abgelaufen ist. Dem Backend-Team zuweisen.«
31
+ > »Öffne ein neues Issue im API-Projekt – der Token-Refresh-Endpoint gibt 500 zurück, wenn das Refresh-Token abgelaufen ist. Dem Backend-Team zuweisen.«
32
32
 
33
33
  > »Erstelle einen Feature-Request im Frontend-Projekt für einen Dunkelmodus in den Benutzereinstellungen. Niedrige Priorität, kein Fälligkeitsdatum.«
34
34
 
@@ -76,7 +76,7 @@ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der
76
76
 
77
77
  > »Verknüpfe #901 und #902 als verwandte Issues.«
78
78
 
79
- > »Issue #1100 blockiert #1101 — bitte diese Beziehung anlegen.«
79
+ > »Issue #1100 blockiert #1101 – bitte diese Beziehung anlegen.«
80
80
  > *(Richtung ist entscheidend: #1100 ist das blockierende Issue)*
81
81
 
82
82
  ---
@@ -107,6 +107,18 @@ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der
107
107
 
108
108
  ---
109
109
 
110
+ ### Projektversionen verwalten
111
+
112
+ > »Erstelle Version 2.0.0 in Projekt 3.«
113
+
114
+ > »Markiere Version 1.4.0 von Projekt 5 als veröffentlicht und lege 1.4.1 als nächste Version an.«
115
+
116
+ > »Markiere Version 1.0 im Backend-Projekt als veraltet.«
117
+
118
+ > »Lösche Version 0.9-test aus Projekt 3.«
119
+
120
+ ---
121
+
110
122
  ### Triage und Auswertung
111
123
 
112
124
  > »Gib mir einen Überblick über alle kritischen und dringenden offenen Issues in allen Projekten.«
@@ -123,7 +135,7 @@ Praktische Beispiele für die Interaktion mit MantisBT über Claude, sobald der
123
135
 
124
136
  ## Geführte Prompt-Workflows
125
137
 
126
- Der Server enthält Prompt-Templates, die Claude durch strukturierte Arbeitsabläufe führen — Tool-Namen oder Parameter müssen nicht manuell angegeben werden. Die Prompts werden aus einem MCP-fähigen Client beim Namen aufgerufen.
138
+ Der Server enthält Prompt-Templates, die Claude durch strukturierte Arbeitsabläufe führen – Tool-Namen oder Parameter müssen nicht manuell angegeben werden. Die Prompts werden aus einem MCP-fähigen Client beim Namen aufgerufen.
127
139
 
128
140
  ### Issues über Prompt-Templates anlegen
129
141
 
@@ -141,7 +153,7 @@ Der Server enthält Prompt-Templates, die Claude durch strukturierte Arbeitsabl
141
153
 
142
154
  ## Semantische Suche
143
155
 
144
- Die semantische Suche versteht die *Bedeutung* deiner Frage — nicht nur einzelne Schlüsselwörter. Sie findet konzeptionell verwandte Issues, auch wenn die genaue Formulierung abweicht. Aktivierung mit `MANTIS_SEARCH_ENABLED=true`.
156
+ Die semantische Suche versteht die *Bedeutung* deiner Frage – nicht nur einzelne Schlüsselwörter. Sie findet konzeptionell verwandte Issues, auch wenn die genaue Formulierung abweicht. Aktivierung mit `MANTIS_SEARCH_ENABLED=true`.
145
157
 
146
158
  ### Duplikaterkennung vor dem Anlegen
147
159
 
@@ -155,7 +167,7 @@ Die semantische Suche versteht die *Bedeutung* deiner Frage — nicht nur einzel
155
167
 
156
168
  ### Thematische Übersichten
157
169
 
158
- > »Zeig mir relevante Issues rund um die Zahlungsabwicklung — projektübergreifend.«
170
+ > »Zeig mir relevante Issues rund um die Zahlungsabwicklung – projektübergreifend.«
159
171
 
160
172
  > »Zeig mir Beispiele für gemeldete E-Mail-Zustellungsfehler.«
161
173
 
@@ -171,15 +183,15 @@ Die semantische Suche versteht die *Bedeutung* deiner Frage — nicht nur einzel
171
183
 
172
184
  > »Suche nach 'Rechnungsexport' und markiere die relevanten Ausschnitte in Titel und Beschreibung.«
173
185
 
174
- Exakte Parameter und Response-Shape: [Cookbook — Suche mit Keyword-Highlights](cookbook.de.md#suche-mit-keyword-highlights).
186
+ Exakte Parameter und Response-Shape: [Cookbook – Suche mit Keyword-Highlights](cookbook.de.md#suche-mit-keyword-highlights).
175
187
 
176
188
  ---
177
189
 
178
190
  ### Unscharfe / terminologieunabhängige Suche
179
191
 
180
- > »Finde Issues zu 'doppelten Einträgen' — sie könnten auch als 'zweimal angezeigt', 'doppelte Datensätze' oder 'Phantom-Zeilen' beschrieben sein.«
192
+ > »Finde Issues zu 'doppelten Einträgen' – sie könnten auch als 'zweimal angezeigt', 'doppelte Datensätze' oder 'Phantom-Zeilen' beschrieben sein.«
181
193
 
182
- > »Suche nach authentifizierungsbezogenen Issues — die Berichte verwenden möglicherweise 'Login', 'Anmeldung', 'Token', 'Session' oder 'Auth'.«
194
+ > »Suche nach authentifizierungsbezogenen Issues – die Berichte verwenden möglicherweise 'Login', 'Anmeldung', 'Token', 'Session' oder 'Auth'.«
183
195
 
184
196
  ---
185
197
 
@@ -203,7 +215,7 @@ Exakte Parameter und Response-Shape: [Cookbook — Suche mit Keyword-Highlights]
203
215
 
204
216
  ## Ressourcen
205
217
 
206
- MCP-Ressourcen sind URI-adressierbare, schreibgeschützte Daten, die Clients direkt per URI abrufen können — kein Tool-Aufruf nötig. Die Ressourcen-Unterstützung variiert je nach Client; wenn der verwendete Client keine Ressourcen unterstützt, das entsprechende Tool als Alternative verwenden.
218
+ MCP-Ressourcen sind URI-adressierbare, schreibgeschützte Daten, die Clients direkt per URI abrufen können – kein Tool-Aufruf nötig. Die Ressourcen-Unterstützung variiert je nach Client; wenn der verwendete Client keine Ressourcen unterstützt, das entsprechende Tool als Alternative verwenden.
207
219
 
208
220
  ### Server-Zustand über Ressourcen abrufen
209
221
 
package/docs/examples.md CHANGED
@@ -107,6 +107,18 @@ Practical examples of how to interact with MantisBT through Claude once the MCP
107
107
 
108
108
  ---
109
109
 
110
+ ### Managing project versions
111
+
112
+ > "Create version 2.0.0 in project 3."
113
+
114
+ > "Mark version 1.4.0 of project 5 as released and create 1.4.1 as the next version."
115
+
116
+ > "Mark version 1.0 as obsolete in the Backend project."
117
+
118
+ > "Delete version 0.9-test from project 3."
119
+
120
+ ---
121
+
110
122
  ### Triage and reporting
111
123
 
112
124
  > "Give me an overview of all critical and urgent open issues across all projects."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dpesch/mantisbt-mcp-server",
3
- "version": "1.11.0",
3
+ "version": "1.13.0",
4
4
  "mcpName": "io.github.dpesch/mantisbt-mcp-server",
5
5
  "description": "MCP server for MantisBT REST API – read and manage bug tracker issues",
6
6
  "author": "Dominik Pesch",
package/server.json CHANGED
@@ -3,12 +3,12 @@
3
3
  "name": "io.github.dpesch/mantisbt-mcp-server",
4
4
  "title": "MantisBT MCP Server",
5
5
  "description": "MantisBT MCP server – manage issues, notes, files, tags, and relationships. With semantic search.",
6
- "version": "1.11.0",
6
+ "version": "1.13.0",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "@dpesch/mantisbt-mcp-server",
11
- "version": "1.11.0",
11
+ "version": "1.13.0",
12
12
  "runtimeHint": "npx",
13
13
  "transport": {
14
14
  "type": "stdio"
@@ -29,6 +29,14 @@
29
29
  "isSecret": true,
30
30
  "format": "string"
31
31
  },
32
+ {
33
+ "name": "MANTIS_USE_INDEX_PHP",
34
+ "description": "Use /api/rest/index.php/ for MantisBT installations without URL rewriting. Detected automatically when MANTIS_BASE_URL ends with /api/rest/index.php",
35
+ "isRequired": false,
36
+ "isSecret": false,
37
+ "format": "boolean",
38
+ "default": "false"
39
+ },
32
40
  {
33
41
  "name": "MANTIS_CACHE_DIR",
34
42
  "description": "Directory for the metadata cache. Defaults to ~/.cache/mantisbt-mcp",