@crypto512/jicon-mcp 0.6.1 → 0.7.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 +265 -43
- package/TOOL_LIST.md +201 -5
- package/dist/config/types.d.ts +6 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +3 -2
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/client.d.ts +8 -16
- package/dist/confluence/client.d.ts.map +1 -1
- package/dist/confluence/client.js +75 -43
- package/dist/confluence/client.js.map +1 -1
- package/dist/confluence/formatters.d.ts +4 -0
- package/dist/confluence/formatters.d.ts.map +1 -1
- package/dist/confluence/formatters.js +19 -0
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +9 -36
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +90 -158
- package/dist/confluence/tools.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/jira/client.d.ts +9 -9
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +252 -30
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +4 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +24 -0
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +36 -36
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +161 -139
- package/dist/jira/tools.js.map +1 -1
- package/dist/jira/types.d.ts +50 -0
- package/dist/jira/types.d.ts.map +1 -1
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +42 -13
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +33 -14
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +80 -5
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/tempo/client.d.ts +1 -0
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +43 -0
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/formatters.d.ts +4 -0
- package/dist/tempo/formatters.d.ts.map +1 -1
- package/dist/tempo/formatters.js +24 -0
- package/dist/tempo/formatters.js.map +1 -1
- package/dist/tempo/tools.d.ts +21 -0
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +74 -134
- package/dist/tempo/tools.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +128 -0
- package/dist/utils/buffer-tools.d.ts.map +1 -0
- package/dist/utils/buffer-tools.js +312 -0
- package/dist/utils/buffer-tools.js.map +1 -0
- package/dist/utils/content-buffer.d.ts +144 -0
- package/dist/utils/content-buffer.d.ts.map +1 -0
- package/dist/utils/content-buffer.js +330 -0
- package/dist/utils/content-buffer.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +5 -1
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +52 -2
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/workload-tools.d.ts +68 -0
- package/dist/utils/workload-tools.d.ts.map +1 -0
- package/dist/utils/workload-tools.js +134 -0
- package/dist/utils/workload-tools.js.map +1 -0
- package/package.json +1 -1
- package/CLAUDE.md +0 -722
- package/CONTRIBUTING.md +0 -371
- package/DEVELOPMENT.md +0 -400
- package/JIRA_API_ANALYSIS.md +0 -275
package/README.md
CHANGED
|
@@ -17,45 +17,184 @@ npm install -g @crypto512/jicon-mcp
|
|
|
17
17
|
|
|
18
18
|
## What is Jicon?
|
|
19
19
|
|
|
20
|
-
Jicon is an MCP server that enables AI assistants like Claude to interact with your Jira, Confluence, and Tempo instances. It provides
|
|
20
|
+
Jicon is an MCP server that enables AI assistants like Claude to interact with your Jira, Confluence, and Tempo instances. It provides 52 powerful tools for:
|
|
21
21
|
|
|
22
22
|
- 🎫 **Jira**: Issue management, searching, project operations, Agile boards, sprints
|
|
23
23
|
- 📄 **Confluence**: Page management, content search, spaces, attachments, comments
|
|
24
24
|
- ⏱️ **Tempo**: Time tracking, worklog management, accounts, and teams
|
|
25
|
+
- 📦 **Buffer**: Content pagination for handling large responses
|
|
25
26
|
|
|
26
27
|
## Features at a Glance
|
|
27
28
|
|
|
28
|
-
### Jira (
|
|
29
|
+
### Jira (19 Tools)
|
|
29
30
|
- Search issues with JQL
|
|
30
31
|
- Create, update, and transition issues
|
|
31
|
-
- Manage comments and
|
|
32
|
+
- Manage comments, links, and watchers
|
|
32
33
|
- Access boards and sprints
|
|
33
|
-
- View projects and metadata
|
|
34
|
+
- View projects, issue types, and metadata
|
|
35
|
+
- Track worklogs (individual and recursive totals)
|
|
34
36
|
|
|
35
|
-
### Confluence (
|
|
37
|
+
### Confluence (14 Tools)
|
|
36
38
|
- Search content with CQL
|
|
37
|
-
- Create and
|
|
39
|
+
- Create, update, and delete pages
|
|
38
40
|
- Navigate page hierarchies
|
|
39
41
|
- Manage attachments
|
|
40
42
|
- Add and view comments
|
|
41
43
|
|
|
42
|
-
### Tempo (
|
|
44
|
+
### Tempo (12 Tools)
|
|
43
45
|
- Log and manage work time
|
|
44
46
|
- View and update worklogs
|
|
45
47
|
- Access accounts and teams
|
|
46
|
-
- Retrieve team worklogs
|
|
48
|
+
- Retrieve team and epic worklogs
|
|
47
49
|
- Get user time tracking info
|
|
48
50
|
|
|
51
|
+
### Buffer (5 Tools)
|
|
52
|
+
- Retrieve content chunks from buffered responses
|
|
53
|
+
- List active buffers and their metadata
|
|
54
|
+
- Clear buffers to free memory
|
|
55
|
+
- **Search buffered content with grep-like patterns**
|
|
56
|
+
- **Edit buffered content with find/replace**
|
|
57
|
+
|
|
58
|
+
### Workload (2 Tools)
|
|
59
|
+
- Convert time between units (seconds, hours, days)
|
|
60
|
+
- Sum multiple workload values with mixed units
|
|
61
|
+
|
|
62
|
+
## Content Buffering
|
|
63
|
+
|
|
64
|
+
Tools that return large content (Confluence pages, Jira issues, Tempo worklogs) use an in-memory buffering system for efficient content pagination.
|
|
65
|
+
|
|
66
|
+
### How It Works
|
|
67
|
+
|
|
68
|
+
1. **Initial Call**: When you call a tool like `confluence_get_page`, it fetches the full content and stores it in a buffer
|
|
69
|
+
2. **Chunked Response**: The response includes a `bufferId`, the first chunk of content (default 5000 chars), and pagination info
|
|
70
|
+
3. **Retrieve More**: Use `buffer_get_chunk` with the `bufferId` to get subsequent chunks
|
|
71
|
+
|
|
72
|
+
### Response Format
|
|
73
|
+
|
|
74
|
+
Buffered tools return:
|
|
75
|
+
- `bufferId`: Unique identifier for retrieving more content
|
|
76
|
+
- `content`: The current chunk of content
|
|
77
|
+
- `offset`: Starting position of this chunk
|
|
78
|
+
- `limit`: Maximum characters returned
|
|
79
|
+
- `totalSize`: Total size of buffered content
|
|
80
|
+
- `hasMore`: Whether more content is available
|
|
81
|
+
|
|
82
|
+
### Example Usage
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// 1. Get a Confluence page (returns first 5000 chars)
|
|
86
|
+
{
|
|
87
|
+
"pageId": "123456"
|
|
88
|
+
}
|
|
89
|
+
// Response: { bufferId: "buf_xxx", content: "...", hasMore: true, totalSize: 15000 }
|
|
90
|
+
|
|
91
|
+
// 2. Get next chunk
|
|
92
|
+
{
|
|
93
|
+
"bufferId": "buf_xxx",
|
|
94
|
+
"offset": 5000,
|
|
95
|
+
"limit": 5000
|
|
96
|
+
}
|
|
97
|
+
// Response: { content: "...", hasMore: true }
|
|
98
|
+
|
|
99
|
+
// 3. Continue until hasMore: false
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Buffered Tools
|
|
103
|
+
|
|
104
|
+
- `confluence_get_page` - Returns page content with buffering
|
|
105
|
+
- `confluence_get_page_by_title` - Returns page content with buffering
|
|
106
|
+
- `jira_get_issue` - Returns issue data with buffering
|
|
107
|
+
- `tempo_get_worklogs` - Returns worklog data with buffering
|
|
108
|
+
- `tempo_get_team_worklogs` - Returns team worklog data with buffering
|
|
109
|
+
|
|
110
|
+
### Buffer Management
|
|
111
|
+
|
|
112
|
+
- **TTL**: Buffers expire after 10 minutes by default; edited buffers reset to 1 day TTL
|
|
113
|
+
- **List Buffers**: Use `buffer_list` to see active buffers
|
|
114
|
+
- **Clear Buffers**: Use `buffer_clear` to free memory
|
|
115
|
+
|
|
116
|
+
### Searching Buffer Content
|
|
117
|
+
|
|
118
|
+
Use `buffer_grep` to search within buffered content with regex patterns:
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
// Search for "meeting" with 2 lines of context before and after
|
|
122
|
+
{
|
|
123
|
+
"bufferId": "buf_xxx",
|
|
124
|
+
"pattern": "meeting",
|
|
125
|
+
"-C": 2
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Case-insensitive search with 3 lines after each match
|
|
129
|
+
{
|
|
130
|
+
"bufferId": "buf_xxx",
|
|
131
|
+
"pattern": "API",
|
|
132
|
+
"-i": true,
|
|
133
|
+
"-A": 3
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Count occurrences only
|
|
137
|
+
{
|
|
138
|
+
"bufferId": "buf_xxx",
|
|
139
|
+
"pattern": "TODO",
|
|
140
|
+
"output_mode": "count"
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Parameters:**
|
|
145
|
+
- `pattern`: Regex pattern to search for
|
|
146
|
+
- `-A`: Lines to show after each match
|
|
147
|
+
- `-B`: Lines to show before each match
|
|
148
|
+
- `-C`: Lines to show before AND after (overrides -A/-B)
|
|
149
|
+
- `-i`: Case insensitive search
|
|
150
|
+
- `-n`: Show line numbers (default: true)
|
|
151
|
+
- `output_mode`: "content" (default) or "count"
|
|
152
|
+
- `multiline`: Enable multiline mode where `.` matches newlines
|
|
153
|
+
- `head_limit`: Limit to first N matches
|
|
154
|
+
- `offset`: Skip first N matches
|
|
155
|
+
|
|
156
|
+
### Editing Buffer Content
|
|
157
|
+
|
|
158
|
+
Use `buffer_edit` to perform find/replace on buffered content:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
// Replace single occurrence
|
|
162
|
+
{
|
|
163
|
+
"bufferId": "buf_xxx",
|
|
164
|
+
"old_string": "Meeting at 2pm",
|
|
165
|
+
"new_string": "Meeting at 3pm"
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Replace all occurrences
|
|
169
|
+
{
|
|
170
|
+
"bufferId": "buf_xxx",
|
|
171
|
+
"old_string": "TODO",
|
|
172
|
+
"new_string": "DONE",
|
|
173
|
+
"replace_all": true
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Important:** `buffer_edit` modifies content in memory only. To persist changes:
|
|
178
|
+
- For Confluence: call `confluence_update_page` with the modified content
|
|
179
|
+
- For Jira: call `jira_update_issue` with the modified fields
|
|
180
|
+
|
|
181
|
+
**Workflow Example:**
|
|
182
|
+
1. `confluence_get_page` → get bufferId
|
|
183
|
+
2. `buffer_grep` → find text to replace
|
|
184
|
+
3. `buffer_edit` → replace text in memory
|
|
185
|
+
4. `buffer_get_chunk` → get full modified content
|
|
186
|
+
5. `confluence_update_page` → persist changes
|
|
187
|
+
|
|
49
188
|
## Configuration
|
|
50
189
|
|
|
51
|
-
### Configuration with `.jicon.json`
|
|
190
|
+
### Configuration with `.jicon.json`
|
|
52
191
|
|
|
53
192
|
Jicon supports a flexible configuration hierarchy with permission control:
|
|
54
193
|
|
|
55
194
|
**Configuration Priority:**
|
|
56
195
|
1. `.jicon.json` (project root) - **Highest priority**
|
|
57
196
|
2. `$HOME/.config/jicon/jicon.json` (user config) - Medium priority
|
|
58
|
-
3. Environment variables - Lowest priority
|
|
197
|
+
3. Environment variables - Lowest priority
|
|
59
198
|
|
|
60
199
|
**Create `.jicon.json` in your project root:**
|
|
61
200
|
|
|
@@ -70,52 +209,51 @@ Jicon supports a flexible configuration hierarchy with permission control:
|
|
|
70
209
|
"url": "https://confluence.example.com",
|
|
71
210
|
"username": "your-email@example.com",
|
|
72
211
|
"token": "your-api-token"
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**Note:** This configuration uses the default `readonly` mode. To enable write operations, add:
|
|
78
|
-
```json
|
|
79
|
-
{
|
|
212
|
+
},
|
|
80
213
|
"permissions": {
|
|
81
214
|
"mode": "full"
|
|
82
215
|
}
|
|
83
216
|
}
|
|
84
217
|
```
|
|
85
218
|
|
|
219
|
+
**Note:** Tempo uses the same Jira URL and credentials - no separate configuration needed.
|
|
220
|
+
|
|
86
221
|
**⚠️ Important:** Add `.jicon.json` to your `.gitignore` to avoid committing credentials!
|
|
87
222
|
|
|
88
223
|
### Permission Modes
|
|
89
224
|
|
|
90
|
-
Control which tools are allowed to execute
|
|
225
|
+
Control which tools are allowed to execute:
|
|
91
226
|
|
|
92
|
-
#### 1. **
|
|
227
|
+
#### 1. **Full Access** (default)
|
|
93
228
|
```json
|
|
94
|
-
{ "permissions": { "mode": "
|
|
229
|
+
{ "permissions": { "mode": "full" } }
|
|
95
230
|
```
|
|
96
|
-
|
|
97
|
-
This is the **recommended default** for security - users must explicitly opt-in to write access.
|
|
231
|
+
All 52 tools are available.
|
|
98
232
|
|
|
99
|
-
#### 2. **
|
|
233
|
+
#### 2. **Read-Only Mode**
|
|
100
234
|
```json
|
|
101
|
-
{ "permissions": { "mode": "
|
|
235
|
+
{ "permissions": { "mode": "readonly" } }
|
|
102
236
|
```
|
|
103
|
-
|
|
237
|
+
Only read operations (36 read tools + auto-included dependencies: 14 Jira + 9 Confluence + 9 Tempo + 4 Buffer read tools, plus workload utilities).
|
|
104
238
|
|
|
105
239
|
#### 3. **Custom Mode** with Virtual Actions
|
|
106
240
|
|
|
107
241
|
Simplify configuration with **virtual actions** that group related tools:
|
|
108
242
|
|
|
109
|
-
**Virtual Actions Available:**
|
|
110
|
-
- `jira_read` - All
|
|
243
|
+
**Virtual Actions Available (9 total):**
|
|
244
|
+
- `jira_read` - All 14 Jira read tools
|
|
111
245
|
- `jira_write` - All 5 Jira write tools
|
|
112
|
-
- `jira_all` - All
|
|
113
|
-
- `confluence_read` - All
|
|
246
|
+
- `jira_all` - All 19 Jira tools
|
|
247
|
+
- `confluence_read` - All 9 Confluence read tools
|
|
114
248
|
- `confluence_write` - All 5 Confluence write tools
|
|
115
|
-
- `confluence_all` - All
|
|
116
|
-
- `tempo_read` - All
|
|
249
|
+
- `confluence_all` - All 14 Confluence tools
|
|
250
|
+
- `tempo_read` - All 9 Tempo read tools
|
|
117
251
|
- `tempo_write` - All 3 Tempo write tools
|
|
118
|
-
- `tempo_all` - All
|
|
252
|
+
- `tempo_all` - All 12 Tempo tools
|
|
253
|
+
|
|
254
|
+
**Auto-included Dependencies:**
|
|
255
|
+
- Buffer tools (buffer_get_chunk, buffer_grep, etc.) are automatically included with any read/write action
|
|
256
|
+
- Workload tools (workload_convert, workload_sum) are automatically included with any Jira/Confluence/Tempo tool
|
|
119
257
|
|
|
120
258
|
**Example: Read-only access to all services**
|
|
121
259
|
```json
|
|
@@ -166,11 +304,24 @@ Simplify configuration with **virtual actions** that group related tools:
|
|
|
166
304
|
|
|
167
305
|
See [`.jicon.json.example`](.jicon.json.example), [`.jicon.json.readonly`](.jicon.json.readonly), and [`.jicon.json.custom`](.jicon.json.custom) for more examples.
|
|
168
306
|
|
|
169
|
-
### Environment Variables
|
|
307
|
+
### Environment Variables
|
|
170
308
|
|
|
171
|
-
|
|
309
|
+
All configuration options can be set via environment variables:
|
|
172
310
|
|
|
173
|
-
|
|
311
|
+
| Variable | Description |
|
|
312
|
+
|----------|-------------|
|
|
313
|
+
| `JIRA_URL` | Jira instance URL |
|
|
314
|
+
| `JIRA_USERNAME` | Username/email (omit for Bearer auth) |
|
|
315
|
+
| `JIRA_API_TOKEN` | API token or PAT |
|
|
316
|
+
| `JIRA_AUTH_TYPE` | `basic` (default) or `bearer` |
|
|
317
|
+
| `CONFLUENCE_URL` | Confluence instance URL |
|
|
318
|
+
| `CONFLUENCE_USERNAME` | Username/email (omit for Bearer auth) |
|
|
319
|
+
| `CONFLUENCE_API_TOKEN` | API token or PAT |
|
|
320
|
+
| `CONFLUENCE_AUTH_TYPE` | `basic` (default) or `bearer` |
|
|
321
|
+
|
|
322
|
+
### Claude Desktop
|
|
323
|
+
|
|
324
|
+
Add to `claude_desktop_config.json`:
|
|
174
325
|
|
|
175
326
|
```json
|
|
176
327
|
{
|
|
@@ -191,6 +342,50 @@ For Claude Desktop, add to config file:
|
|
|
191
342
|
}
|
|
192
343
|
```
|
|
193
344
|
|
|
345
|
+
### Claude Code
|
|
346
|
+
|
|
347
|
+
Add to `~/.claude/settings.json` or project `.mcp.json`:
|
|
348
|
+
|
|
349
|
+
```json
|
|
350
|
+
{
|
|
351
|
+
"mcpServers": {
|
|
352
|
+
"jicon": {
|
|
353
|
+
"command": "npx",
|
|
354
|
+
"args": ["-y", "@crypto512/jicon-mcp"],
|
|
355
|
+
"env": {
|
|
356
|
+
"JIRA_URL": "https://jira.example.com",
|
|
357
|
+
"JIRA_USERNAME": "your-email@example.com",
|
|
358
|
+
"JIRA_API_TOKEN": "your-api-token"
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### OpenCode
|
|
366
|
+
|
|
367
|
+
For [OpenCode](https://opencode.ai) 1.0+, add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jsonc`:
|
|
368
|
+
|
|
369
|
+
```jsonc
|
|
370
|
+
{
|
|
371
|
+
"$schema": "https://opencode.ai/config.json",
|
|
372
|
+
"mcp": {
|
|
373
|
+
"jicon": {
|
|
374
|
+
"type": "local",
|
|
375
|
+
"command": ["npx", "-y", "@crypto512/jicon-mcp"],
|
|
376
|
+
"environment": {
|
|
377
|
+
"JIRA_URL": "https://jira.example.com",
|
|
378
|
+
"JIRA_USERNAME": "your-email@example.com",
|
|
379
|
+
"JIRA_API_TOKEN": "your-api-token",
|
|
380
|
+
"CONFLUENCE_URL": "https://confluence.example.com",
|
|
381
|
+
"CONFLUENCE_USERNAME": "your-email@example.com",
|
|
382
|
+
"CONFLUENCE_API_TOKEN": "your-api-token"
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
194
389
|
## Example Usage
|
|
195
390
|
|
|
196
391
|
Once configured, you can ask Claude to:
|
|
@@ -209,16 +404,19 @@ Once configured, you can ask Claude to:
|
|
|
209
404
|
### Jira Tools
|
|
210
405
|
| Category | Tools |
|
|
211
406
|
|----------|-------|
|
|
407
|
+
| **Help** | `jira_jql_help` |
|
|
212
408
|
| **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
|
|
213
409
|
| **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
|
|
214
410
|
| **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
|
|
215
|
-
| **Projects** | `jira_list_projects`, `jira_get_project` |
|
|
411
|
+
| **Projects** | `jira_list_projects`, `jira_get_project`, `jira_get_issue_types` |
|
|
216
412
|
| **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
|
|
217
413
|
| **Workflow** | `jira_get_transitions` |
|
|
414
|
+
| **Time Tracking** | `jira_get_issue_worklogs`, `jira_get_total_worklogs` |
|
|
218
415
|
|
|
219
416
|
### Confluence Tools
|
|
220
417
|
| Category | Tools |
|
|
221
418
|
|----------|-------|
|
|
419
|
+
| **Help** | `confluence_cql_help` |
|
|
222
420
|
| **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
|
|
223
421
|
| **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
|
|
224
422
|
| **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
|
|
@@ -231,9 +429,22 @@ Once configured, you can ask Claude to:
|
|
|
231
429
|
|----------|-------|
|
|
232
430
|
| **Worklog Management** | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_log_work`, `tempo_update_worklog`, `tempo_delete_worklog` |
|
|
233
431
|
| **Team Tracking** | `tempo_get_team_worklogs`, `tempo_get_teams`, `tempo_get_team` |
|
|
432
|
+
| **Epic Tracking** | `tempo_get_epic_worklogs` |
|
|
234
433
|
| **Accounts** | `tempo_get_accounts`, `tempo_get_account` |
|
|
235
434
|
| **User Info** | `tempo_get_user_info` |
|
|
236
435
|
|
|
436
|
+
### Buffer Tools
|
|
437
|
+
| Category | Tools |
|
|
438
|
+
|----------|-------|
|
|
439
|
+
| **Content Pagination** | `buffer_get_chunk`, `buffer_list`, `buffer_clear` |
|
|
440
|
+
| **Content Search** | `buffer_grep` |
|
|
441
|
+
| **Content Edit** | `buffer_edit` |
|
|
442
|
+
|
|
443
|
+
### Workload Tools
|
|
444
|
+
| Category | Tools |
|
|
445
|
+
|----------|-------|
|
|
446
|
+
| **Time Conversion** | `workload_convert`, `workload_sum` |
|
|
447
|
+
|
|
237
448
|
## Requirements
|
|
238
449
|
|
|
239
450
|
- Node.js 18 or higher
|
|
@@ -244,26 +455,37 @@ Once configured, you can ask Claude to:
|
|
|
244
455
|
|
|
245
456
|
## Authentication
|
|
246
457
|
|
|
247
|
-
### Jira/Confluence Cloud
|
|
458
|
+
### Jira/Confluence Cloud (Basic Auth)
|
|
248
459
|
Generate an API token from your Atlassian account:
|
|
249
460
|
1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
|
|
250
461
|
2. Create a new API token
|
|
251
|
-
3. Use your email as username and the token as
|
|
462
|
+
3. Use your email as `username` and the token as `token`
|
|
252
463
|
|
|
253
|
-
### Jira/Confluence Data Center
|
|
254
|
-
|
|
464
|
+
### Jira/Confluence Data Center (Bearer Auth)
|
|
465
|
+
For Data Center 8.14+, use Personal Access Tokens (PAT):
|
|
255
466
|
1. Go to your profile settings
|
|
256
467
|
2. Navigate to "Personal Access Tokens"
|
|
257
468
|
3. Create a new token with required permissions
|
|
469
|
+
4. Omit `username` or set `authType: "bearer"` to use Bearer authentication
|
|
470
|
+
|
|
471
|
+
**Data Center `.jicon.json` example:**
|
|
472
|
+
```json
|
|
473
|
+
{
|
|
474
|
+
"jira": {
|
|
475
|
+
"url": "https://jira.example.com",
|
|
476
|
+
"token": "your-personal-access-token",
|
|
477
|
+
"authType": "bearer"
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
```
|
|
258
481
|
|
|
259
482
|
## Security Best Practices
|
|
260
483
|
|
|
261
|
-
- ✅
|
|
262
|
-
- ✅ Store credentials in `.jicon.json` and add it to `.gitignore`
|
|
484
|
+
- ✅ Store credentials in environment variables
|
|
263
485
|
- ✅ Use API tokens with minimal required permissions
|
|
264
486
|
- ✅ Regularly rotate API tokens
|
|
265
487
|
- ✅ Never commit credentials to version control
|
|
266
|
-
- ✅
|
|
488
|
+
- ✅ Use read-only tokens for search/read operations
|
|
267
489
|
|
|
268
490
|
## License
|
|
269
491
|
|
package/TOOL_LIST.md
CHANGED
|
@@ -5,12 +5,13 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
5
5
|
|
|
6
6
|
## Summary
|
|
7
7
|
|
|
8
|
-
**Total Tools**:
|
|
8
|
+
**Total Tools**: 42
|
|
9
9
|
- **Jira Tools**: 15
|
|
10
10
|
- **Confluence Tools**: 13
|
|
11
11
|
- **Tempo Tools**: 11
|
|
12
|
+
- **Buffer Tools**: 3
|
|
12
13
|
|
|
13
|
-
**Note**:
|
|
14
|
+
**Note**: Tools that return large content use in-memory buffering with pagination support. See the Buffer Tools section for content retrieval.
|
|
14
15
|
|
|
15
16
|
---
|
|
16
17
|
|
|
@@ -29,7 +30,7 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
29
30
|
---
|
|
30
31
|
|
|
31
32
|
### 2. jira_get_issue
|
|
32
|
-
**Description**: Get detailed information about a specific issue
|
|
33
|
+
**Description**: Get detailed information about a specific issue with buffered content pagination
|
|
33
34
|
**Use Cases**: View issue details, check status, read description and comments
|
|
34
35
|
|
|
35
36
|
| Parameter | Type | Required | Description |
|
|
@@ -37,6 +38,10 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
37
38
|
| issueKey | string | ✓ | Issue key (e.g., "PROJ-123") |
|
|
38
39
|
| fields | string[] | ✗ | Specific fields to return |
|
|
39
40
|
| expand | string[] | ✗ | Additional data (e.g., "changelog") |
|
|
41
|
+
| offset | number | ✗ | Character offset to start from (default: 0) |
|
|
42
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
43
|
+
|
|
44
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`
|
|
40
45
|
|
|
41
46
|
---
|
|
42
47
|
|
|
@@ -209,18 +214,22 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
209
214
|
---
|
|
210
215
|
|
|
211
216
|
### 2. confluence_get_page
|
|
212
|
-
**Description**: Get a Confluence page by ID
|
|
217
|
+
**Description**: Get a Confluence page by ID with buffered content pagination
|
|
213
218
|
**Use Cases**: Read page content, check version
|
|
214
219
|
|
|
215
220
|
| Parameter | Type | Required | Description |
|
|
216
221
|
|-----------|------|----------|-------------|
|
|
217
222
|
| pageId | string | ✓ | Page ID |
|
|
218
223
|
| expand | string[] | ✗ | Additional data (e.g., "body.storage") |
|
|
224
|
+
| offset | number | ✗ | Character offset to start from (default: 0) |
|
|
225
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
226
|
+
|
|
227
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, page metadata
|
|
219
228
|
|
|
220
229
|
---
|
|
221
230
|
|
|
222
231
|
### 3. confluence_get_page_by_title
|
|
223
|
-
**Description**: Get a page by title and space
|
|
232
|
+
**Description**: Get a page by title and space with buffered content pagination
|
|
224
233
|
**Use Cases**: Find page by name, access documentation
|
|
225
234
|
|
|
226
235
|
| Parameter | Type | Required | Description |
|
|
@@ -228,6 +237,10 @@ This document provides a comprehensive reference of all available tools in the J
|
|
|
228
237
|
| spaceKey | string | ✓ | Space key |
|
|
229
238
|
| title | string | ✓ | Page title |
|
|
230
239
|
| expand | string[] | ✗ | Additional data to expand |
|
|
240
|
+
| offset | number | ✗ | Character offset to start from (default: 0) |
|
|
241
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
242
|
+
|
|
243
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, page metadata
|
|
231
244
|
|
|
232
245
|
---
|
|
233
246
|
|
|
@@ -436,3 +449,186 @@ AND lastModified >= now("-30d")
|
|
|
436
449
|
- **Meeting notes**: Recording decisions, action items
|
|
437
450
|
- **Collaboration**: Comments, feedback on pages
|
|
438
451
|
- **Content organization**: Space and page hierarchy management
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## Tempo Tools (11)
|
|
456
|
+
|
|
457
|
+
### 1. tempo_get_worklogs
|
|
458
|
+
**Description**: Get time tracking worklogs with buffered content pagination
|
|
459
|
+
**Use Cases**: View time entries, generate reports, review team work
|
|
460
|
+
|
|
461
|
+
| Parameter | Type | Required | Description |
|
|
462
|
+
|-----------|------|----------|-------------|
|
|
463
|
+
| dateFrom | string | ✗ | Start date (YYYY-MM-DD) |
|
|
464
|
+
| dateTo | string | ✗ | End date (YYYY-MM-DD) |
|
|
465
|
+
| projectKey | string | ✗ | Filter by project key |
|
|
466
|
+
| issueKey | string | ✗ | Filter by issue key |
|
|
467
|
+
| workerKey | string | ✗ | Filter by worker username |
|
|
468
|
+
| offset | number | ✗ | Character offset to start from (default: 0) |
|
|
469
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
470
|
+
|
|
471
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, worklog metadata
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
### 2. tempo_get_worklog
|
|
476
|
+
**Description**: Get detailed information about a specific worklog entry
|
|
477
|
+
**Use Cases**: View worklog details, check time logged
|
|
478
|
+
|
|
479
|
+
| Parameter | Type | Required | Description |
|
|
480
|
+
|-----------|------|----------|-------------|
|
|
481
|
+
| worklogId | number | ✓ | Tempo worklog ID |
|
|
482
|
+
|
|
483
|
+
---
|
|
484
|
+
|
|
485
|
+
### 3. tempo_log_work
|
|
486
|
+
**Description**: Log time to a Jira issue
|
|
487
|
+
**Use Cases**: Record work time, track daily activities
|
|
488
|
+
|
|
489
|
+
| Parameter | Type | Required | Description |
|
|
490
|
+
|-----------|------|----------|-------------|
|
|
491
|
+
| issueKey | string | ✓ | Jira issue key (e.g., PROJ-123) |
|
|
492
|
+
| hours | number | ✓ | Hours to log (decimal, e.g., 2.5 = 2h 30m) |
|
|
493
|
+
| date | string | ✓ | Date to log work (YYYY-MM-DD) |
|
|
494
|
+
| description | string | ✗ | Work description |
|
|
495
|
+
| startTime | string | ✗ | Start time (HH:MM:SS) |
|
|
496
|
+
| remainingEstimateHours | number | ✗ | Remaining estimate in hours |
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
### 4. tempo_update_worklog
|
|
501
|
+
**Description**: Update an existing worklog entry
|
|
502
|
+
**Use Cases**: Correct time logged, update descriptions
|
|
503
|
+
|
|
504
|
+
| Parameter | Type | Required | Description |
|
|
505
|
+
|-----------|------|----------|-------------|
|
|
506
|
+
| worklogId | number | ✓ | Tempo worklog ID to update |
|
|
507
|
+
| hours | number | ✗ | New hours (decimal) |
|
|
508
|
+
| description | string | ✗ | New description |
|
|
509
|
+
| date | string | ✗ | New date (YYYY-MM-DD) |
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
### 5. tempo_delete_worklog
|
|
514
|
+
**Description**: Delete a worklog entry
|
|
515
|
+
**Use Cases**: Remove incorrect entries
|
|
516
|
+
|
|
517
|
+
| Parameter | Type | Required | Description |
|
|
518
|
+
|-----------|------|----------|-------------|
|
|
519
|
+
| worklogId | number | ✓ | Tempo worklog ID to delete |
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
### 6. tempo_get_accounts
|
|
524
|
+
**Description**: Get all Tempo accounts
|
|
525
|
+
**Use Cases**: List accounts for time tracking, find account keys
|
|
526
|
+
|
|
527
|
+
| Parameter | Type | Required | Description |
|
|
528
|
+
|-----------|------|----------|-------------|
|
|
529
|
+
| (none) | | | |
|
|
530
|
+
|
|
531
|
+
---
|
|
532
|
+
|
|
533
|
+
### 7. tempo_get_account
|
|
534
|
+
**Description**: Get detailed information about a Tempo account
|
|
535
|
+
**Use Cases**: View account details, check status
|
|
536
|
+
|
|
537
|
+
| Parameter | Type | Required | Description |
|
|
538
|
+
|-----------|------|----------|-------------|
|
|
539
|
+
| accountKey | string | ✓ | Account key |
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
### 8. tempo_get_teams
|
|
544
|
+
**Description**: Get all Tempo teams
|
|
545
|
+
**Use Cases**: List teams, find team IDs
|
|
546
|
+
|
|
547
|
+
| Parameter | Type | Required | Description |
|
|
548
|
+
|-----------|------|----------|-------------|
|
|
549
|
+
| (none) | | | |
|
|
550
|
+
|
|
551
|
+
---
|
|
552
|
+
|
|
553
|
+
### 9. tempo_get_team
|
|
554
|
+
**Description**: Get detailed information about a Tempo team
|
|
555
|
+
**Use Cases**: View team details, check membership
|
|
556
|
+
|
|
557
|
+
| Parameter | Type | Required | Description |
|
|
558
|
+
|-----------|------|----------|-------------|
|
|
559
|
+
| teamId | number | ✓ | Team ID |
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
### 10. tempo_get_team_worklogs
|
|
564
|
+
**Description**: Get all worklogs for a team with buffered content pagination
|
|
565
|
+
**Use Cases**: Team capacity reports, sprint reviews
|
|
566
|
+
|
|
567
|
+
| Parameter | Type | Required | Description |
|
|
568
|
+
|-----------|------|----------|-------------|
|
|
569
|
+
| teamId | number | ✓ | Team ID |
|
|
570
|
+
| dateFrom | string | ✓ | Start date (YYYY-MM-DD) |
|
|
571
|
+
| dateTo | string | ✓ | End date (YYYY-MM-DD) |
|
|
572
|
+
| offset | number | ✗ | Character offset to start from (default: 0) |
|
|
573
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
574
|
+
|
|
575
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, worklog metadata
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
### 11. tempo_get_user_info
|
|
580
|
+
**Description**: Get current user information (workerKey, accountId, displayName)
|
|
581
|
+
**Use Cases**: Get workerKey for filtering worklogs, verify authentication
|
|
582
|
+
|
|
583
|
+
| Parameter | Type | Required | Description |
|
|
584
|
+
|-----------|------|----------|-------------|
|
|
585
|
+
| (none) | | | |
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
## Buffer Tools (3)
|
|
590
|
+
|
|
591
|
+
Buffer tools are used to retrieve content from buffered responses. When tools like `confluence_get_page` or `jira_get_issue` return large content, they store the full data in an in-memory buffer and return a `bufferId` for pagination.
|
|
592
|
+
|
|
593
|
+
### 1. buffer_get_chunk
|
|
594
|
+
**Description**: Retrieve a chunk of buffered content by buffer ID
|
|
595
|
+
**Use Cases**: Get remaining content from large responses
|
|
596
|
+
|
|
597
|
+
| Parameter | Type | Required | Description |
|
|
598
|
+
|-----------|------|----------|-------------|
|
|
599
|
+
| bufferId | string | ✓ | Buffer ID from previous tool response |
|
|
600
|
+
| offset | number | ✗ | Character position to start from (default: 0) |
|
|
601
|
+
| limit | number | ✗ | Maximum characters to return (default: 5000) |
|
|
602
|
+
|
|
603
|
+
**Response includes**: `bufferId`, `content`, `offset`, `limit`, `totalSize`, `hasMore`, `metadata`
|
|
604
|
+
|
|
605
|
+
**Example workflow**:
|
|
606
|
+
```typescript
|
|
607
|
+
// 1. Call confluence_get_page -> returns bufferId, first chunk, hasMore: true
|
|
608
|
+
// 2. Call buffer_get_chunk(bufferId, offset: 5000) -> returns next chunk
|
|
609
|
+
// 3. Repeat until hasMore: false
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
### 2. buffer_list
|
|
615
|
+
**Description**: List all active buffers with their metadata
|
|
616
|
+
**Use Cases**: View active buffers, check expiration times
|
|
617
|
+
|
|
618
|
+
| Parameter | Type | Required | Description |
|
|
619
|
+
|-----------|------|----------|-------------|
|
|
620
|
+
| (none) | | | |
|
|
621
|
+
|
|
622
|
+
**Response includes**: `count`, list of buffers with `bufferId`, `totalSize`, `createdAt`, `expiresAt`, `metadata`
|
|
623
|
+
|
|
624
|
+
---
|
|
625
|
+
|
|
626
|
+
### 3. buffer_clear
|
|
627
|
+
**Description**: Clear a specific buffer or all buffers
|
|
628
|
+
**Use Cases**: Free up memory, clean up after processing
|
|
629
|
+
|
|
630
|
+
| Parameter | Type | Required | Description |
|
|
631
|
+
|-----------|------|----------|-------------|
|
|
632
|
+
| bufferId | string | ✗ | Buffer ID to clear, or omit to clear all buffers |
|
|
633
|
+
|
|
634
|
+
**Response includes**: `message`, `cleared` (count of buffers cleared)
|