@crypto512/jicon-mcp 2.0.0 → 2.1.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.
Files changed (51) hide show
  1. package/PROMPT.md +16 -197
  2. package/README.md +26 -25
  3. package/TOOL_LIST.md +213 -22
  4. package/dist/index.js +6 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/jira/activity-tools.d.ts +160 -0
  7. package/dist/jira/activity-tools.d.ts.map +1 -0
  8. package/dist/jira/activity-tools.js +971 -0
  9. package/dist/jira/activity-tools.js.map +1 -0
  10. package/dist/jira/client.d.ts +39 -1
  11. package/dist/jira/client.d.ts.map +1 -1
  12. package/dist/jira/client.js +70 -0
  13. package/dist/jira/client.js.map +1 -1
  14. package/dist/jira/types.d.ts +44 -0
  15. package/dist/jira/types.d.ts.map +1 -1
  16. package/dist/permissions/filter.d.ts.map +1 -1
  17. package/dist/permissions/filter.js +8 -4
  18. package/dist/permissions/filter.js.map +1 -1
  19. package/dist/permissions/tool-registry.d.ts +8 -6
  20. package/dist/permissions/tool-registry.d.ts.map +1 -1
  21. package/dist/permissions/tool-registry.js +14 -4
  22. package/dist/permissions/tool-registry.js.map +1 -1
  23. package/dist/tempo/client.d.ts +6 -0
  24. package/dist/tempo/client.d.ts.map +1 -1
  25. package/dist/tempo/client.js +15 -1
  26. package/dist/tempo/client.js.map +1 -1
  27. package/dist/tempo/tools.d.ts +6 -2
  28. package/dist/tempo/tools.d.ts.map +1 -1
  29. package/dist/tempo/tools.js +15 -6
  30. package/dist/tempo/tools.js.map +1 -1
  31. package/dist/utils/buffer-pipeline/schema.d.ts +26 -26
  32. package/dist/utils/buffer-tools.d.ts +10 -10
  33. package/dist/utils/buffer-tools.js +2 -2
  34. package/dist/utils/buffer-tools.js.map +1 -1
  35. package/dist/utils/date-tools.d.ts +78 -0
  36. package/dist/utils/date-tools.d.ts.map +1 -0
  37. package/dist/utils/date-tools.js +312 -0
  38. package/dist/utils/date-tools.js.map +1 -0
  39. package/dist/utils/jicon-help.d.ts +5 -5
  40. package/dist/utils/jicon-help.d.ts.map +1 -1
  41. package/dist/utils/jicon-help.js +166 -5
  42. package/dist/utils/jicon-help.js.map +1 -1
  43. package/dist/utils/plantuml/validation-helper.d.ts +2 -2
  44. package/dist/utils/plantuml/validation-helper.js +2 -2
  45. package/dist/utils/xhtml/plantuml.d.ts +4 -4
  46. package/dist/utils/xhtml/plantuml.js +5 -5
  47. package/dist/utils/xhtml/plantuml.js.map +1 -1
  48. package/dist/utils/xhtml/validator.d.ts +2 -2
  49. package/dist/utils/xhtml/validator.js +4 -4
  50. package/dist/utils/xhtml/validator.js.map +1 -1
  51. package/package.json +1 -1
package/PROMPT.md CHANGED
@@ -1,214 +1,33 @@
1
1
  # Jicon MCP Agent Prompt
2
2
 
3
- You are an assistant with access to the Jicon MCP server for Jira, Confluence, and Tempo operations. Follow these protocols strictly.
3
+ You are an assistant with access to the Jicon MCP server for Jira, Confluence, and Tempo operations.
4
4
 
5
- ---
5
+ ## Before ANY Operation: Call Help
6
6
 
7
- ## MANDATORY: Read Help Before Acting
7
+ **Always start by reading the help documentation:**
8
8
 
9
- **Before ANY jicon operation, you MUST read the relevant help documentation.**
10
-
11
- ### Step 1: Initial Orientation
12
9
  ```
13
- help() ← Call this FIRST to get workflow decision tree
10
+ help() ← Returns workflow decision tree and quick reference
14
11
  ```
15
12
 
16
- ### Step 2: Topic-Specific Help (Required Before Domain Operations)
13
+ Then use topic-specific help for your task:
17
14
 
18
- | Task | Required Help Call |
19
- |------|--------------------|
20
- | Search Jira issues | `help(topic="jql")` |
15
+ | Task | Help Command |
16
+ |------|--------------|
17
+ | Search Jira | `help(topic="jql")` |
21
18
  | Search Confluence | `help(topic="cql")` |
22
19
  | Edit Confluence pages | `help(topic="buffers")` then `help(topic="storage")` |
