@jagadeesh52423/atlassian-mcp-server 1.2.1 โ 1.3.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.
- package/README.md +159 -405
- package/dist/handlers/confluence-handlers.d.ts +2 -0
- package/dist/handlers/confluence-handlers.d.ts.map +1 -1
- package/dist/handlers/confluence-handlers.js +2 -2
- package/dist/handlers/confluence-handlers.js.map +1 -1
- package/dist/services/bitbucket.d.ts.map +1 -1
- package/dist/services/bitbucket.js +9 -4
- package/dist/services/bitbucket.js.map +1 -1
- package/dist/services/confluence.d.ts +27 -2
- package/dist/services/confluence.d.ts.map +1 -1
- package/dist/services/confluence.js +65 -19
- package/dist/services/confluence.js.map +1 -1
- package/dist/tools/confluence-tools.d.ts.map +1 -1
- package/dist/tools/confluence-tools.js +6 -1
- package/dist/tools/confluence-tools.js.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,537 +1,291 @@
|
|
|
1
|
-
# Atlassian MCP Server
|
|
1
|
+
# ๐ Atlassian MCP Server
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@jagadeesh52423/atlassian-mcp-server)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| Feature | Ours | Official Atlassian | sooperset |
|
|
26
|
-
|---|:---:|:---:|:---:|
|
|
27
|
-
| Search / Get / Create / Update page | YES | YES | YES |
|
|
28
|
-
| Delete page | YES | NO | YES |
|
|
29
|
-
| Get spaces / pages by space | YES | YES | NO |
|
|
30
|
-
| Get child pages | YES | YES | YES |
|
|
31
|
-
| Get/Add comments | YES | YES | YES |
|
|
32
|
-
| **Update/Delete comment** | **YES** | NO | NO |
|
|
33
|
-
| Get/Add/Delete attachments | YES | NO | YES |
|
|
34
|
-
| Embed image (with positioning) | NOยน | NO | NO |
|
|
35
|
-
| Create page with inline images | NOยน | NO | NO |
|
|
36
|
-
| Get/Add/Remove labels | YES | NO | Partial |
|
|
37
|
-
| **Page version history** | YES | NO | YES |
|
|
38
|
-
|
|
39
|
-
ยน Removed in v1.2.0 alongside the Confluence v2 / ADF migration. ADF media nodes need the Atlassian Media API; reinstating inline embedding is tracked as future work. Use `confluence_add_attachment` to upload files.
|
|
40
|
-
|
|
41
|
-
### Jira
|
|
42
|
-
|
|
43
|
-
| Feature | Ours | Official Atlassian | sooperset |
|
|
44
|
-
|---|:---:|:---:|:---:|
|
|
45
|
-
| Search/Get/Create/Update issue | YES | YES | YES |
|
|
46
|
-
| Delete issue | YES | NO | YES |
|
|
47
|
-
| Comments (full CRUD) | YES | Partial | Partial |
|
|
48
|
-
| **Smart transition (AI auto-fill)** | **YES** | NO | NO |
|
|
49
|
-
| Attachments (get/add/delete) | YES | NO | NO |
|
|
50
|
-
| Issue links (full CRUD) | YES | NO | Partial |
|
|
51
|
-
| Worklogs (full CRUD) | YES | Partial | Partial |
|
|
52
|
-
| **Watchers (get/add/remove)** | **YES** | NO | NO |
|
|
53
|
-
| **Subtasks (get/create)** | **YES** | NO | NO |
|
|
54
|
-
| **Labels (get/add/remove)** | **YES** | NO | NO |
|
|
55
|
-
| Agile boards & board issues | YES | NO | YES |
|
|
56
|
-
| Sprints (list/create/update) | YES | NO | YES |
|
|
57
|
-
| Sprint issues | YES | NO | YES |
|
|
58
|
-
| Batch create issues | YES | NO | YES |
|
|
59
|
-
| Dev status (PRs/branches/commits) | YES | NO | YES |
|
|
60
|
-
| Issue history | YES | NO | YES |
|
|
61
|
-
| Fields discovery | YES | NO | YES |
|
|
62
|
-
| User lookup by name/email | YES | YES | YES |
|
|
63
|
-
| Issue type metadata | YES | YES | NO |
|
|
64
|
-
| Version/release management | YES | NO | YES |
|
|
65
|
-
| Epic linking | YES | NO | YES |
|
|
66
|
-
|
|
67
|
-
### Bitbucket
|
|
68
|
-
|
|
69
|
-
| Feature | Ours | Official Atlassian | sooperset |
|
|
70
|
-
|---|:---:|:---:|:---:|
|
|
71
|
-
| **Full Bitbucket support (16 tools)** | **YES** | NO | NO |
|
|
72
|
-
|
|
73
|
-
### Key Differentiators
|
|
74
|
-
|
|
75
|
-
- **Only MCP server covering all 3 Atlassian products** โ Confluence + Jira + Bitbucket
|
|
76
|
-
- **Deepest CRUD coverage** โ update/delete on comments, worklogs, labels where competitors only do create/read
|
|
77
|
-
- **Smart Field Handling** โ AI-driven field suggestions during Jira transitions, unique to this server
|
|
78
|
-
- **84 total tools** vs ~45 (Official) and ~58 (sooperset)
|
|
79
|
-
- **ADF / Confluence v2 native** โ pages and comments are stored and returned as ADF, the format Confluence Cloud uses internally; markdown input is converted via the official `@atlaskit/editor-markdown-transformer`
|
|
80
|
-
|
|
81
|
-
## Features
|
|
82
|
-
|
|
83
|
-
### Confluence Integration (20 tools)
|
|
84
|
-
- Search pages by text query
|
|
85
|
-
- Get, create, update, and delete pages
|
|
86
|
-
- List spaces and pages within spaces
|
|
87
|
-
- **Child Pages**: Get child pages of a parent page
|
|
88
|
-
- **Page History**: View version history of a page
|
|
89
|
-
- **Attachments**: Add, list, and delete attachments
|
|
90
|
-
- **Comments**: Full CRUD operations on page footer comments
|
|
91
|
-
- **Labels**: Get, add, and remove labels on pages
|
|
92
|
-
- **ADF / v2 API**: input is markdown (converted to ADF via official @atlaskit transformers); output is ADF JSON. CQL search stays on v1.
|
|
93
|
-
|
|
94
|
-
### Jira Integration (48 tools)
|
|
95
|
-
- Search issues by text, filters, or JQL query
|
|
96
|
-
- Get, create, update, and delete issues
|
|
97
|
-
- **Comments**: Full CRUD operations on issue comments
|
|
98
|
-
- **Transitions**: Move issues between statuses with **Smart Field Handling**
|
|
99
|
-
- **Attachments**: Add, list, and delete attachments
|
|
100
|
-
- **Issue Links**: Create and manage links between issues
|
|
101
|
-
- **Worklogs**: Full CRUD for time tracking entries
|
|
102
|
-
- **Watchers**: Manage issue watchers
|
|
103
|
-
- **Subtasks**: Create and list subtasks
|
|
104
|
-
- **History**: View issue change history
|
|
105
|
-
- **Labels**: Get, add, and remove labels on issues
|
|
106
|
-
- **Fields**: Discover available standard and custom fields
|
|
107
|
-
- **Agile**: List boards, get board issues, manage sprints
|
|
108
|
-
- **Sprints**: Create, update, list sprint issues
|
|
109
|
-
- **Versions**: Get, create, and update project versions/releases
|
|
110
|
-
- **Batch Operations**: Bulk create up to 50 issues at once
|
|
111
|
-
- **Dev Status**: View linked PRs, branches, and commits
|
|
112
|
-
- **User Lookup**: Search users by name or email
|
|
113
|
-
- **Issue Types**: Get available issue types per project
|
|
114
|
-
- **Epic Linking**: Link issues to epics (next-gen + classic)
|
|
115
|
-
- List projects
|
|
116
|
-
|
|
117
|
-
#### Smart Field Handling
|
|
118
|
-
Advanced transition management with intelligent field suggestions:
|
|
119
|
-
- **Contextual Analysis**: Analyzes issue content to provide smart field suggestions
|
|
120
|
-
- **Pattern Recognition**: Recognizes common field patterns (DB scripts, test cases, etc.)
|
|
121
|
-
- **Auto-Suggestions**: Provides context-aware suggestions with reasoning
|
|
122
|
-
- **Enhanced Error Handling**: Returns detailed field information instead of cryptic errors
|
|
123
|
-
|
|
124
|
-
### Bitbucket Integration (16 tools)
|
|
125
|
-
- List and search repositories
|
|
126
|
-
- Get repository details and create new repositories
|
|
127
|
-
- Manage branches and commits
|
|
128
|
-
- **Pull Requests**: Create, list, and get PR details with diffs
|
|
129
|
-
- **PR Comments**: Full CRUD with resolve/unresolve support
|
|
130
|
-
- Issue tracking within repositories
|
|
6
|
+
An MCP (Model Context Protocol) server that gives AI assistants full access to Jira, Confluence, and Bitbucket Cloud APIs -- 86 tools covering deep CRUD across all three products.
|
|
7
|
+
|
|
8
|
+
## What It Does
|
|
9
|
+
|
|
10
|
+
This server acts as a bridge between any MCP-compatible AI client (Claude Desktop, etc.) and your Atlassian Cloud instance. Instead of switching between browser tabs, you ask your AI assistant to search Confluence, create Jira tickets, review pull requests, and more -- all through natural language.
|
|
11
|
+
|
|
12
|
+
### Key Features
|
|
13
|
+
|
|
14
|
+
- **Confluence** (20 tools) -- Search, create, read, update, and delete pages. Manage spaces, child pages, comments (full CRUD), attachments, labels, and version history. Input accepts Markdown (auto-converted to ADF); output is native ADF JSON.
|
|
15
|
+
- **Jira** (49 tools) -- Full issue lifecycle: search, CRUD, comments, transitions, attachments, issue links, worklogs, watchers, subtasks, labels, history, agile boards, sprints (incl. moving issues into a sprint), versions, batch creation (up to 50 issues), dev status, epic linking, and user lookup.
|
|
16
|
+
- **Bitbucket** (17 tools) -- Repository management, branches, commits, pull requests (create/update/list), PR comments with resolve/unresolve, and issue tracking.
|
|
17
|
+
- **Smart Field Handling** -- AI-driven field suggestions during Jira transitions. Analyzes issue context to auto-suggest values for required fields (e.g., DB scripts, test cases), reducing manual input.
|
|
18
|
+
- **Snapshot Safety Net** -- Automatic local snapshots of mutating operations (create/update/delete) with configurable retention, so you can recover from accidental changes.
|
|
19
|
+
|
|
20
|
+
## Prerequisites
|
|
21
|
+
|
|
22
|
+
- **Node.js** >= 18
|
|
23
|
+
- **Atlassian Cloud** account(s) with API tokens
|
|
24
|
+
- An MCP-compatible client (e.g., [Claude Desktop](https://claude.ai/download))
|
|
131
25
|
|
|
132
26
|
## Installation
|
|
133
27
|
|
|
134
|
-
###
|
|
28
|
+
### From npm (recommended)
|
|
135
29
|
|
|
136
30
|
```bash
|
|
137
31
|
npm install -g @jagadeesh52423/atlassian-mcp-server
|
|
138
32
|
```
|
|
139
33
|
|
|
140
|
-
Or
|
|
34
|
+
Or run without installing:
|
|
35
|
+
|
|
141
36
|
```bash
|
|
142
37
|
npx @jagadeesh52423/atlassian-mcp-server
|
|
143
38
|
```
|
|
144
39
|
|
|
145
|
-
###
|
|
40
|
+
### From source
|
|
146
41
|
|
|
147
|
-
1. Clone this repository:
|
|
148
42
|
```bash
|
|
149
43
|
git clone https://github.com/jagadeeshpulamarasetti/atlassian-mcp-server.git
|
|
150
44
|
cd atlassian-mcp-server
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
2. Install dependencies:
|
|
154
|
-
```bash
|
|
155
45
|
npm install
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
3. Build the project:
|
|
159
|
-
```bash
|
|
160
46
|
npm run build
|
|
161
47
|
```
|
|
162
48
|
|
|
163
49
|
## Configuration
|
|
164
50
|
|
|
165
|
-
1.
|
|
51
|
+
### 1. Set environment variables
|
|
52
|
+
|
|
53
|
+
Copy the template and fill in your credentials:
|
|
54
|
+
|
|
166
55
|
```bash
|
|
167
56
|
cp .env.example .env
|
|
168
57
|
```
|
|
169
58
|
|
|
170
|
-
2. Fill in your Atlassian credentials in `.env`:
|
|
171
|
-
|
|
172
59
|
```env
|
|
173
|
-
# Confluence
|
|
60
|
+
# Confluence
|
|
174
61
|
CONFLUENCE_DOMAIN=your-domain.atlassian.net
|
|
175
62
|
CONFLUENCE_EMAIL=your-email@example.com
|
|
176
63
|
CONFLUENCE_API_TOKEN=your-confluence-api-token
|
|
177
64
|
|
|
178
|
-
# Jira
|
|
65
|
+
# Jira
|
|
179
66
|
JIRA_DOMAIN=your-domain.atlassian.net
|
|
180
67
|
JIRA_EMAIL=your-email@example.com
|
|
181
68
|
JIRA_API_TOKEN=your-jira-api-token
|
|
182
69
|
|
|
183
|
-
#
|
|
184
|
-
JIRA_CLIENT_ID=your-client-id
|
|
185
|
-
JIRA_CLIENT_SECRET=your-client-secret
|
|
186
|
-
|
|
187
|
-
# Bitbucket Configuration
|
|
70
|
+
# Bitbucket
|
|
188
71
|
BITBUCKET_WORKSPACE=your-workspace
|
|
189
72
|
BITBUCKET_USERNAME=your-username
|
|
190
73
|
BITBUCKET_API_TOKEN=your-bitbucket-api-token
|
|
191
|
-
|
|
192
|
-
# Legacy: Atlassian Configuration (backward compatibility)
|
|
193
|
-
ATLASSIAN_DOMAIN=your-domain.atlassian.net
|
|
194
|
-
ATLASSIAN_EMAIL=your-email@example.com
|
|
195
|
-
ATLASSIAN_API_TOKEN=your-api-token
|
|
196
74
|
```
|
|
197
75
|
|
|
198
|
-
|
|
76
|
+
You can also set legacy `ATLASSIAN_*` variables as a fallback for Confluence and Jira. Bitbucket always requires its own credentials.
|
|
199
77
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
2. Click "Create API token"
|
|
203
|
-
3. Give it a label and create
|
|
204
|
-
4. Copy the token to your `.env` file
|
|
78
|
+
<details>
|
|
79
|
+
<summary>Optional: Jira OAuth and Snapshot settings</summary>
|
|
205
80
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
- Issues: Read, Write
|
|
211
|
-
- Pull requests: Read, Write
|
|
212
|
-
- Pipelines: Read (if needed)
|
|
213
|
-
3. Copy the token to your `.env` file
|
|
81
|
+
```env
|
|
82
|
+
# Jira OAuth (advanced auth)
|
|
83
|
+
JIRA_CLIENT_ID=your-client-id
|
|
84
|
+
JIRA_CLIENT_SECRET=your-client-secret
|
|
214
85
|
|
|
215
|
-
|
|
86
|
+
# Snapshot safety net (defaults shown)
|
|
87
|
+
MCP_SNAPSHOTS_ENABLED=true
|
|
88
|
+
MCP_SNAPSHOT_DIR=~/.atlassian-mcp-snapshots
|
|
89
|
+
MCP_SNAPSHOT_RETENTION_DAYS=30
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
### 2. Get an API token
|
|
95
|
+
|
|
96
|
+
1. Go to [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
|
|
97
|
+
2. Click **Create API token**, give it a name, and copy the value
|
|
98
|
+
3. For Bitbucket, create a token under **Personal settings > Access tokens** with repo, issue, and PR scopes
|
|
216
99
|
|
|
217
100
|
## Usage
|
|
218
101
|
|
|
219
|
-
### Running the
|
|
102
|
+
### Running the server
|
|
220
103
|
|
|
221
|
-
If installed globally:
|
|
222
104
|
```bash
|
|
105
|
+
# Global install
|
|
223
106
|
atlassian-mcp-server
|
|
224
|
-
```
|
|
225
107
|
|
|
226
|
-
|
|
227
|
-
```bash
|
|
108
|
+
# From source
|
|
228
109
|
npm start
|
|
229
|
-
```
|
|
230
110
|
|
|
231
|
-
|
|
232
|
-
```bash
|
|
111
|
+
# Development (auto-reload)
|
|
233
112
|
npm run dev
|
|
234
113
|
```
|
|
235
114
|
|
|
236
|
-
###
|
|
115
|
+
### Claude Desktop integration
|
|
237
116
|
|
|
238
|
-
Add the following to your Claude Desktop
|
|
117
|
+
Add one of the following to your Claude Desktop config:
|
|
239
118
|
|
|
240
|
-
**macOS
|
|
241
|
-
**Windows
|
|
119
|
+
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
120
|
+
**Windows:** `%APPDATA%/Claude/claude_desktop_config.json`
|
|
242
121
|
|
|
243
|
-
#### If installed globally via npm:
|
|
244
122
|
```json
|
|
245
123
|
{
|
|
246
124
|
"mcpServers": {
|
|
247
125
|
"atlassian": {
|
|
248
|
-
"command": "
|
|
126
|
+
"command": "npx",
|
|
127
|
+
"args": ["-y", "@jagadeesh52423/atlassian-mcp-server"],
|
|
249
128
|
"env": {
|
|
250
129
|
"CONFLUENCE_DOMAIN": "your-domain.atlassian.net",
|
|
251
130
|
"CONFLUENCE_EMAIL": "your-email@example.com",
|
|
252
|
-
"CONFLUENCE_API_TOKEN": "your-
|
|
131
|
+
"CONFLUENCE_API_TOKEN": "your-token",
|
|
253
132
|
"JIRA_DOMAIN": "your-domain.atlassian.net",
|
|
254
133
|
"JIRA_EMAIL": "your-email@example.com",
|
|
255
|
-
"JIRA_API_TOKEN": "your-
|
|
134
|
+
"JIRA_API_TOKEN": "your-token",
|
|
256
135
|
"BITBUCKET_WORKSPACE": "your-workspace",
|
|
257
136
|
"BITBUCKET_USERNAME": "your-username",
|
|
258
|
-
"BITBUCKET_API_TOKEN": "your-
|
|
137
|
+
"BITBUCKET_API_TOKEN": "your-token"
|
|
259
138
|
}
|
|
260
139
|
}
|
|
261
140
|
}
|
|
262
141
|
}
|
|
263
142
|
```
|
|
264
143
|
|
|
265
|
-
|
|
144
|
+
<details>
|
|
145
|
+
<summary>Alternative: global install or from-source config</summary>
|
|
146
|
+
|
|
147
|
+
**Global install:**
|
|
266
148
|
```json
|
|
267
149
|
{
|
|
268
150
|
"mcpServers": {
|
|
269
151
|
"atlassian": {
|
|
270
|
-
"command": "
|
|
271
|
-
"
|
|
272
|
-
"env": {
|
|
273
|
-
"CONFLUENCE_DOMAIN": "your-domain.atlassian.net",
|
|
274
|
-
"CONFLUENCE_EMAIL": "your-email@example.com",
|
|
275
|
-
"CONFLUENCE_API_TOKEN": "your-confluence-api-token",
|
|
276
|
-
"JIRA_DOMAIN": "your-domain.atlassian.net",
|
|
277
|
-
"JIRA_EMAIL": "your-email@example.com",
|
|
278
|
-
"JIRA_API_TOKEN": "your-jira-api-token",
|
|
279
|
-
"BITBUCKET_WORKSPACE": "your-workspace",
|
|
280
|
-
"BITBUCKET_USERNAME": "your-username",
|
|
281
|
-
"BITBUCKET_API_TOKEN": "your-bitbucket-api-token"
|
|
282
|
-
}
|
|
152
|
+
"command": "atlassian-mcp-server",
|
|
153
|
+
"env": { "..." : "same env vars as above" }
|
|
283
154
|
}
|
|
284
155
|
}
|
|
285
156
|
}
|
|
286
157
|
```
|
|
287
158
|
|
|
288
|
-
|
|
159
|
+
**From source:**
|
|
289
160
|
```json
|
|
290
161
|
{
|
|
291
162
|
"mcpServers": {
|
|
292
163
|
"atlassian": {
|
|
293
164
|
"command": "node",
|
|
294
|
-
"args": ["/path/to/
|
|
165
|
+
"args": ["/path/to/atlassian-mcp-server/dist/index.js"]
|
|
295
166
|
}
|
|
296
167
|
}
|
|
297
168
|
}
|
|
298
169
|
```
|
|
299
170
|
|
|
171
|
+
</details>
|
|
172
|
+
|
|
300
173
|
## Available Tools
|
|
301
174
|
|
|
302
|
-
### Confluence
|
|
175
|
+
### Confluence (20 tools)
|
|
303
176
|
|
|
304
177
|
| Tool | Description |
|
|
305
178
|
|------|-------------|
|
|
306
|
-
| `confluence_search_pages` | Search pages
|
|
307
|
-
| `confluence_get_page` | Get
|
|
308
|
-
| `confluence_create_page` | Create
|
|
309
|
-
| `confluence_update_page` | Update
|
|
179
|
+
| `confluence_search_pages` | Search pages via CQL text query |
|
|
180
|
+
| `confluence_get_page` | Get a page by ID (returns ADF JSON body) |
|
|
181
|
+
| `confluence_create_page` | Create a page (accepts Markdown) |
|
|
182
|
+
| `confluence_update_page` | Update a page (accepts Markdown) |
|
|
310
183
|
| `confluence_delete_page` | Delete a page |
|
|
311
184
|
| `confluence_get_spaces` | List all spaces |
|
|
312
|
-
| `confluence_get_pages_by_space` | Get pages
|
|
313
|
-
| `confluence_get_page_children` | Get child pages
|
|
185
|
+
| `confluence_get_pages_by_space` | Get pages in a space |
|
|
186
|
+
| `confluence_get_page_children` | Get child pages |
|
|
314
187
|
| `confluence_get_page_history` | Get page version history |
|
|
315
|
-
| `confluence_get_attachments` | List attachments
|
|
316
|
-
| `confluence_add_attachment` |
|
|
317
|
-
| `confluence_delete_attachment` | Delete attachment
|
|
318
|
-
| `
|
|
319
|
-
| `
|
|
320
|
-
| `
|
|
321
|
-
| `
|
|
322
|
-
| `
|
|
323
|
-
| `confluence_get_labels` | Get labels on a page |
|
|
188
|
+
| `confluence_get_attachments` | List page attachments |
|
|
189
|
+
| `confluence_add_attachment` | Upload an attachment |
|
|
190
|
+
| `confluence_delete_attachment` | Delete an attachment |
|
|
191
|
+
| `confluence_get_comments` | Get footer and/or inline comments (ADF JSON). `commentType`: `footer` \| `inline` \| `all` (default `all`) |
|
|
192
|
+
| `confluence_add_comment` | Add a comment (Markdown) |
|
|
193
|
+
| `confluence_update_comment` | Update a comment (Markdown) |
|
|
194
|
+
| `confluence_delete_comment` | Delete a comment |
|
|
195
|
+
| `confluence_get_labels` | Get page labels |
|
|
324
196
|
| `confluence_add_labels` | Add labels to a page |
|
|
325
|
-
| `confluence_remove_label` | Remove a label
|
|
326
|
-
|
|
327
|
-
### Jira
|
|
328
|
-
|
|
329
|
-
|
|
|
330
|
-
|
|
331
|
-
| **Core** | |
|
|
332
|
-
|
|
|
333
|
-
|
|
|
334
|
-
|
|
|
335
|
-
|
|
|
336
|
-
|
|
|
337
|
-
|
|
|
338
|
-
|
|
|
339
|
-
|
|
|
340
|
-
|
|
|
341
|
-
| **
|
|
342
|
-
|
|
|
343
|
-
|
|
|
344
|
-
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
| `jira_transition_issue_interactive` | Change status with smart field handling |
|
|
350
|
-
| **Attachments** | |
|
|
351
|
-
| `jira_get_attachments` | List attachments on an issue |
|
|
352
|
-
| `jira_add_attachment` | Add attachment to issue |
|
|
353
|
-
| `jira_delete_attachment` | Delete attachment from issue |
|
|
354
|
-
| **Issue Links** | |
|
|
355
|
-
| `jira_get_issue_links` | Get linked issues |
|
|
356
|
-
| `jira_create_issue_link` | Create link between issues |
|
|
357
|
-
| `jira_delete_issue_link` | Delete issue link |
|
|
358
|
-
| `jira_get_link_types` | Get available link types |
|
|
359
|
-
| **Worklogs** | |
|
|
360
|
-
| `jira_get_worklogs` | Get work logs on an issue |
|
|
361
|
-
| `jira_add_worklog` | Add work log entry |
|
|
362
|
-
| `jira_update_worklog` | Update work log entry |
|
|
363
|
-
| `jira_delete_worklog` | Delete work log entry |
|
|
364
|
-
| **Watchers** | |
|
|
365
|
-
| `jira_get_watchers` | Get issue watchers |
|
|
366
|
-
| `jira_add_watcher` | Add watcher to issue |
|
|
367
|
-
| `jira_remove_watcher` | Remove watcher from issue |
|
|
368
|
-
| **Subtasks** | |
|
|
369
|
-
| `jira_get_subtasks` | Get subtasks of an issue |
|
|
370
|
-
| `jira_create_subtask` | Create subtask for an issue |
|
|
371
|
-
| **Labels** | |
|
|
372
|
-
| `jira_get_labels` | Get available labels |
|
|
373
|
-
| `jira_add_labels` | Add labels to an issue |
|
|
374
|
-
| `jira_remove_labels` | Remove labels from an issue |
|
|
375
|
-
| **History** | |
|
|
376
|
-
| `jira_get_issue_history` | Get issue change history |
|
|
377
|
-
| **Agile / Sprints** | |
|
|
378
|
-
| `jira_get_agile_boards` | List agile boards with optional filters |
|
|
379
|
-
| `jira_get_board_issues` | Get issues on a board |
|
|
380
|
-
| `jira_get_sprints` | Get sprints for a board |
|
|
381
|
-
| `jira_get_sprint_issues` | Get issues in a sprint |
|
|
382
|
-
| `jira_create_sprint` | Create a new sprint |
|
|
383
|
-
| `jira_update_sprint` | Update sprint (name, state, dates, goal) |
|
|
384
|
-
| **Versions / Releases** | |
|
|
385
|
-
| `jira_get_project_versions` | Get all versions for a project |
|
|
386
|
-
| `jira_create_version` | Create a new version/release |
|
|
387
|
-
| `jira_update_version` | Update version (release, archive, dates) |
|
|
388
|
-
| **Batch & Dev** | |
|
|
389
|
-
| `jira_batch_create_issues` | Bulk create up to 50 issues |
|
|
390
|
-
| `jira_get_dev_status` | Get linked PRs, branches, commits |
|
|
391
|
-
| **Epic** | |
|
|
392
|
-
| `jira_link_to_epic` | Link an issue to an epic |
|
|
393
|
-
|
|
394
|
-
### Bitbucket Tools (16 tools)
|
|
197
|
+
| `confluence_remove_label` | Remove a label |
|
|
198
|
+
|
|
199
|
+
### Jira (49 tools)
|
|
200
|
+
|
|
201
|
+
| Category | Tools |
|
|
202
|
+
|----------|-------|
|
|
203
|
+
| **Core** | `search_issues`, `get_issue`, `create_issue`, `update_issue`, `delete_issue`, `get_projects`, `get_issue_types`, `get_fields`, `lookup_user` |
|
|
204
|
+
| **Comments** | `add_comment`, `get_comments`, `update_comment`, `delete_comment` |
|
|
205
|
+
| **Transitions** | `get_issue_transitions`, `transition_issue`, `transition_issue_interactive` (smart field handling) |
|
|
206
|
+
| **Attachments** | `get_attachments`, `add_attachment`, `delete_attachment` |
|
|
207
|
+
| **Issue Links** | `get_issue_links`, `create_issue_link`, `delete_issue_link`, `get_link_types` |
|
|
208
|
+
| **Worklogs** | `get_worklogs`, `add_worklog`, `update_worklog`, `delete_worklog` |
|
|
209
|
+
| **Watchers** | `get_watchers`, `add_watcher`, `remove_watcher` |
|
|
210
|
+
| **Subtasks** | `get_subtasks`, `create_subtask` |
|
|
211
|
+
| **Labels** | `get_labels`, `add_labels`, `remove_labels` |
|
|
212
|
+
| **History** | `get_issue_history` |
|
|
213
|
+
| **Agile** | `get_agile_boards`, `get_board_issues`, `get_sprints`, `get_sprint_issues`, `create_sprint`, `update_sprint`, `move_issues_to_sprint` |
|
|
214
|
+
| **Versions** | `get_project_versions`, `create_version`, `update_version` |
|
|
215
|
+
| **Batch/Dev** | `batch_create_issues`, `get_dev_status` |
|
|
216
|
+
| **Epic** | `link_to_epic` |
|
|
217
|
+
|
|
218
|
+
All Jira tools are prefixed with `jira_`.
|
|
219
|
+
|
|
220
|
+
### Bitbucket (17 tools)
|
|
395
221
|
|
|
396
222
|
| Tool | Description |
|
|
397
223
|
|------|-------------|
|
|
398
|
-
| `bitbucket_get_repositories` | List repositories
|
|
399
|
-
| `bitbucket_get_repository` | Get
|
|
400
|
-
| `bitbucket_create_repository` | Create
|
|
224
|
+
| `bitbucket_get_repositories` | List workspace repositories |
|
|
225
|
+
| `bitbucket_get_repository` | Get repository details |
|
|
226
|
+
| `bitbucket_create_repository` | Create a repository |
|
|
401
227
|
| `bitbucket_get_pull_requests` | List pull requests |
|
|
402
|
-
| `bitbucket_get_pull_request` | Get
|
|
403
|
-
| `bitbucket_create_pull_request` | Create
|
|
228
|
+
| `bitbucket_get_pull_request` | Get a PR with diff |
|
|
229
|
+
| `bitbucket_create_pull_request` | Create a pull request |
|
|
230
|
+
| `bitbucket_update_pull_request` | Update a pull request |
|
|
404
231
|
| `bitbucket_get_branches` | List branches |
|
|
405
232
|
| `bitbucket_get_commits` | List commits |
|
|
406
233
|
| `bitbucket_get_issues` | List repository issues |
|
|
407
|
-
| `bitbucket_create_issue` | Create
|
|
234
|
+
| `bitbucket_create_issue` | Create an issue |
|
|
408
235
|
| `bitbucket_get_pr_comments` | Get PR comments |
|
|
409
|
-
| `bitbucket_add_pr_comment` | Add
|
|
410
|
-
| `bitbucket_update_pr_comment` | Update PR comment |
|
|
411
|
-
| `bitbucket_delete_pr_comment` | Delete PR comment |
|
|
412
|
-
| `bitbucket_resolve_pr_comment` |
|
|
413
|
-
| `bitbucket_unresolve_pr_comment` |
|
|
414
|
-
|
|
415
|
-
## Example Usage with AI Assistant
|
|
416
|
-
|
|
417
|
-
```
|
|
418
|
-
User: "Search for pages about API documentation in Confluence"
|
|
419
|
-
AI: Uses confluence_search_pages with query "API documentation"
|
|
420
|
-
|
|
421
|
-
User: "Create a new Jira issue for the bug I found"
|
|
422
|
-
AI: Uses jira_create_issue with appropriate project, summary, and description
|
|
236
|
+
| `bitbucket_add_pr_comment` | Add a PR comment |
|
|
237
|
+
| `bitbucket_update_pr_comment` | Update a PR comment |
|
|
238
|
+
| `bitbucket_delete_pr_comment` | Delete a PR comment |
|
|
239
|
+
| `bitbucket_resolve_pr_comment` | Mark a PR comment thread as resolved |
|
|
240
|
+
| `bitbucket_unresolve_pr_comment` | Reopen (unresolve) a PR comment thread |
|
|
423
241
|
|
|
424
|
-
|
|
425
|
-
AI: Uses jira_transition_issue_interactive which automatically:
|
|
426
|
-
- Analyzes the issue content for context
|
|
427
|
-
- Provides smart suggestions for required fields
|
|
428
|
-
- Handles transition with minimal user input
|
|
242
|
+
### PR comment resolution (v1.3.0+)
|
|
429
243
|
|
|
430
|
-
|
|
431
|
-
|
|
244
|
+
- `bitbucket_resolve_pr_comment` / `bitbucket_unresolve_pr_comment` use Bitbucket's dedicated resolution sub-resource (`POST`/`DELETE .../comments/{id}/resolve`) and return the refreshed comment.
|
|
245
|
+
- **Top-level comments only** -- Bitbucket only allows resolving/unresolving top-level review comments, not replies. Calling these on a reply returns `Comment is not a top-level comment`.
|
|
246
|
+
- Comments returned by `bitbucket_get_pr_comments`, `bitbucket_resolve_pr_comment`, and `bitbucket_unresolve_pr_comment` now include a `resolved` boolean. When a comment is resolved, the single-comment responses also include `resolvedOn` (ISO timestamp) and `resolvedBy` (display name); these resolution details are not present in the bulk list response.
|
|
432
247
|
|
|
433
|
-
|
|
434
|
-
AI: Uses jira_batch_create_issues to create all at once
|
|
248
|
+
## Confluence Content Format (v1.2.0+)
|
|
435
249
|
|
|
436
|
-
|
|
437
|
-
AI: Uses jira_get_sprints then jira_get_sprint_issues
|
|
438
|
-
```
|
|
250
|
+
Confluence pages and comments use **ADF (Atlassian Document Format)** natively:
|
|
439
251
|
|
|
440
|
-
|
|
252
|
+
- **Input** -- `create_page`, `update_page`, `add_comment`, `update_comment` accept **Markdown**, which the server converts to ADF using the official `@atlaskit/editor-markdown-transformer`.
|
|
253
|
+
- **Output** -- `get_page`, `get_comments` return ADF JSON (an object, not a string).
|
|
254
|
+
- **Comments** -- `get_comments` returns **both footer (page-level) and inline (text-anchored) comments** by default. Use the `commentType` param (`footer` | `inline` | `all`, default `all`) to filter. Every comment carries a `type` field (`"footer"` or `"inline"`). Inline comments additionally include `anchoredText` (the highlighted page text the comment is attached to), `resolutionStatus` (e.g. `"open"`, `"resolved"`), `markerRef`, and `webuiLink`. _Backwards-compatibility note: callers that previously relied on `get_comments` returning footer comments only will now also receive inline comments under the default `all`; pass `commentType: "footer"` to restore the old footer-only behaviour. The new `type` field is additive and does not remove any existing field._
|
|
255
|
+
- **Inline images** -- Not currently supported via ADF media nodes (requires Atlassian Media API tokens). Use `confluence_add_attachment` instead.
|
|
441
256
|
|
|
442
|
-
|
|
443
|
-
Scenario: Transitioning a template configuration issue
|
|
444
|
-
Issue: "Update notification template to use 'Prefr App'"
|
|
445
|
-
Smart Suggestion: DB Script = "No" (Template changes use MOFU tool)
|
|
446
|
-
Test Cases = "No" (Template changes don't require separate tests)
|
|
447
|
-
|
|
448
|
-
Scenario: Transitioning a new feature development issue
|
|
449
|
-
Issue: "Implement user authentication system"
|
|
450
|
-
Smart Suggestion: DB Script = "Yes" (New features typically need database changes)
|
|
451
|
-
Test Cases = "Yes" (New features require comprehensive testing)
|
|
452
|
-
```
|
|
257
|
+
## Project Structure
|
|
453
258
|
|
|
454
|
-
## Development
|
|
455
|
-
|
|
456
|
-
### Project Structure
|
|
457
259
|
```
|
|
458
260
|
src/
|
|
459
|
-
โโโ index.ts
|
|
460
|
-
โโโ
|
|
461
|
-
โโโ
|
|
462
|
-
โโโ constants.ts
|
|
463
|
-
โโโ error-handler.ts
|
|
464
|
-
โโโ
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
โ
|
|
468
|
-
|
|
469
|
-
โโโ
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
โ โโโ bitbucket.ts # Bitbucket API service
|
|
473
|
-
โโโ tools/
|
|
474
|
-
โ โโโ index.ts # Tool aggregation
|
|
475
|
-
โ โโโ confluence-tools.ts # Confluence tool definitions
|
|
476
|
-
โ โโโ jira-tools.ts # Jira tool definitions
|
|
477
|
-
โ โโโ bitbucket-tools.ts # Bitbucket tool definitions
|
|
478
|
-
โโโ handlers/
|
|
479
|
-
โโโ confluence-handlers.ts
|
|
480
|
-
โโโ jira-handlers.ts
|
|
481
|
-
โโโ bitbucket-handlers.ts
|
|
482
|
-
```
|
|
483
|
-
|
|
484
|
-
### Building and Testing
|
|
485
|
-
|
|
486
|
-
```bash
|
|
487
|
-
# Build
|
|
488
|
-
npm run build
|
|
489
|
-
|
|
490
|
-
# Development with auto-reload
|
|
491
|
-
npm run dev
|
|
492
|
-
|
|
493
|
-
# Clean build artifacts
|
|
494
|
-
npm run clean
|
|
261
|
+
โโโ index.ts # Server entry point and tool routing
|
|
262
|
+
โโโ config.ts # Environment variable loading and validation
|
|
263
|
+
โโโ types.ts # TypeScript interfaces
|
|
264
|
+
โโโ constants.ts # Shared constants
|
|
265
|
+
โโโ error-handler.ts # Structured error responses
|
|
266
|
+
โโโ formatters/ # Markdown-to-ADF and ADF-to-text converters
|
|
267
|
+
โโโ clients/ # HTTP clients (one per Atlassian product)
|
|
268
|
+
โโโ services/ # Business logic for each product
|
|
269
|
+
โ โโโ jira/ # Jira sub-modules (agile, comments, transitions, etc.)
|
|
270
|
+
โโโ handlers/ # MCP request handlers
|
|
271
|
+
โโโ tools/ # MCP tool definitions (schemas)
|
|
272
|
+
โโโ registry/ # Tool dispatch registry
|
|
273
|
+
โโโ snapshot/ # Snapshot safety net (auto-backup before mutations)
|
|
495
274
|
```
|
|
496
275
|
|
|
497
|
-
## Security
|
|
498
|
-
|
|
499
|
-
- API tokens are stored in environment variables
|
|
500
|
-
- All API calls use HTTPS
|
|
501
|
-
- Tokens should have minimal required permissions
|
|
502
|
-
- Never commit `.env` files to version control
|
|
503
|
-
|
|
504
|
-
## Error Handling
|
|
505
|
-
|
|
506
|
-
The server includes comprehensive error handling:
|
|
507
|
-
- API authentication errors
|
|
508
|
-
- Rate limiting responses
|
|
509
|
-
- Network connectivity issues
|
|
510
|
-
- Invalid parameters
|
|
511
|
-
- Resource not found errors
|
|
512
|
-
- Actionable tips for common issues
|
|
513
|
-
|
|
514
|
-
## Rate Limiting
|
|
515
|
-
|
|
516
|
-
Respects Atlassian API rate limits:
|
|
517
|
-
- Jira Cloud: 10 requests per second
|
|
518
|
-
- Confluence Cloud: 10 requests per second
|
|
519
|
-
- Bitbucket Cloud: 1000 requests per hour
|
|
520
|
-
|
|
521
|
-
## Contributing
|
|
276
|
+
## Security
|
|
522
277
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
5. Submit a pull request
|
|
278
|
+
- Credentials are read from environment variables only; never committed to source control.
|
|
279
|
+
- All API calls use HTTPS with Basic Auth (base64-encoded `email:token`).
|
|
280
|
+
- Grant tokens the minimum required permissions.
|
|
281
|
+
- Snapshots are stored locally in `~/.atlassian-mcp-snapshots` by default.
|
|
528
282
|
|
|
529
283
|
## License
|
|
530
284
|
|
|
531
|
-
MIT
|
|
285
|
+
[MIT](LICENSE)
|
|
532
286
|
|
|
533
|
-
##
|
|
287
|
+
## Links
|
|
534
288
|
|
|
535
|
-
- **npm
|
|
536
|
-
- **
|
|
537
|
-
- **
|
|
289
|
+
- **npm:** [@jagadeesh52423/atlassian-mcp-server](https://www.npmjs.com/package/@jagadeesh52423/atlassian-mcp-server)
|
|
290
|
+
- **Source:** [GitHub](https://github.com/jagadeeshpulamarasetti/atlassian-mcp-server)
|
|
291
|
+
- **Issues:** [GitHub Issues](https://github.com/jagadeeshpulamarasetti/atlassian-mcp-server/issues)
|