@atlassian-dc-mcp/jira 0.12.2 → 0.14.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 CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.14.0](https://github.com/b1ff/atlassian-dc-mcp/compare/v0.13.0...v0.14.0) (2026-03-23)
7
+
8
+ **Note:** Version bump only for package @atlassian-dc-mcp/jira
9
+
10
+
11
+
12
+
13
+
14
+ # [0.13.0](https://github.com/b1ff/atlassian-dc-mcp/compare/v0.12.2...v0.13.0) (2026-03-21)
15
+
16
+
17
+ ### Features
18
+
19
+ * add ability to specify external config file to MCP, to provide configuration to MCP without specifying credentials in the file ([c97d380](https://github.com/b1ff/atlassian-dc-mcp/commit/c97d38004ebc7e233ea276a36c2e233536d2d0ca))
20
+ * **jira:** add configurable issue field projections ([06c50a9](https://github.com/b1ff/atlassian-dc-mcp/commit/06c50a978f8d2e7b0f8c9e8a6e7f7706dcc879ab))
21
+
22
+
23
+
24
+
25
+
6
26
  ## [0.12.2](https://github.com/b1ff/atlassian-dc-mcp/compare/v0.12.1...v0.12.2) (2026-03-21)
7
27
 
8
28
 
package/README.md CHANGED
@@ -31,6 +31,38 @@ Windows:
31
31
  }
32
32
  ```
33
33
 
34
+ To reuse one shared dotenv file across multiple tools or MCP hosts, point the server at an absolute file path:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "atlassian-jira-dc": {
40
+ "command": "npx",
41
+ "args": ["-y", "@atlassian-dc-mcp/jira"],
42
+ "env": {
43
+ "ATLASSIAN_DC_MCP_CONFIG_FILE": "/Users/your-user/.config/atlassian-dc-mcp.env"
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ Windows example:
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "atlassian-jira-dc": {
56
+ "command": "npx",
57
+ "args": ["-y", "@atlassian-dc-mcp/jira"],
58
+ "env": {
59
+ "ATLASSIAN_DC_MCP_CONFIG_FILE": "C:\\\\Users\\\\your-user\\\\AppData\\\\Roaming\\\\atlassian-dc-mcp.env"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
34
66
  Note: Set `JIRA_HOST` variable only to domain + port without a protocol (e.g., `your-instance.atlassian.net`). The https protocol is assumed.
35
67
 
36
68
  Alternatively, you can use `JIRA_API_BASE_PATH` instead of `JIRA_HOST` to specify the complete API base URL including protocol (e.g., `https://your-instance.atlassian.net/rest`). Note that the `/api/2/search/` part is static and added automatically in the code, so you don't need to include it in the `JIRA_API_BASE_PATH` value.
@@ -50,15 +82,20 @@ Alternatively, you can use `JIRA_API_BASE_PATH` instead of `JIRA_HOST` to specif
50
82
  npm install
51
83
  ```
52
84
 
53
- 2. Create a `.env` file in the packages/jira directory with the following variables:
85
+ 2. Create a `.env` file in the packages/jira directory, or put the same values in a shared dotenv file and set `ATLASSIAN_DC_MCP_CONFIG_FILE` to its absolute path:
54
86
  ```
55
87
  JIRA_HOST=your-jira-instance.atlassian.net
56
88
  # OR alternatively use
57
89
  # JIRA_API_BASE_PATH=https://your-jira-instance.atlassian.net/rest
58
90
  # Note: /api/latest/ is added automatically, do not include it
59
91
  JIRA_API_TOKEN=your-personal-access-token
92
+
93
+ # Optional: default page size for paginated read tools (fallback: 25)
94
+ JIRA_DEFAULT_PAGE_SIZE=25
60
95
  ```
61
96
 
97
+ Direct environment variables override values loaded from `ATLASSIAN_DC_MCP_CONFIG_FILE`.
98
+
62
99
  To create a personal access token:
63
100
  - In Jira, select your profile picture at the top right
64
101
  - Select **Personal Access Tokens**
@@ -87,9 +124,10 @@ Search for JIRA issues using JQL in the JIRA Data Center edition instance.
87
124
 
88
125
  Parameters:
89
126
  - `jql` (string, required): JIRA Query Language search string
90
- - `expand` (array, optional): Fields to expand in the response
127
+ - `expand` (array, optional): Additional response sections to expand, such as `renderedFields`, `names`, or `schema`
91
128
  - `startAt` (number, optional): Starting index for pagination
92
- - `maxResults` (number, optional): Maximum number of results to return (default: 10)
129
+ - `maxResults` (number, optional): Maximum number of results to return. Defaults to `JIRA_DEFAULT_PAGE_SIZE` or `25`.
130
+ - `fields` (array, optional): Issue field names to return. When omitted, the tool uses a moderate-detail default field set.
93
131
 
94
132
  #### 2. jira_getIssue
95
133
 
@@ -97,7 +135,8 @@ Get details of a JIRA issue by its key from the JIRA Data Center edition instanc
97
135
 
98
136
  Parameters:
99
137
  - `issueKey` (string, required): The issue key (e.g., "PROJECT-123")
100
- - `expand` (string, optional): Comma-separated list of fields to expand
138
+ - `expand` (string, optional): Comma-separated response sections to expand, such as `renderedFields`, `changelog`, or `transitions`
139
+ - `fields` (array, optional): Issue field names to return. When omitted, the tool uses the search default field set plus `parent` and `subtasks`.
101
140
 
102
141
  #### 3. jira_getIssueComments
103
142
 
@@ -105,7 +144,9 @@ Get comments for a JIRA issue from the JIRA Data Center edition instance.
105
144
 
106
145
  Parameters:
107
146
  - `issueKey` (string, required): The issue key (e.g., "PROJECT-123")
108
- - `expand` (string, optional): Comma-separated list of fields to expand
147
+ - `expand` (string, optional): Comma-separated comment expansions, such as `renderedBody`
148
+ - `maxResults` (number, optional): Maximum number of comments to return. Defaults to `JIRA_DEFAULT_PAGE_SIZE` or `25`.
149
+ - `startAt` (number, optional): Starting comment offset for pagination
109
150
 
110
151
  #### 4. jira_createIssue
111
152
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ describe('Jira config', () => {
5
+ const originalEnv = process.env;
6
+ const originalCwd = process.cwd();
7
+ let tempDir;
8
+ beforeEach(() => {
9
+ jest.resetModules();
10
+ process.env = { ...originalEnv };
11
+ delete process.env.ATLASSIAN_DC_MCP_CONFIG_FILE;
12
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'jira-config-'));
13
+ process.chdir(tempDir);
14
+ });
15
+ afterEach(() => {
16
+ fs.rmSync(tempDir, { recursive: true, force: true });
17
+ process.chdir(originalCwd);
18
+ });
19
+ afterAll(() => {
20
+ process.env = originalEnv;
21
+ });
22
+ it('uses the configured page size when the env var is a positive integer', async () => {
23
+ process.env.JIRA_DEFAULT_PAGE_SIZE = '40';
24
+ const { getDefaultPageSize } = await import('../config.js');
25
+ expect(getDefaultPageSize()).toBe(40);
26
+ });
27
+ it('falls back to 25 when the env var is invalid', async () => {
28
+ process.env.JIRA_DEFAULT_PAGE_SIZE = 'invalid';
29
+ const { getDefaultPageSize } = await import('../config.js');
30
+ expect(getDefaultPageSize()).toBe(25);
31
+ });
32
+ it('reads the page size from the shared config file', async () => {
33
+ const sharedConfigPath = path.join(tempDir, 'shared.env');
34
+ fs.writeFileSync(sharedConfigPath, 'JIRA_HOST=file-host\nJIRA_API_TOKEN=file-token\nJIRA_DEFAULT_PAGE_SIZE=35\n');
35
+ process.env.ATLASSIAN_DC_MCP_CONFIG_FILE = sharedConfigPath;
36
+ const { getDefaultPageSize, getJiraRuntimeConfig } = await import('../config.js');
37
+ expect(getDefaultPageSize()).toBe(35);
38
+ expect(getJiraRuntimeConfig().token).toBe('file-token');
39
+ });
40
+ it('keeps env values higher priority than the shared config file', async () => {
41
+ const sharedConfigPath = path.join(tempDir, 'shared.env');
42
+ fs.writeFileSync(sharedConfigPath, 'JIRA_HOST=file-host\nJIRA_API_TOKEN=file-token\nJIRA_DEFAULT_PAGE_SIZE=35\n');
43
+ process.env.ATLASSIAN_DC_MCP_CONFIG_FILE = sharedConfigPath;
44
+ process.env.JIRA_DEFAULT_PAGE_SIZE = '45';
45
+ const { getDefaultPageSize } = await import('../config.js');
46
+ expect(getDefaultPageSize()).toBe(45);
47
+ });
48
+ });
49
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jira-runtime-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-runtime-config.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/jira-runtime-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { initializeRuntimeConfig } from '@atlassian-dc-mcp/common';
5
+ import { getJiraRuntimeConfig } from '../config.js';
6
+ import { JiraService } from '../jira-service.js';
7
+ import { OpenAPI } from '../jira-client/core/OpenAPI.js';
8
+ import { getHeaders } from '../jira-client/core/request.js';
9
+ describe('Jira runtime config integration', () => {
10
+ const originalEnv = process.env;
11
+ let tempDir;
12
+ let sharedConfigPath;
13
+ beforeEach(() => {
14
+ process.env = { ...originalEnv };
15
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'jira-runtime-config-'));
16
+ sharedConfigPath = path.join(tempDir, 'shared.env');
17
+ process.env.ATLASSIAN_DC_MCP_CONFIG_FILE = sharedConfigPath;
18
+ });
19
+ afterEach(() => {
20
+ fs.rmSync(tempDir, { recursive: true, force: true });
21
+ });
22
+ afterAll(() => {
23
+ process.env = originalEnv;
24
+ });
25
+ it('refreshes the bearer token from the shared config file without recreating the service', async () => {
26
+ fs.writeFileSync(sharedConfigPath, 'JIRA_HOST=file-host\nJIRA_API_TOKEN=token-a\nJIRA_DEFAULT_PAGE_SIZE=30\n');
27
+ const initialTime = new Date('2026-01-01T00:00:00.000Z');
28
+ fs.utimesSync(sharedConfigPath, initialTime, initialTime);
29
+ initializeRuntimeConfig({ cwd: tempDir });
30
+ const startupConfig = getJiraRuntimeConfig();
31
+ new JiraService(startupConfig.host, () => getJiraRuntimeConfig().token, startupConfig.apiBasePath, () => getJiraRuntimeConfig().defaultPageSize);
32
+ const firstHeaders = await getHeaders(OpenAPI, { method: 'GET', url: '/issue' });
33
+ expect(firstHeaders.get('Authorization')).toBe('Bearer token-a');
34
+ fs.writeFileSync(sharedConfigPath, 'JIRA_HOST=file-host\nJIRA_API_TOKEN=token-b\nJIRA_DEFAULT_PAGE_SIZE=45\n');
35
+ const updatedTime = new Date('2026-01-01T00:00:01.000Z');
36
+ fs.utimesSync(sharedConfigPath, updatedTime, updatedTime);
37
+ const secondHeaders = await getHeaders(OpenAPI, { method: 'GET', url: '/issue' });
38
+ expect(secondHeaders.get('Authorization')).toBe('Bearer token-b');
39
+ expect(getJiraRuntimeConfig().defaultPageSize).toBe(45);
40
+ });
41
+ });
42
+ //# sourceMappingURL=jira-runtime-config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira-runtime-config.test.js","sourceRoot":"","sources":["../../src/__tests__/jira-runtime-config.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { initializeRuntimeConfig } from '@atlassian-dc-mcp/common';
1
5
  import { JiraService } from '../jira-service.js';
2
- import { IssueService } from '../jira-client/index.js';
6
+ import { IssueService, SearchService } from '../jira-client/index.js';
3
7
  jest.mock('../jira-client/index.js', () => ({
4
8
  IssueService: {
5
9
  getTransitions: jest.fn(),
@@ -81,6 +85,72 @@ describe('JiraService', () => {
81
85
  expect(result.error).toBe('Insufficient permissions to view transitions');
82
86
  });
83
87
  });
88
+ describe('token optimization paths', () => {
89
+ it('uses the default field profile and page size for search', async () => {
90
+ const mockSearchResults = { issues: [] };
91
+ SearchService.searchUsingSearchRequest.mockResolvedValue(mockSearchResults);
92
+ const result = await jiraService.searchIssues('project = TEST');
93
+ expect(result.success).toBe(true);
94
+ expect(result.data).toBe(mockSearchResults);
95
+ expect(SearchService.searchUsingSearchRequest).toHaveBeenCalledWith({
96
+ jql: 'project = TEST',
97
+ maxResults: 25,
98
+ fields: ['summary', 'description', 'status', 'assignee', 'reporter', 'priority', 'issuetype', 'labels', 'updated'],
99
+ expand: undefined,
100
+ startAt: undefined,
101
+ });
102
+ });
103
+ it('honors explicit search fields and maxResults', async () => {
104
+ const mockSearchResults = { issues: [] };
105
+ SearchService.searchUsingSearchRequest.mockResolvedValue(mockSearchResults);
106
+ await jiraService.searchIssues('project = TEST', 20, ['changelog'], 5, ['summary', 'status']);
107
+ expect(SearchService.searchUsingSearchRequest).toHaveBeenCalledWith({
108
+ jql: 'project = TEST',
109
+ maxResults: 5,
110
+ fields: ['summary', 'status'],
111
+ expand: ['changelog'],
112
+ startAt: 20,
113
+ });
114
+ });
115
+ it('uses the richer default field profile for single issue reads', async () => {
116
+ const mockIssue = { key: mockIssueKey };
117
+ IssueService.getIssue.mockResolvedValue(mockIssue);
118
+ const result = await jiraService.getIssue(mockIssueKey);
119
+ expect(result.success).toBe(true);
120
+ expect(result.data).toBe(mockIssue);
121
+ expect(IssueService.getIssue).toHaveBeenCalledWith(mockIssueKey, undefined, [
122
+ 'summary',
123
+ 'description',
124
+ 'status',
125
+ 'assignee',
126
+ 'reporter',
127
+ 'priority',
128
+ 'issuetype',
129
+ 'labels',
130
+ 'updated',
131
+ 'parent',
132
+ 'subtasks',
133
+ ]);
134
+ });
135
+ it('honors explicit issue fields', async () => {
136
+ IssueService.getIssue.mockResolvedValue({ key: mockIssueKey });
137
+ await jiraService.getIssue(mockIssueKey, 'renderedFields', ['summary', 'status']);
138
+ expect(IssueService.getIssue).toHaveBeenCalledWith(mockIssueKey, 'renderedFields', ['summary', 'status']);
139
+ });
140
+ it('uses the package default page size for issue comments', async () => {
141
+ const mockComments = { comments: [] };
142
+ IssueService.getComments.mockResolvedValue(mockComments);
143
+ const result = await jiraService.getIssueComments(mockIssueKey);
144
+ expect(result.success).toBe(true);
145
+ expect(result.data).toBe(mockComments);
146
+ expect(IssueService.getComments).toHaveBeenCalledWith(mockIssueKey, undefined, '25', undefined, undefined);
147
+ });
148
+ it('forwards explicit issue comment pagination', async () => {
149
+ IssueService.getComments.mockResolvedValue({ comments: [] });
150
+ await jiraService.getIssueComments(mockIssueKey, 'renderedBody', 10, 20);
151
+ expect(IssueService.getComments).toHaveBeenCalledWith(mockIssueKey, 'renderedBody', '10', undefined, '20');
152
+ });
153
+ });
84
154
  describe('transitionIssue', () => {
85
155
  it('should successfully transition an issue to a new status', async () => {
86
156
  IssueService.doTransition.mockResolvedValue(undefined);
@@ -155,9 +225,15 @@ describe('JiraService', () => {
155
225
  });
156
226
  describe('validateConfig', () => {
157
227
  const originalEnv = process.env;
228
+ let tempDir;
158
229
  beforeEach(() => {
159
- jest.resetModules();
160
230
  process.env = { ...originalEnv };
231
+ delete process.env.ATLASSIAN_DC_MCP_CONFIG_FILE;
232
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'jira-validate-config-'));
233
+ initializeRuntimeConfig({ cwd: tempDir });
234
+ });
235
+ afterEach(() => {
236
+ fs.rmSync(tempDir, { recursive: true, force: true });
161
237
  });
162
238
  afterAll(() => {
163
239
  process.env = originalEnv;
@@ -188,6 +264,13 @@ describe('JiraService', () => {
188
264
  const missingVars = JiraService.validateConfig();
189
265
  expect(missingVars).toEqual([]);
190
266
  });
267
+ it('should accept required config from the shared config file', () => {
268
+ const sharedConfigPath = path.join(tempDir, 'shared.env');
269
+ fs.writeFileSync(sharedConfigPath, 'JIRA_HOST=file-host\nJIRA_API_TOKEN=file-token\n');
270
+ process.env.ATLASSIAN_DC_MCP_CONFIG_FILE = sharedConfigPath;
271
+ const missingVars = JiraService.validateConfig();
272
+ expect(missingVars).toEqual([]);
273
+ });
191
274
  });
192
275
  });
193
276
  //# sourceMappingURL=jira-service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jira-service.test.js","sourceRoot":"","sources":["../../src/__tests__/jira-service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jira-service.test.js","sourceRoot":"","sources":["../../src/__tests__/jira-service.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function getJiraRuntimeConfig(): import("@atlassian-dc-mcp/common").ProductRuntimeConfig;
2
+ export declare function getDefaultPageSize(): number;
3
+ export declare function getMissingConfig(): string[];
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,4DAEnC;AAED,wBAAgB,kBAAkB,WAEjC;AAED,wBAAgB,gBAAgB,aAE/B"}
@@ -0,0 +1,11 @@
1
+ import { getProductRuntimeConfig, validateProductRuntimeConfig } from '@atlassian-dc-mcp/common';
2
+ export function getJiraRuntimeConfig() {
3
+ return getProductRuntimeConfig('jira');
4
+ }
5
+ export function getDefaultPageSize() {
6
+ return getJiraRuntimeConfig().defaultPageSize;
7
+ }
8
+ export function getMissingConfig() {
9
+ return validateProductRuntimeConfig('jira');
10
+ }
11
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAEjG,MAAM,UAAU,oBAAoB;IAClC,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,EAAE,CAAC,eAAe,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
package/build/index.js CHANGED
@@ -1,26 +1,28 @@
1
- import { connectServer, createMcpServer, formatToolResponse } from '@atlassian-dc-mcp/common';
1
+ import { connectServer, createMcpServer, formatToolResponse, initializeRuntimeConfig } from '@atlassian-dc-mcp/common';
2
2
  import { JiraService, jiraToolSchemas } from './jira-service.js';
3
- import * as process from 'node:process';
3
+ import { getDefaultPageSize, getJiraRuntimeConfig } from './config.js';
4
+ initializeRuntimeConfig();
4
5
  const missingEnvVars = JiraService.validateConfig();
5
6
  if (missingEnvVars.length > 0) {
6
7
  throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}`);
7
8
  }
8
- const jiraService = new JiraService(process.env.JIRA_HOST, process.env.JIRA_API_TOKEN, process.env.JIRA_API_BASE_PATH);
9
+ const jiraConfig = getJiraRuntimeConfig();
10
+ const jiraService = new JiraService(jiraConfig.host, () => getJiraRuntimeConfig().token, jiraConfig.apiBasePath, getDefaultPageSize);
9
11
  const server = createMcpServer({
10
12
  name: "atlassian-jira-mcp",
11
13
  version: "0.1.0"
12
14
  });
13
15
  const jiraInstanceType = "JIRA Data Center edition instance";
14
- server.tool("jira_searchIssues", `Search for JIRA issues using JQL in the ${jiraInstanceType}`, jiraToolSchemas.searchIssues, async ({ jql, expand, startAt, maxResults = 10 }) => {
15
- const result = await jiraService.searchIssues(jql, startAt, expand, maxResults);
16
+ server.tool("jira_searchIssues", `Search for JIRA issues using JQL in the ${jiraInstanceType}`, jiraToolSchemas.searchIssues, async ({ jql, expand, startAt, maxResults, fields }) => {
17
+ const result = await jiraService.searchIssues(jql, startAt, expand, maxResults, fields);
16
18
  return formatToolResponse(result);
17
19
  });
18
- server.tool("jira_getIssue", `Get details of a JIRA issue by its key from the ${jiraInstanceType}`, jiraToolSchemas.getIssue, async ({ issueKey, expand }) => {
19
- const result = await jiraService.getIssue(issueKey, expand);
20
+ server.tool("jira_getIssue", `Get details of a JIRA issue by its key from the ${jiraInstanceType}`, jiraToolSchemas.getIssue, async ({ issueKey, expand, fields }) => {
21
+ const result = await jiraService.getIssue(issueKey, expand, fields);
20
22
  return formatToolResponse(result);
21
23
  });
22
- server.tool('jira_getIssueComments', `Get comments of a JIRA issue by its key from the ${jiraInstanceType}`, jiraToolSchemas.getIssueComments, async ({ issueKey, expand }) => {
23
- const result = await jiraService.getIssueComments(issueKey, expand);
24
+ server.tool('jira_getIssueComments', `Get comments of a JIRA issue by its key from the ${jiraInstanceType}`, jiraToolSchemas.getIssueComments, async ({ issueKey, expand, maxResults, startAt }) => {
25
+ const result = await jiraService.getIssueComments(issueKey, expand, maxResults, startAt);
24
26
  return formatToolResponse(result);
25
27
  });
26
28
  server.tool("jira_createIssue", `Create a new JIRA issue in the ${jiraInstanceType}`, jiraToolSchemas.createIssue, async (params) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;AACpD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,OAAO,CAAC,GAAG,CAAC,SAAU,EACtB,OAAO,CAAC,GAAG,CAAC,cAAe,EAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAC/B,CAAC;AAEF,MAAM,MAAM,GAAG,eAAe,CAAC;IAC7B,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAE7D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,2CAA2C,gBAAgB,EAAE,EAC7D,eAAe,CAAC,YAAY,EAC5B,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE;IAClD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChF,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,mDAAmD,gBAAgB,EAAE,EACrE,eAAe,CAAC,QAAQ,EACxB,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,oDAAoD,gBAAgB,EAAE,EACtE,eAAe,CAAC,gBAAgB,EAChC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kCAAkC,gBAAgB,EAAE,EACpD,eAAe,CAAC,WAAW,EAC3B,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,wCAAwC,gBAAgB,EAAE,EAC1D,eAAe,CAAC,WAAW,EAC3B,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,yCAAyC,gBAAgB,EAAE,EAC3D,eAAe,CAAC,gBAAgB,EAChC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAA;AAED,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,4DAA4D,gBAAgB,6EAA6E,EACzJ,eAAe,CAAC,cAAc,EAC9B,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,kDAAkD,gBAAgB,kEAAkE,EACpI,eAAe,CAAC,eAAe,EAC/B,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  export declare class JiraService {
3
- constructor(host: string, token: string, fullBaseUrl?: string);
4
- searchIssues(jql: string, startAt?: number, expand?: string[], maxResults?: number): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").SearchResultsBean>>;
5
- getIssue(issueKey: string, expand?: string): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").IssueBean>>;
6
- getIssueComments(issueKey: string, expand?: string): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").CommentsWithPaginationJsonBean>>;
3
+ private readonly getPageSize;
4
+ constructor(host: string | undefined, token: string | (() => string | undefined), fullBaseUrl?: string, getPageSize?: () => number);
5
+ searchIssues(jql: string, startAt?: number, expand?: string[], maxResults?: number, fields?: string[]): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").SearchResultsBean>>;
6
+ getIssue(issueKey: string, expand?: string, fields?: string[]): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").IssueBean>>;
7
+ getIssueComments(issueKey: string, expand?: string, maxResults?: number, startAt?: number): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").CommentsWithPaginationJsonBean>>;
7
8
  postIssueComment(issueKey: string, comment: string): Promise<import("@atlassian-dc-mcp/common").ApiErrorResponse<import("./jira-client/index.js").CommentJsonBean>>;
8
9
  createIssue(params: {
9
10
  projectId: string;
@@ -33,14 +34,18 @@ export declare const jiraToolSchemas: {
33
34
  maxResults: z.ZodOptional<z.ZodNumber>;
34
35
  startAt: z.ZodOptional<z.ZodNumber>;
35
36
  expand: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
37
+ fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
36
38
  };
37
39
  getIssue: {
38
40
  issueKey: z.ZodString;
39
41
  expand: z.ZodOptional<z.ZodString>;
42
+ fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
40
43
  };
41
44
  getIssueComments: {
42
45
  issueKey: z.ZodString;
43
46
  expand: z.ZodOptional<z.ZodString>;
47
+ maxResults: z.ZodOptional<z.ZodNumber>;
48
+ startAt: z.ZodOptional<z.ZodNumber>;
44
49
  };
45
50
  postIssueComment: {
46
51
  issueKey: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"jira-service.d.ts","sourceRoot":"","sources":["../src/jira-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,qBAAa,WAAW;gBACV,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAMvD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,GAAE,MAAW;IAWtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAI1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAIlD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIlD,WAAW,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC;IAiBK,WAAW,CAAC,MAAM,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC;IAqBK,cAAc,CAAC,QAAQ,EAAE,MAAM;IAO/B,eAAe,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B;IAYD,MAAM,CAAC,cAAc,IAAI,MAAM,EAAE;CASlC;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyC3B,CAAC"}
1
+ {"version":3,"file":"jira-service.d.ts","sourceRoot":"","sources":["../src/jira-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAGzC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,EAC1C,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,GAAE,MAAM,MAA2B;IAe1C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE;IAYrG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE;IAO7D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAOzF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIlD,WAAW,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC;IAiBK,WAAW,CAAC,MAAM,EAAE;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACpC;IAqBK,cAAc,CAAC,QAAQ,EAAE,MAAM;IAO/B,eAAe,CAAC,MAAM,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B;IAYD,MAAM,CAAC,cAAc,IAAI,MAAM,EAAE;CAGlC;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C3B,CAAC"}