23
- | Create PlantUML diagrams | `help(topic="plantuml")` |
24
- | Work with large content | `help(topic="buffers")` |
25
-
26
- **DO NOT proceed with operations until you have read the relevant help topic.**
27
-
28
- ---
29
-
30
- ## PlantUML Protocol (STRICT)
31
-
32
- PlantUML operations require a specific workflow. Deviations cause errors.
33
-
34
- ### Mandatory Workflow
35
-
36
- ```
37
- 1. plantuml_validate(code="@startuml\n...\n@enduml")
38
-
39
- If errors → FIX and re-validate (see Error Handling below)
40
-
41
- 2. buffer_edit(bufferId, after=ID, plantuml="@startuml\n...\n@enduml")
42
-
43
- 3. confluence_draft_save(draftId, bufferId)
44
- ```
45
-
46
- ### Critical Rules
47
-
48
- 1. **ALWAYS validate first** - Even for "simple" diagrams
49
- 2. **Use `plantuml` parameter** - The `content` parameter REJECTS PlantUML macros
50
- 3. **Include markers required** - Every diagram needs `@startuml` and `@enduml`
51
- 4. **One diagram per operation** - Multiple diagrams = multiple operations or batch
52
-
53
- ### PlantUML Error Handling
54
-
55
- When `plantuml_validate` returns errors:
56
-
57
- ```json
58
- {
59
- "valid": false,
60
- "errors": [
61
- {"line": 5, "column": 10, "message": "Syntax error", "suggestion": "..."}
62
- ]
63
- }
64
- ```
65
-
66
- **You MUST:**
67
- 1. Read the error location (line, column)
68
- 2. Read the suggestion if provided
69
- 3. Fix the PlantUML code at that location
70
- 4. Re-validate until `valid: true`
71
-
72
- **You MUST NOT:**
73
- - Skip the diagram
74
- - Insert unvalidated code
75
- - Tell the user "it doesn't work"
76
-
77
- ### Service Unavailable
78
-
79
- If you receive "PlantUML service unavailable":
80
-
81
- ```
82
- 1. plantuml_status() ← Check what's wrong
83
- 2. Report the specific issue to user:
84
- - Docker not running
85
- - Container failed to start
86
- - Container died
87
- 3. Suggest: "Please ensure Docker is running and restart the session"
88
- ```
89
-
90
- ---
91
-
92
- ## Buffer & Element ID Editing
93
-
94
- Confluence content is edited via buffers using stable element IDs.
95
-
96
- ### Workflow
97
-
98
- ```
99
- 1. Get content:
100
- confluence_get_page(pageId) OR confluence_draft_create(spaceKey, title)
101
- → Returns: bufferId, structure
102
-
103
- 2. Structure shows element IDs:
104
- [
105
- {id: 1, type: "h1", text: "Title"},
106
- {id: 2, type: "p", text: "Content..."},
107
- {id: 3, type: "plantuml", text: "Diagram"}
108
- ]
20
+ | PlantUML diagrams | `help(topic="plantuml")` |
109
21
 
110
- 3. Edit by ID:
111
- buffer_edit(bufferId, after=1, content="<p>New paragraph</p>")
112
- buffer_edit(bufferId, replace=3, plantuml="@startuml...@enduml")
113
- buffer_edit(bufferId, remove=2)
114
-
115
- 4. Save:
116
- confluence_draft_save(draftId, bufferId)
117
- ```
118
-
119
- ### Batch Operations (Preferred for Multiple Edits)
120
-
121
- ```
122
- buffer_edit(bufferId, operations=[
123
- {after: 1, content: "<h2>Section</h2>"},
124
- {after: 2, plantuml: "@startuml\nA -> B\n@enduml"},
125
- {remove: 5}
126
- ])
127
- ```
128
-
129
- Benefits: Single parse, single validation, atomic execution.
130
-
131
- ---
132
-
133
- ## ERROR HANDLING MANDATE
134
-
135
- ### NEVER Skip Tasks Due to Errors
136
-
137
- When you encounter an error:
138
-
139
- 1. **READ** the full error message (includes diagnostics)
140
- 2. **ANALYZE** the cause using error details
141
- 3. **FIX** the issue based on error guidance
142
- 4. **RETRY** the operation
143
- 5. **REPEAT** steps 1-4 up to 3 times
144
-
145
- **Only after 3 failed fix attempts** may you report being blocked.
146
-
147
- ### Error Recovery Reference
148
-
149
- | Error Type | Recovery Action |
150
- |------------|-----------------|
151
- | PlantUML syntax error | Fix code at reported line/column, re-validate |
152
- | Element not found | Call `buffer_get_structure(bufferId)` to see valid IDs |
153
- | Buffer expired | Re-fetch content to get new bufferId |
154
- | XHTML parse error | Check `suggestedActions` in error, fix malformed XML |
155
- | Multiple occurrences | Use `replace_all=true` for string replacement |
156
- | Permission denied | Report to user - configuration issue |
157
- | Service unavailable | Call status tool, report specific issue |
158
-
159
- ### XHTML Error Recovery
160
-
161
- When `confluence_draft_save` fails with XHTML error:
162
-
163
- ```
164
- 1. Error includes: errorLocation (element ID), suggestedActions
165
- 2. buffer_get_element(bufferId, elementId) ← Inspect problem element
166
- 3. buffer_edit(bufferId, replace=elementId, content="<fixed XHTML>")
167
- 4. Retry save
168
- ```
169
-
170
- ---
171
-
172
- ## Quick Reference
173
-
174
- ### Help Topics
22
+ ## Available Topics
175
23
 
