@dpesch/mantisbt-mcp-server 1.10.0 → 1.10.1

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.
@@ -0,0 +1,32 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Node.js
17
+ uses: actions/setup-node@v4
18
+ with:
19
+ node-version: '20'
20
+ cache: 'npm'
21
+
22
+ - name: Install dependencies
23
+ run: npm ci
24
+
25
+ - name: Type check
26
+ run: npm run typecheck
27
+
28
+ - name: Build
29
+ run: npm run build
30
+
31
+ - name: Test
32
+ run: npm test
package/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ This project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## [1.10.1] – 2026-05-02
11
+
12
+ ### Added
13
+ - GitHub Actions CI workflow (`.github/workflows/ci.yml`): runs on push and pull requests to `main`; steps are typecheck, build, and test on Node.js 20.
14
+
15
+ ### Changed
16
+ - Improved descriptions for `upload_file` and `list_issue_files`: both now include return shape, usage guidelines, and cross-references to related tools.
17
+
18
+ ### Fixed
19
+ - `upload_file`: removed Zod `.refine()` calls from `inputSchema`. MCP SDK 1.27.x serialized `ZodEffects` (the type produced by `.refine()`) to an empty `properties: {}` object, making all parameters invisible to clients. Imperative validation in the handler is unchanged — the same constraints are still enforced at runtime.
20
+
21
+ ---
22
+
10
23
  ## [1.10.0] – 2026-04-11
11
24
 
12
25
  ### Added
@@ -15,7 +15,9 @@ export function registerFileTools(server, client, uploadDir) {
15
15
  // ---------------------------------------------------------------------------
16
16
  server.registerTool('list_issue_files', {
17
17
  title: 'List Issue File Attachments',
18
- description: 'List all file attachments of a MantisBT issue.',
18
+ description: `List all file attachments of a MantisBT issue. Returns an array of attachment objects, each containing id, filename, size in bytes, content_type, and download_url. Returns an empty array if the issue has no attachments.
19
+
20
+ Use this tool when you need to inspect or enumerate files attached to an issue. To add a new attachment, use upload_file instead. To retrieve full issue details that include attachments alongside other fields, use get_issue instead.`,
19
21
  inputSchema: z.object({
20
22
  issue_id: z.coerce.number().int().positive().describe('Numeric issue ID'),
21
23
  }),
@@ -42,13 +44,15 @@ export function registerFileTools(server, client, uploadDir) {
42
44
  // ---------------------------------------------------------------------------
43
45
  server.registerTool('upload_file', {
44
46
  title: 'Upload File Attachment',
45
- description: `Upload a file as an attachment to a MantisBT issue via multipart/form-data.
47
+ description: `Upload a file as an attachment to a MantisBT issue. Adds the file to the issue without modifying any issue fields or status. Returns the created attachment metadata on success.
48
+
49
+ Two input modes — exactly one must be provided:
50
+ - file_path: absolute path to a local file; filename is derived from the path automatically
51
+ - content: Base64-encoded file content; filename must be supplied explicitly via the filename parameter
46
52
 
47
- Two input modes (exactly one must be provided):
48
- - file_path: absolute path to a local file — filename is derived from the path automatically
49
- - content: Base64-encoded file content — filename must be supplied explicitly via the filename parameter
53
+ The optional content_type sets the MIME type (e.g. "image/png"); defaults to "application/octet-stream". Use the optional description to annotate the attachment.
50
54
 
51
- The optional content_type parameter sets the MIME type (e.g. "image/png"). If omitted, "application/octet-stream" is used.`,
55
+ Use this tool to attach files such as logs, screenshots, or patches to an existing issue. To list existing attachments, use list_issue_files. To retrieve issue details, use get_issue.`,
52
56
  inputSchema: z.object({
53
57
  issue_id: z.coerce.number().int().positive().describe('Numeric issue ID'),
54
58
  file_path: z.string().min(1).optional().describe('Absolute path to the local file to upload (mutually exclusive with content)'),
@@ -56,12 +60,6 @@ The optional content_type parameter sets the MIME type (e.g. "image/png"). If om
56
60
  filename: z.string().min(1).optional().describe('File name for the attachment (required when using content; overrides the derived name when using file_path)'),
57
61
  content_type: z.string().optional().describe('MIME type of the file, e.g. "image/png" (default: "application/octet-stream")'),
58
62
  description: z.string().optional().describe('Optional description for the attachment'),
59
- }).refine(d => !!(d.file_path ?? d.content), {
60
- message: 'Either file_path or content must be provided',
61
- }).refine(d => !(d.file_path && d.content), {
62
- message: 'Only one of file_path or content may be provided',
63
- }).refine(d => !d.content || !!d.filename, {
64
- message: 'filename is required when using content',
65
63
  }),
66
64
  annotations: {
67
65
  readOnlyHint: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dpesch/mantisbt-mcp-server",
3
- "version": "1.10.0",
3
+ "version": "1.10.1",
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.10.0",
6
+ "version": "1.10.1",
7
7
  "packages": [
8
8
  {
9
9
  "registryType": "npm",
10
10
  "identifier": "@dpesch/mantisbt-mcp-server",
11
- "version": "1.10.0",
11
+ "version": "1.10.1",
12
12
  "runtimeHint": "npx",
13
13
  "transport": {
14
14
  "type": "stdio"