@softspark/jira-mcp 1.0.0 → 1.2.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 +51 -1
- package/README.md +9 -12
- package/dist/cli.js +75 -61
- package/dist/index.d.ts +5 -2
- package/dist/index.js +71 -57
- package/package.json +10 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,56 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## v1.2.0 -- Per-Instance Credentials & Jira API Migration (2026-04-14)
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Per-instance credentials** -- `set-credentials --url` flag allows different API tokens per Jira instance. Auto-migrates legacy Format A to Format B on first use.
|
|
14
|
+
- **Live Jira API smoke tests** -- post-release SOP now includes Phase 4 with 15 steps testing all MCP tools against the KAN sandbox project.
|
|
15
|
+
- **`validate_counts.py` in pre-commit SOP** -- added as Step 5 to catch README count drift before commit.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
- **Search endpoint migrated** -- `/rest/api/3/search` → `/rest/api/3/search/jql` (Jira Cloud deprecated the old endpoint with HTTP 410).
|
|
19
|
+
- **`set-credentials` CLI** -- read-modify-write instead of overwrite. Preserves existing credentials when adding instance overrides.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **Jira Cloud 410 on sync/search** -- `sync_tasks` and `search_tasks` failed on instances where Jira had removed the legacy search endpoint.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## v1.1.0 -- Hardening & Market Readiness (2026-04-14)
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
- **Boundary test suite** -- 96 new tests covering `server.ts` (25), `cli/index.ts` (27), and `JiraConnector` (44). Total: 509 tests across 51 files.
|
|
30
|
+
- **Retry/backoff for transient failures** -- `JiraConnector` retries 429 and 503 responses up to 3 times with exponential backoff (1s/2s/4s). Respects `Retry-After` header.
|
|
31
|
+
- **Count validation script** -- `scripts/validate_counts.py` verifies README counts match source code. Enforced in CI via `validate-counts` job.
|
|
32
|
+
- **Count validation in CI** -- new `validate-counts` job in `ci.yml` catches README drift before merge.
|
|
33
|
+
- **ADR-0001** -- documented "hardening before refactor" decision with alternatives and guardrails.
|
|
34
|
+
- **Hardening plan** -- full plan with success criteria and pre-mortem in `kb/planning/`.
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
- **server.ts refactored** -- 719 → 324 lines (-55%). Tool definitions extracted to `src/tools/definitions.ts`, argument helpers to `src/tools/args.ts`.
|
|
38
|
+
- **Major dependency upgrades** -- TypeScript 5 → 6, ESLint 9 → 10, zod 3 → 4, vitest 3 → 4, @types/node 22 → 25.
|
|
39
|
+
- **TypeScript 6 migration** -- added `types: ["node"]` and `ignoreDeprecations: "6.0"` to tsconfig.
|
|
40
|
+
- **zod 4 migration** -- `.default({})` replaced with factory function in `BulkOptionsSchema`.
|
|
41
|
+
- **vitest 4 migration** -- arrow function mocks replaced with regular function syntax for constructor compatibility.
|
|
42
|
+
- **Bundle size** -- 325KB → 520KB (due to zod 4, which is significantly larger).
|
|
43
|
+
- **README** -- "Zero runtime dependencies" corrected to "Minimal runtime dependencies". Test counts updated.
|
|
44
|
+
- **CONTRIBUTING.md** -- full CI workflow documented, `validate:counts` noted as maintainer-managed.
|
|
45
|
+
- **Coverage exclusions reduced** -- `server.ts` and `jira-connector.ts` removed from vitest exclusion list.
|
|
46
|
+
|
|
47
|
+
### Security
|
|
48
|
+
- **Cache file permissions** -- all cache writes use `mode: 0o600` (owner-only). Prevents local privilege escalation on shared machines.
|
|
49
|
+
- **CWD config loading warning** -- stderr warning when `config.json` or `credentials.json` loaded from working directory instead of global config.
|
|
50
|
+
- **Error message truncation** -- Jira API error responses truncated to 200 characters to prevent information leakage.
|
|
51
|
+
- **`saveJsonFile` JSDoc** -- `@security` annotation warns against use for sensitive data.
|
|
52
|
+
|
|
53
|
+
### Documentation
|
|
54
|
+
- **Hardcoded counts removed** from secondary docs (CLAUDE.md, kb/, rules/, copilot-instructions). Counts live only in README (single source of truth pattern from ai-toolkit).
|
|
55
|
+
- **KB docs updated** -- caching.md, architecture.md, configuration.md, troubleshooting/common-issues.md reflect security changes.
|
|
56
|
+
- **Release SOP updated** -- Step 4.5 (validate counts) and Step 3.2 (README "What's New" update) added.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
10
60
|
## v1.0.0 -- Initial Public Release (2026-04-14)
|
|
11
61
|
|
|
12
62
|
### MCP Tools (15)
|
|
@@ -27,7 +77,7 @@ Versioning follows [Semantic Versioning](https://semver.org/).
|
|
|
27
77
|
- **`create_task`** -- create a new Jira issue with ADF description, assignee, labels, epic link
|
|
28
78
|
- **`search_tasks`** -- search Jira issues with raw JQL (no caching)
|
|
29
79
|
|
|
30
|
-
### CLI Commands (
|
|
80
|
+
### CLI Commands (16)
|
|
31
81
|
|
|
32
82
|
- **`jira-mcp`** / **`jira-mcp serve`** -- start MCP server (stdio transport)
|
|
33
83
|
- **`jira-mcp config init`** -- initialize global config at `~/.softspark/jira-mcp/`
|
package/README.md
CHANGED
|
@@ -4,20 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/softspark/jira-mcp/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/@softspark/jira-mcp)
|
|
7
|
-
[](CHANGELOG.md)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## What's New in v1.
|
|
12
|
+
## What's New in v1.2.0
|
|
13
13
|
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **Per-instance credentials** -- different username/token per Jira instance URL (Format A + Format B).
|
|
19
|
-
- **Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires.
|
|
20
|
-
- **413 tests** across 47 test files with strict TypeScript.
|
|
14
|
+
- **Per-instance credentials** -- `set-credentials --url` allows different API tokens per Jira instance. Auto-migrates legacy format.
|
|
15
|
+
- **Jira Cloud API migration** -- search endpoint updated to `/rest/api/3/search/jql` (old endpoint returns 410).
|
|
16
|
+
- **Live Jira smoke tests** -- post-release SOP tests all 15 MCP tools against a sandbox project.
|
|
17
|
+
- **518 tests** across 52 test files.
|
|
21
18
|
|
|
22
19
|
See [CHANGELOG.md](CHANGELOG.md) for full details.
|
|
23
20
|
|
|
@@ -163,7 +160,7 @@ Or copy `rules/jira-mcp.md` to your ai-toolkit rules directory manually. The rul
|
|
|
163
160
|
- **Sync before read** -- cache may be stale
|
|
164
161
|
- **Status transitions** -- check valid transitions before changing status
|
|
165
162
|
- **Time format** -- `"2h 30m"`, never days
|
|
166
|
-
- **All 15 MCP tools** and **
|
|
163
|
+
- **All 15 MCP tools** and **16 CLI commands** reference
|
|
167
164
|
|
|
168
165
|
## Usage with Other MCP Clients
|
|
169
166
|
|
|
@@ -219,11 +216,11 @@ src/
|
|
|
219
216
|
|
|
220
217
|
**Per-instance credentials** -- different API tokens per Jira instance URL. Single-credential format still works (backward compatible). See [Configuration](kb/reference/configuration.md).
|
|
221
218
|
|
|
222
|
-
**Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained
|
|
219
|
+
**Supply chain protection** -- `ignore-scripts=true`, no axios, no dynamic requires. Self-contained 520KB bundle, 1 runtime dep (commander).
|
|
223
220
|
|
|
224
221
|
**Typed error hierarchy** -- 15 error classes with machine-readable codes. Every tool returns structured `{ success, error, code }` responses. No stack traces leak to MCP clients.
|
|
225
222
|
|
|
226
|
-
**Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries,
|
|
223
|
+
**Strict TypeScript** -- `strict: true`, no `any`, `readonly` interfaces, Zod validation at all boundaries, 518 tests across 52 test files. Self-contained 520KB package.
|
|
227
224
|
|
|
228
225
|
## Documentation
|
|
229
226
|
|