176
24
  | Topic | Content |
177
25
  |-------|---------|
178
26
  | (none) | Workflow decision tree, core patterns |
179
- | `jql` | Jira Query Language syntax, operators, examples |
180
- | `cql` | Confluence Query Language syntax, operators, examples |
181
- | `storage` | Confluence XHTML format, macros, layouts |
182
- | `plantuml` | PlantUML validation workflow, macro structure |
183
- | `buffers` | Element ID system, buffer operations, batch editing |
184
-
185
- ### Common PlantUML Fixes
186
-
187
- | Error | Fix |
188
- |-------|-----|
189
- | Missing @startuml | Add `@startuml` at start |
190
- | Missing @enduml | Add `@enduml` at end |
191
- | Unexpected token | Check syntax at reported line |
192
- | Unknown entity | Verify class/actor/component name spelling |
193
- | C4 not recognized | Add `!include` for C4 library |
194
-
195
- ### Buffer Operation Types
196
-
197
- | Operation | Parameters |
198
- |-----------|------------|
199
- | Insert after | `after=ID, content="..." OR plantuml="..."` |
200
- | Insert before | `before=ID, content="..." OR plantuml="..."` |
201
- | Replace | `replace=ID, content="..." OR plantuml="..."` |
202
- | Remove | `remove=ID` |
203
- | Append | `append=true, content="..." OR plantuml="..."` |
204
-
205
- ---
206
-
207
- ## Core Principles
27
+ | `jql` | Jira Query Language syntax |
28
+ | `cql` | Confluence Query Language syntax |
29
+ | `storage` | Confluence XHTML format |
30
+ | `plantuml` | PlantUML validation workflow |
31
+ | `buffers` | Element ID system, buffer operations |
208
32
 
209
- 1. **Help-First**: Always read documentation before acting
210
- 2. **Validate-First**: For PlantUML, validation is mandatory before insertion
211
- 3. **Fix-Not-Skip**: Errors are problems to solve, not reasons to abandon tasks
212
- 4. **ID-Based Editing**: Use element IDs for precise content manipulation
213
- 5. **Batch When Possible**: Multiple edits should use operations array
214
- 6. **Retry With Fixes**: Failed operations require analysis and correction, not abandonment
33
+ The help system provides complete guidance for all operations. Read it before proceeding.
package/README.md CHANGED
@@ -31,9 +31,11 @@ Once configured, just ask in natural language:
31
31
 
32
32
  ### Jira
33
33
  - *"Find all high-priority bugs assigned to me"*
34
+ - *"What happened on project ACME this week?"* (Activity digest)
34
35
  - *"Create a task for implementing user authentication"*
35
36
  - *"Move PROJ-123 to Done and add a comment that it's deployed"*
36
37
  - *"Show me the current sprint's progress"*
38
+ - *"Summarize recent discussions about authentication"* (Comment analysis)
37
39
  - *"Link PROJ-456 as blocking PROJ-789"*
38
40
 
39
41
  ### Confluence
@@ -136,7 +138,7 @@ All configuration is done through environment variables.
136
138
  | `JICON_PERMISSIONS_WHITELIST` | comma-separated | - | Tools to allow (custom mode) |
137
139
  | `JICON_PERMISSIONS_BLACKLIST` | comma-separated | - | Tools to deny (custom mode) |
138
140
  | `JICON_CONFLUENCE_WRITE_HOME` | `true`\|`false` | `false` | Restrict Confluence writes to personal space |
139
- | `JICON_DISABLE_DOCKER` | `true`\|`false` | `false` | Disable PlantUML/Docker features |
141
+ | `JICON_PLANTUML_SERVER_URL` | string | - | PlantUML server URL (e.g., `http://localhost:8080`) |
140
142
  | `JICON_MAX_OUTPUT` | number | `16000` | Maximum output characters |
141
143
 
142
144
  **Note:** Tempo uses the same Jira credentials - no separate configuration needed.
@@ -207,34 +209,20 @@ This configuration allows:
207
209
 
208
210
  **Individual tools** (for blacklist): See [TOOL_LIST.md](TOOL_LIST.md) for all tool names
209
211
 
210
- ### Docker Configuration
212
+ ### PlantUML Configuration
211
213
 
212
- PlantUML validation requires Docker. The container starts when MCP loads and does **not auto-restart** if it stops - you'll need to restart the MCP server.
214
+ PlantUML validation requires an external PlantUML server. If not configured, PlantUML tools are disabled.
213
215
 
214
- **Disable Docker/PlantUML**:
216
+ **Configure PlantUML server**:
215
217
  ```json
216
218
  {
217
219
  "env": {
218
- "JICON_DISABLE_DOCKER": "true"
220
+ "JICON_PLANTUML_SERVER_URL": "http://localhost:8080"
219
221
  }
220
222
  }
221
223
  ```
222
224
 
223
- When disabled, PlantUML tools return clear errors instead of failing silently.
224
-
225
- ### PlantUML Include Expansion
226
-
227
- C4-PlantUML, AWS icons, and Azure diagrams require `!include` directives. By default, Jicon expands these includes client-side before validation and sending to Confluence.
228
-
229
- **Whitelisted URLs:**
230
- - `https://raw.githubusercontent.com/plantuml-stdlib/` - C4, Azure, Kubernetes, etc.
231
- - `https://raw.githubusercontent.com/plantuml/` - Official PlantUML stdlib
232
- - `https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/` - AWS icons
233
-
234
- **Disable include expansion** (if you encounter issues):
235
- ```json
236
- { "plantumlInclude": false }
237
- ```
225
+ You can use the public PlantUML server (`http://www.plantuml.com/plantuml`) or run your own with Docker: `docker run -d -p 8080:8080 plantuml/plantuml-server:jetty`.
238
226
 
239
227
  ## Authentication
240
228
 
@@ -257,7 +245,7 @@ C4-PlantUML, AWS icons, and Azure diagrams require `!include` directives. By def
257
245
  - **Jira** Server/Data Center or Cloud with API access
258
246
  - **Confluence** (optional) Server/Data Center or Cloud
259
247
  - **Tempo** (optional) Timesheets plugin
260
- - **Docker** (optional) For PlantUML diagram validation
248
+ - **PlantUML Server** (optional) External server for diagram validation
261
249
 
262
250
  ## API Limitations
263
251
 
@@ -290,15 +278,28 @@ This achieves "draft before publish" semantics within API constraints.
290
278
 
291
279
  ## Features
292
280
 
293
- ### 71 Tools Across 3 Services
281
+ ### 75 Tools Across 3 Services
294
282
 
295
283
  | Service | Capabilities |
296
284
  |---------|--------------|
297
- | **Jira** (18 tools) | Search, create, update, transition issues; manage comments, links, watchers; access boards, sprints, worklogs |
285
+ | **Jira** (22 tools) | Search, create, update, transition issues; manage comments, links, watchers; access boards, sprints, worklogs; **LLM-powered analysis** |
298
286
  | **Confluence** (21 tools) | Search, create, edit pages via drafts; manage spaces, comments, attachments; PlantUML diagrams; review workflow |
299
287
  | **Tempo** (12 tools) | Log time, view/update worklogs, team tracking, accounts |
300
288
 
301
- Plus utility tools for content buffering, time calculations, URL generation, and built-in help.
289
+ Plus utility tools for content buffering, time calculations, URL generation, date resolution, and built-in help.
290
+
291
+ ### LLM-Powered Analysis Tools
292
+
293
+ These **intelligent entry points** are designed for AI synthesis - they return pre-processed content directly to the LLM (not buffered) for analysis and insight generation:
294
+
295
+ | Tool | Purpose |
296
+ |------|---------|
297
+ | **Activity Digest** | Fetches comments, status/priority/assignee changes across issues. Ask: *"What happened on project X this week?"* |
298
+ | **Recent Comments** | Aggregates comments across multiple issues. Ask: *"Any blockers mentioned in recent discussions?"* |
299
+ | **Changelog** | Tracks field changes across issues. Ask: *"What issues had priority escalations?"* |
300
+ | **Analyze Epic** | Comprehensive Epic analysis: hierarchy breakdown, time metrics, velocity, linked Confluence pages, recent discussions. Ask: *"Analyze Epic PROJ-100 for progress and risks"* |
301
+
302
+ These tools return **markdown formatted for LLM comprehension** with pre-computed summaries (counts, breakdowns), enabling the AI to focus on **insight and synthesis** rather than data extraction.
302
303
 
303
304
  ### Buffered Responses
304
305
 
@@ -329,7 +330,7 @@ This means the AI assistant **never directly modifies** existing pages - all cha
329
330
 
330
331
  ### PlantUML Diagrams
331
332
 
332
- Create and validate UML diagrams directly in Confluence pages. The PlantUML Docker container starts automatically when the MCP server loads (if Docker is available). If Docker is unavailable or the container stops, PlantUML tools return clear errors - restart the MCP server to retry. Use `"disableDocker": true` in config to skip PlantUML entirely.
333
+ Create and validate UML diagrams directly in Confluence pages. Configure `JICON_PLANTUML_SERVER_URL` to enable diagram validation. If not configured, PlantUML tools return clear errors explaining how to enable them.
333
334
 
334
335
  ## Tool Reference
335
336
 
package/TOOL_LIST.md CHANGED
@@ -5,14 +5,15 @@ This document provides a comprehensive reference of all available tools in the J
5
5
 
6
6
  ## Summary
7
7
 
8
- **Total Tools**: 70
9
- - **Jira Tools**: 18 (13 read + 5 write)
8
+ **Total Tools**: 75
9
+ - **Jira Tools**: 22 (17 read + 5 write)
10
10
  - **Confluence Tools**: 21 (13 read + 8 write)
11
11
  - **Tempo Tools**: 12 (9 read + 3 write)
12
12
  - **Buffer Tools**: 11
13
13
  - **Workload Tools**: 2
14
14
  - **URL Tools**: 2
15
15
  - **Jicon Help Tools**: 1
16
+ - **Date Tools**: 1
16
17
  - **PlantUML Tools**: 3
17
18
 
18
19
  **Note**: All data-heavy tools (search, list, get) **always** return buffered responses with metadata for origin tracking:
@@ -138,7 +139,7 @@ When XHTML validation fails, the response includes element ID and suggested acti
138
139
 
139
140
  ---
140
141
 
141
- ## Jira Tools (18)
142
+ ## Jira Tools (21)
142
143
 
143
144
  ### 1. jira_search_issues
144
145
  **Description**: Search for Jira issues using JQL. Auto-fetches all results (up to 5000).
@@ -389,6 +390,142 @@ When XHTML validation fails, the response includes element ID and suggested acti
389
390
 
390
391
  ---
391
392
 
393
+ ### 19. jira_get_activity_digest
394
+ **Description**: Get recent activity across issues for LLM analysis. Returns DIRECTLY (not buffered).
395
+ **Use Cases**: Project activity summary, team updates, blocker detection, weekly reports
396
+
397
+ Fetches comments, status changes, priority changes, and assignee changes - formatted for LLM synthesis.
398
+
399
+ | Parameter | Type | Required | Description |
400
+ |-----------|------|----------|-------------|
401
+ | projectKey | string | ✗ | Filter by project key |
402
+ | jql | string | ✗ | Full JQL query for flexible scoping |
403
+ | issueKeys | string[] | ✗ | Specific issue keys to include |
404
+ | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
405
+ | includeComments | boolean | ✗ | Include comments (default: true) |
406
+ | includeStatusChanges | boolean | ✗ | Include status changes (default: true) |
407
+ | includePriorityChanges | boolean | ✗ | Include priority changes (default: true) |
408
+ | includeAssigneeChanges | boolean | ✗ | Include assignee changes (default: true) |
409
+ | maxActivities | number | ✗ | Maximum activities to return (default: 50) |
410
+ | commentMaxLength | number | ✗ | Max length for comment text (default: 500) |
411
+
412
+ **At least one scoping parameter required**: `projectKey`, `jql`, or `issueKeys`
413
+
414
+ **Returns**: Markdown-formatted activity digest with pre-computed summary:
415
+ ```markdown
416
+ # Activity Digest: Project ACME (Last 7 days)
417
+
418
+ ## ACME-123: Payment gateway integration
419
+ - **status**: "In Progress" → "In Review" (Jan 28, by @john)
420
+ **Comments (2)**:
421
+ - @john (Jan 28 14:30): "Completed Stripe integration..."
422
+ - @sarah (Jan 29 09:15): "Found edge case with refunds..."
423
+
424
+ ---
425
+ ## Summary
426
+ - **Issues with activity**: 12
427
+ - **Status changes**: 8 (3 to Done/Closed)
428
+ - **Priority changes**: 2
429
+ - **Comments**: 15
430
+ ```
431
+
432
+ ---
433
+
434
+ ### 20. jira_get_recent_comments
435
+ **Description**: Get comments across multiple issues for discussion analysis. Returns DIRECTLY (not buffered).
436
+ **Use Cases**: Discussion summaries, finding comments about specific topics, tracking team communication
437
+
438
+ | Parameter | Type | Required | Description |
439
+ |-----------|------|----------|-------------|
440
+ | projectKey | string | ✗ | Filter by project key |
441
+ | jql | string | ✗ | Full JQL query for flexible scoping |
442
+ | issueKeys | string[] | ✗ | Specific issue keys to include |
443
+ | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
444
+ | authorKey | string | ✗ | Filter by comment author username |
445
+ | maxComments | number | ✗ | Maximum comments to return (default: 30) |
446
+ | includeContext | boolean | ✗ | Include issue summary/status (default: true) |
447
+
448
+ **At least one scoping parameter required**: `projectKey`, `jql`, or `issueKeys`
449
+
450
+ **Returns**: Markdown-formatted comments grouped by issue with summary statistics.
451
+
452
+ ---
453
+
454
+ ### 21. jira_get_changelog
455
+ **Description**: Get field changes across issues for tracking what happened. Returns DIRECTLY (not buffered).
456
+ **Use Cases**: Status change tracking, priority escalation analysis, assignment history
457
+
458
+ | Parameter | Type | Required | Description |
459
+ |-----------|------|----------|-------------|
460
+ | projectKey | string | ✗ | Filter by project key |
461
+ | jql | string | ✗ | Full JQL query for flexible scoping |
462
+ | issueKeys | string[] | ✗ | Specific issue keys to include |
463
+ | since | string | ✗ | Time range: "1d", "7d", "30d", or ISO date (default: "7d") |
464
+ | fields | string[] | ✗ | Fields to track (default: ["status", "priority", "assignee", "resolution"]) |
465
+ | maxChanges | number | ✗ | Maximum changes to return (default: 50) |
466
+
467
+ **At least one scoping parameter required**: `projectKey`, `jql`, or `issueKeys`
468
+
469
+ **Returns**: Markdown-formatted changelog with field breakdown:
470
+ ```markdown
471
+ # Changelog: Project ACME (Last 7 days)
472
+
473
+ ## ACME-123: Payment gateway integration
474
+ - Jan 28 14:00: **status**: "In Progress" → "In Review" (by @john)
475
+ - Jan 25 09:00: **assignee**: "Unassigned" → "@john" (by @lead)
476
+
477
+ ---
478
+ **Total**: 12 changes across 6 issues
479
+ **By field**: status (7), priority (3), assignee (2)
480
+ ```
481
+
482
+ ---
483
+
484
+ ### 22. jira_analyze_epic
485
+ **Description**: Comprehensive Epic/Feature analysis for LLM insights. Returns DIRECTLY (not buffered).
486
+ **Use Cases**: Epic progress analysis, velocity tracking, time metrics, feature status
487
+
488
+ | Parameter | Type | Required | Description |
489
+ |-----------|------|----------|-------------|
490
+ | issueKey | string | ✓ | Epic or parent issue key (e.g., PROJ-123) |
491
+ | includeComments | boolean | ✗ | Include recent comments (default: true) |
492
+ | commentDays | number | ✗ | Days of comments to include (default: 14) |
493
+ | maxComments | number | ✗ | Max comments per issue (default: 5) |
494
+
495
+ **Returns**: Comprehensive markdown analysis including:
496
+ - **Issue Hierarchy**: Breakdown by type (Epic, Story, Task, Sub-task) with completion percentages
497
+ - **Time Metrics**: Time spent, original estimate, remaining, burn rate, overrun warnings
498
+ - **Progress Indicators**: Completion rate, in-flight issues, projected total
499
+ - **Architecture Context**: Components and labels across all issues
500
+ - **Linked Resources**: Confluence pages, related issues
501
+ - **Recent Discussions**: Comments from the last N days
502
+
503
+ **Example output**:
504
+ ```markdown
505
+ # Epic Analysis: PROJ-100
506
+ **Payment Gateway Integration**
507
+
508
+ ## Issue Hierarchy
509
+
510
+ | Type | Total | Done | In Progress | To Do | Completion |
511
+ |------|-------|------|-------------|-------|------------|
512
+ | Story | 5 | 3 | 1 | 1 | 60% |
513
+ | Sub-task | 12 | 8 | 2 | 2 | 67% |
514
+ | **TOTAL** | **17** | **11** | **3** | **3** | **65%** |
515
+
516
+ ## Time Metrics
517
+ - **Time Spent**: 2w 3d
518
+ - **Original Estimate**: 3w
519
+ - **Remaining Estimate**: 1w 2d
520
+ - **Burn Rate**: 77% of estimate consumed
521
+
522
+ ## Analysis Summary
523
+ This Epic contains **17 issues** with **65% completion**.
524
+ Currently **3 issues** are in progress.
525
+ ```
526
+
527
+ ---
528
+
392
529
  ## Confluence Tools (21)
393
530
 
394
531
  ### 1. confluence_search_content
@@ -1678,7 +1815,7 @@ buffer_get_structure({ bufferId: "buf_xxx" })
1678
1815
  | Parameter | Type | Required | Description |
1679
1816
  |-----------|------|----------|-------------|
1680
1817
  | bufferId | string | ✓ | Buffer ID containing XHTML content |
1681
- | validatePlantUml | boolean | ✗ | Validate PlantUML syntax via Docker service (default: true) |
1818
+ | validatePlantUml | boolean | ✗ | Validate PlantUML syntax via PlantUML server (default: true) |
1682
1819
 
1683
1820
  **Type Requirement**: Buffer must have `contentType: "xhtml"`. Returns error if buffer is JSON or plain text.
1684
1821
 
@@ -1687,11 +1824,11 @@ buffer_get_structure({ bufferId: "buf_xxx" })
1687
1824
  - Required attributes on Confluence elements (ac:name, ri:space-key, etc.)
1688
1825
  - Valid layout section types (single, two_equal, etc.)
1689
1826
  - Known macro names (warns for unknown macros)
1690
- - PlantUML syntax (via Docker service, if running)
1827
+ - PlantUML syntax (via PlantUML server, if configured)
1691
1828
 
1692
1829
  **PlantUML validation**:
1693
- - If Docker service is running, validates all PlantUML macros
1694
- - If not running, adds warning (use `plantuml_validate` to start the service)
1830
+ - If PlantUML server is configured, validates all PlantUML macros
1831
+ - If not configured, adds warning (set `JICON_PLANTUML_SERVER_URL` to enable)
1695
1832
 
1696
1833
  **Response includes**: `valid`, `errorCount`, `warningCount`, `errors`, `warnings`
1697
1834
 
@@ -1804,12 +1941,13 @@ Unified help system for all Jicon workflows and syntax guides. Always available
1804
1941
 
1805
1942
  | Parameter | Type | Required | Description |
1806
1943
  |-----------|------|----------|-------------|
1807
- | topic | string | ✗ | Topic for detailed help: jql, cql, storage, plantuml, buffers |
1944
+ | topic | string | ✗ | Topic for detailed help: jql, cql, storage, plantuml, buffers, analysis |
1808
1945
 
1809
1946
  **Default (no topic)**: Compact workflow guide with decision trees showing:
1810
1947
  - Confluence workflows (create page, update page, draft workflow, search)
1811
1948
  - Jira workflows (search issues, create issue, worklogs)
1812
1949
  - Tempo workflows (log work, get worklogs)
1950
+ - LLM-powered analysis tools (activity digest, comments, changelog, epic analysis)
1813
1951
  - Buffer patterns for large responses and editing
1814
1952
  - Utility tools (fullurl, workload_convert)
1815
1953
  - Decision tree for when to call each topic
@@ -1823,6 +1961,7 @@ Unified help system for all Jicon workflows and syntax guides. Always available
1823
1961
  | `storage` | Confluence storage format + structure editing (element IDs) |
1824
1962
  | `plantuml` | PlantUML syntax for Confluence diagrams |
1825
1963
  | `buffers` | Buffer management and element ID editing guide |
1964
+ | `analysis` | LLM-powered analysis tools for AI synthesis |
1826
1965
 
1827
1966
  **Examples**:
1828
1967
  ```typescript
@@ -1831,20 +1970,73 @@ help(topic="jql") // JQL syntax guide
1831
1970
  help(topic="storage") // Basic Confluence formatting
1832
1971
  help(topic="plantuml") // PlantUML diagram syntax
1833
1972
  help(topic="buffers") // Buffer management guide
1973
+ help(topic="analysis") // LLM analysis tools guide
1974
+ ```
1975
+
1976
+ **Tip**: Start with `help()` to understand the overall workflow. For AI analysis tasks (e.g., "What happened on project X?"), check `help(topic="analysis")`.
1977
+
1978
+ ---
1979
+
1980
+ ## Date Tools (1)
1981
+
1982
+ Date resolution utility for pre-computing date ranges. Always available with any Jira, Confluence, or Tempo action.
1983
+
1984
+ ### 1. date_resolve
1985
+ **Description**: Resolve date expressions to concrete dates with business day counts
1986
+ **Use Cases**: Pre-compute date ranges for reports, time tracking, activity analysis
1987
+
1988
+ | Parameter | Type | Required | Description |
1989
+ |-----------|------|----------|-------------|
1990
+ | expression | string | ✓ | Date expression (see below) |
1991
+ | businessDays | boolean | ✗ | Use business days (Mon-Fri) for weeks (default: true) |
1992
+
1993
+ **Supported Expressions**:
1994
+
1995
+ | Expression | Description |
1996
+ |------------|-------------|
1997
+ | `today` | Current day |
1998
+ | `yesterday` | Previous day |
1999
+ | `this_week` | Current week (Mon to today, business days by default) |
2000
+ | `last_week` | Previous full week |
2001
+ | `this_month` | Current month (1st to today) |
2002
+ | `last_month` | Previous full month |
2003
+ | `this_quarter` | Current quarter (Q start to today) |
2004
+ | `last_quarter` | Previous full quarter |
2005
+ | `last_7d`, `last_14d`, `last_30d`, `last_90d` | Last N days |
2006
+ | `ytd` | Year to date |
2007
+ | `Nd` (e.g., `5d`, `10d`) | Last N days |
2008
+
2009
+ **Returns**:
2010
+ ```json
2011
+ {
2012
+ "dateFrom": "2026-01-27",
2013
+ "dateTo": "2026-01-31",
2014
+ "businessDays": 5,
2015
+ "calendarDays": 5,
2016
+ "description": "This week (Mon Jan 27 - Fri Jan 31, 2026)",
2017
+ "expression": "this_week"
2018
+ }
2019
+ ```
2020
+
2021
+ **Examples**:
2022
+ ```typescript
2023
+ date_resolve(expression="last_week") // Get last week's date range
2024
+ date_resolve(expression="7d") // Last 7 days
2025
+ date_resolve(expression="this_month") // Current month to date
1834
2026
  ```
1835
2027
 
1836
- **Tip**: Start with `help()` to understand the overall workflow, then use specific topics for syntax details.
2028
+ **Tip**: Use the returned `dateFrom` and `dateTo` directly in Jira/Tempo queries.
1837
2029
 
1838
2030
  ---
1839
2031
 
1840
2032
  ## PlantUML Tools (3)
1841
2033
 
1842
- Docker-based PlantUML validation and rendering. Requires Docker to be installed and running.
2034
+ PlantUML validation and rendering via external server. Configure with `JICON_PLANTUML_SERVER_URL` environment variable.
1843
2035
 
1844
- **Docker Lifecycle**:
1845
- - Container starts **at MCP server startup** (not lazily on first use)
1846
- - Does **NOT auto-restart** if container stops - restart MCP server to retry
1847
- - Use `"disableDocker": true` in `.jicon.json` to skip PlantUML entirely
2036
+ **Server Configuration**:
2037
+ - Set `JICON_PLANTUML_SERVER_URL` to your PlantUML server URL (e.g., `http://localhost:8080`)
2038
+ - If not set, PlantUML tools are disabled and return clear error messages
2039
+ - Public server: `http://www.plantuml.com/plantuml` (rate limited)
1848
2040
 
1849
2041
  **Stdlib Includes (C4, AWS, Azure):**
1850
2042
  ```
@@ -1896,20 +2088,19 @@ plantuml_render({
1896
2088
  ---
1897
2089
 
1898
2090
  ### 3. plantuml_status
1899
- **Description**: Check PlantUML service status
1900
- **Use Cases**: Verify Docker service is running, troubleshoot connection issues
2091
+ **Description**: Check PlantUML server status
2092
+ **Use Cases**: Verify PlantUML server is available, troubleshoot connection issues
1901
2093
 
1902
2094
  | Parameter | Type | Required | Description |
1903
2095
  |-----------|------|----------|-------------|
1904
2096
  | (none) | | | |
1905
2097
 
1906
- **Response includes**: `available`, `disabled`, `startupFailed`, `containerDied`, `error`, `containerId`, `port`, `baseUrl`, `message`
2098
+ **Response includes**: `available`, `disabled`, `serverDied`, `error`, `serverUrl`, `message`
1907
2099
 
1908
2100
  **Status States**:
1909
- - `available: true` - Container running and healthy
1910
- - `disabled: true` - Disabled via `disableDocker: true` config
1911
- - `startupFailed: true` - Docker failed at MCP startup (check logs)
1912
- - `containerDied: true` - Container stopped after startup (restart MCP)
2101
+ - `available: true` - Server is reachable and healthy
2102
+ - `disabled: true` - Not configured (`JICON_PLANTUML_SERVER_URL` not set)
2103
+ - `serverDied: true` - Server became unreachable after initial connection
1913
2104
 
1914
2105
  ---
1915
2106
 
@@ -2162,7 +2353,7 @@ buffer_validate_xhtml({
2162
2353
  - Required attributes on Confluence elements (ac:name, ri:space-key, etc.)
2163
2354
  - Valid layout section types
2164
2355
  - Known macro names (warnings for unknown macros)
2165
- - PlantUML syntax (requires Docker - returns error if unavailable)
2356
+ - PlantUML syntax (requires PlantUML server - returns error if unavailable)
2166
2357
 
2167
2358
  **Automatic Validation:**
2168
2359
  XHTML content is automatically validated before Confluence writes (`confluence_draft_create`, `confluence_draft_save`).