@crypto512/jicon-mcp 1.3.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROMPT.md +16 -197
- package/README.md +90 -92
- package/TOOL_LIST.md +912 -104
- package/dist/config/constants.d.ts +18 -7
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +21 -8
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts +11 -11
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +53 -93
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +3 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -4
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/formatters.js +1 -1
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +4 -0
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +180 -125
- package/dist/confluence/tools.js.map +1 -1
- package/dist/index.js +22 -26
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +160 -0
- package/dist/jira/activity-tools.d.ts.map +1 -0
- package/dist/jira/activity-tools.js +971 -0
- package/dist/jira/activity-tools.js.map +1 -0
- package/dist/jira/client.d.ts +39 -1
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +70 -0
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +1 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +13 -12
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +4 -0
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +189 -50
- package/dist/jira/tools.js.map +1 -1
- package/dist/jira/types.d.ts +44 -0
- package/dist/jira/types.d.ts.map +1 -1
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +8 -4
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +9 -7
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +18 -6
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/permissions/write-home-validator.d.ts.map +1 -1
- package/dist/permissions/write-home-validator.js +13 -3
- package/dist/permissions/write-home-validator.js.map +1 -1
- package/dist/tempo/client.d.ts +6 -0
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +15 -1
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/defaults.d.ts +17 -0
- package/dist/tempo/defaults.d.ts.map +1 -0
- package/dist/tempo/defaults.js +26 -0
- package/dist/tempo/defaults.js.map +1 -0
- package/dist/tempo/tools.d.ts +11 -2
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +119 -36
- package/dist/tempo/tools.js.map +1 -1
- package/dist/utils/buffer-pipeline/index.d.ts +30 -0
- package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/index.js +317 -0
- package/dist/utils/buffer-pipeline/index.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.js +117 -0
- package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.js +48 -0
- package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
- package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
- package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
- package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/schema.js +168 -0
- package/dist/utils/buffer-pipeline/schema.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
- package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.js +160 -0
- package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.js +228 -0
- package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
- package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
- package/dist/utils/buffer-pipeline/types.d.ts +277 -0
- package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/types.js +8 -0
- package/dist/utils/buffer-pipeline/types.js.map +1 -0
- package/dist/utils/buffer-tools.d.ts +749 -19
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +739 -492
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +55 -4
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +107 -9
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/date-tools.d.ts +78 -0
- package/dist/utils/date-tools.d.ts.map +1 -0
- package/dist/utils/date-tools.js +312 -0
- package/dist/utils/date-tools.js.map +1 -0
- package/dist/utils/jicon-help.d.ts +5 -5
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +418 -32
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/json-structure.d.ts +121 -0
- package/dist/utils/json-structure.d.ts.map +1 -0
- package/dist/utils/json-structure.js +637 -0
- package/dist/utils/json-structure.js.map +1 -0
- package/dist/utils/plantuml/include-expander.d.ts +31 -30
- package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
- package/dist/utils/plantuml/include-expander.js +167 -133
- package/dist/utils/plantuml/include-expander.js.map +1 -1
- package/dist/utils/plantuml/index.d.ts +3 -3
- package/dist/utils/plantuml/index.d.ts.map +1 -1
- package/dist/utils/plantuml/index.js +4 -4
- package/dist/utils/plantuml/index.js.map +1 -1
- package/dist/utils/plantuml/service.d.ts +13 -24
- package/dist/utils/plantuml/service.d.ts.map +1 -1
- package/dist/utils/plantuml/service.js +49 -99
- package/dist/utils/plantuml/service.js.map +1 -1
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +33 -72
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/plantuml/types.d.ts +1 -35
- package/dist/utils/plantuml/types.d.ts.map +1 -1
- package/dist/utils/plantuml/types.js +1 -11
- package/dist/utils/plantuml/types.js.map +1 -1
- package/dist/utils/plantuml/validation-helper.d.ts +3 -3
- package/dist/utils/plantuml/validation-helper.js +14 -14
- package/dist/utils/plantuml/validation-helper.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +61 -6
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +174 -91
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/url-tools.d.ts.map +1 -1
- package/dist/utils/url-tools.js +22 -0
- package/dist/utils/url-tools.js.map +1 -1
- package/dist/utils/xhtml/error-locator.js +2 -2
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- package/dist/utils/xhtml/index.d.ts +1 -1
- package/dist/utils/xhtml/index.d.ts.map +1 -1
- package/dist/utils/xhtml/index.js +1 -1
- package/dist/utils/xhtml/index.js.map +1 -1
- package/dist/utils/xhtml/parser.d.ts +34 -5
- package/dist/utils/xhtml/parser.d.ts.map +1 -1
- package/dist/utils/xhtml/parser.js +66 -11
- package/dist/utils/xhtml/parser.js.map +1 -1
- package/dist/utils/xhtml/plantuml.d.ts +4 -4
- package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
- package/dist/utils/xhtml/plantuml.js +10 -8
- package/dist/utils/xhtml/plantuml.js.map +1 -1
- package/dist/utils/xhtml/serializer.d.ts.map +1 -1
- package/dist/utils/xhtml/serializer.js +12 -15
- package/dist/utils/xhtml/serializer.js.map +1 -1
- package/dist/utils/xhtml/validator.d.ts +2 -2
- package/dist/utils/xhtml/validator.js +4 -4
- package/dist/utils/xhtml/validator.js.map +1 -1
- package/package.json +12 -4
- package/crypto512-jicon-mcp-1.3.0.tgz +0 -0
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.
|
|
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
|
-
|
|
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() ←
|
|
10
|
+
help() ← Returns workflow decision tree and quick reference
|
|
14
11
|
```
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
Then use topic-specific help for your task:
|
|
17
14
|
|
|
18
|
-
| Task |
|
|
19
|
-
|
|
20
|
-
| Search Jira
|
|
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
|
-
|
|
|
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
|
-
|
|
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
|
|
180
|
-
| `cql` | Confluence Query Language syntax
|
|
181
|
-
| `storage` | Confluence XHTML format
|
|
182
|
-
| `plantuml` | PlantUML validation workflow
|
|
183
|
-
| `buffers` | Element ID system, buffer operations
|
|
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
|
-
|
|
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
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Jicon - Jira & Confluence MCP Server
|
|
2
2
|
|
|
3
|
+
<!--
|
|
4
|
+
README.md Guidelines:
|
|
5
|
+
- Keep this file USER-FOCUSED: describe features and benefits, not implementation details
|
|
6
|
+
- NO tool names, function signatures, or technical API details here
|
|
7
|
+
- Tool documentation belongs in TOOL_LIST.md
|
|
8
|
+
- Development documentation belongs in CLAUDE.md
|
|
9
|
+
-->
|
|
10
|
+
|
|
3
11
|
[](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp)
|
|
4
12
|
[](https://opensource.org/licenses/MIT)
|
|
5
13
|
|
|
@@ -23,9 +31,11 @@ Once configured, just ask in natural language:
|
|
|
23
31
|
|
|
24
32
|
### Jira
|
|
25
33
|
- *"Find all high-priority bugs assigned to me"*
|
|
34
|
+
- *"What happened on project ACME this week?"* (Activity digest)
|
|
26
35
|
- *"Create a task for implementing user authentication"*
|
|
27
36
|
- *"Move PROJ-123 to Done and add a comment that it's deployed"*
|
|
28
37
|
- *"Show me the current sprint's progress"*
|
|
38
|
+
- *"Summarize recent discussions about authentication"* (Comment analysis)
|
|
29
39
|
- *"Link PROJ-456 as blocking PROJ-789"*
|
|
30
40
|
|
|
31
41
|
### Confluence
|
|
@@ -110,65 +120,61 @@ Add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jso
|
|
|
110
120
|
|
|
111
121
|
## Configuration
|
|
112
122
|
|
|
123
|
+
All configuration is done through environment variables.
|
|
124
|
+
|
|
113
125
|
### Environment Variables
|
|
114
126
|
|
|
115
|
-
| Variable | Description |
|
|
116
|
-
|
|
117
|
-
| `JIRA_URL` |
|
|
118
|
-
| `JIRA_USERNAME` |
|
|
119
|
-
| `JIRA_API_TOKEN` | API token or Personal Access Token |
|
|
120
|
-
| `JIRA_AUTH_TYPE` |
|
|
121
|
-
| `CONFLUENCE_URL` |
|
|
122
|
-
| `CONFLUENCE_USERNAME` |
|
|
123
|
-
| `CONFLUENCE_API_TOKEN` | API token or Personal Access Token |
|
|
124
|
-
| `CONFLUENCE_AUTH_TYPE` |
|
|
127
|
+
| Variable | Type | Default | Description |
|
|
128
|
+
|----------|------|---------|-------------|
|
|
129
|
+
| `JIRA_URL` | string | - | Jira instance URL |
|
|
130
|
+
| `JIRA_USERNAME` | string | - | Email (omit for Data Center PAT) |
|
|
131
|
+
| `JIRA_API_TOKEN` | string | - | API token or Personal Access Token |
|
|
132
|
+
| `JIRA_AUTH_TYPE` | `basic`\|`bearer` | auto | Auth type (auto-detected from username) |
|
|
133
|
+
| `CONFLUENCE_URL` | string | - | Confluence instance URL |
|
|
134
|
+
| `CONFLUENCE_USERNAME` | string | - | Email (omit for Data Center PAT) |
|
|
135
|
+
| `CONFLUENCE_API_TOKEN` | string | - | API token or Personal Access Token |
|
|
136
|
+
| `CONFLUENCE_AUTH_TYPE` | `basic`\|`bearer` | auto | Auth type (auto-detected from username) |
|
|
137
|
+
| `JICON_PERMISSIONS_MODE` | `readonly`\|`full`\|`custom` | `readonly` | Permission mode |
|
|
138
|
+
| `JICON_PERMISSIONS_WHITELIST` | comma-separated | - | Tools to allow (custom mode) |
|
|
139
|
+
| `JICON_PERMISSIONS_BLACKLIST` | comma-separated | - | Tools to deny (custom mode) |
|
|
140
|
+
| `JICON_CONFLUENCE_WRITE_HOME` | `true`\|`false` | `false` | Restrict Confluence writes to personal space |
|
|
141
|
+
| `JICON_PLANTUML_SERVER_URL` | string | - | PlantUML server URL (e.g., `http://localhost:8080`) |
|
|
142
|
+
| `JICON_MAX_OUTPUT` | number | `16000` | Maximum output characters |
|
|
125
143
|
|
|
126
144
|
**Note:** Tempo uses the same Jira credentials - no separate configuration needed.
|
|
127
145
|
|
|
128
|
-
###
|
|
146
|
+
### Permission Modes
|
|
129
147
|
|
|
130
|
-
|
|
148
|
+
Control what operations are allowed. **By default, Jicon runs in read-only mode** - all read tools across Jira, Confluence, and Tempo are available, but no write operations.
|
|
131
149
|
|
|
150
|
+
**Read-Only** (default):
|
|
132
151
|
```json
|
|
133
152
|
{
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"token": "your-api-token"
|
|
138
|
-
},
|
|
139
|
-
"confluence": {
|
|
140
|
-
"url": "https://confluence.example.com",
|
|
141
|
-
"username": "your-email@example.com",
|
|
142
|
-
"token": "your-api-token"
|
|
153
|
+
"env": {
|
|
154
|
+
"JIRA_URL": "https://jira.example.com",
|
|
155
|
+
"JIRA_API_TOKEN": "your-token"
|
|
143
156
|
}
|
|
144
157
|
}
|
|
145
158
|
```
|
|
146
159
|
|
|
147
|
-
**
|
|
148
|
-
|
|
149
|
-
**Important:** Add `.jicon.json` to your `.gitignore`!
|
|
150
|
-
|
|
151
|
-
### Permission Modes
|
|
152
|
-
|
|
153
|
-
Control what operations are allowed. **By default, Jicon runs in read-only mode** - all read tools across Jira, Confluence, and Tempo are available, but no write operations. Safe for exploration without risk of accidental modifications.
|
|
154
|
-
|
|
155
|
-
**Read-Only** (default) - all read tools enabled:
|
|
160
|
+
**Full Access**:
|
|
156
161
|
```json
|
|
157
|
-
{
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
{
|
|
163
|
+
"env": {
|
|
164
|
+
"JIRA_URL": "https://jira.example.com",
|
|
165
|
+
"JIRA_API_TOKEN": "your-token",
|
|
166
|
+
"JICON_PERMISSIONS_MODE": "full"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
163
169
|
```
|
|
164
170
|
|
|
165
|
-
**Custom** - fine-grained control
|
|
171
|
+
**Custom** - fine-grained control:
|
|
166
172
|
```json
|
|
167
173
|
{
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
174
|
+
"env": {
|
|
175
|
+
"JICON_PERMISSIONS_MODE": "custom",
|
|
176
|
+
"JICON_PERMISSIONS_WHITELIST": "jira_all,confluence_all,tempo_all",
|
|
177
|
+
"JICON_PERMISSIONS_BLACKLIST": "confluence_delete_page,tempo_delete_worklog"
|
|
172
178
|
}
|
|
173
179
|
}
|
|
174
180
|
```
|
|
@@ -176,10 +182,10 @@ Control what operations are allowed. **By default, Jicon runs in read-only mode*
|
|
|
176
182
|
**Safe Write** - recommended for controlled write access:
|
|
177
183
|
```json
|
|
178
184
|
{
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
185
|
+
"env": {
|
|
186
|
+
"JICON_PERMISSIONS_MODE": "custom",
|
|
187
|
+
"JICON_PERMISSIONS_WHITELIST": "jira_read,confluence_write,tempo_read",
|
|
188
|
+
"JICON_CONFLUENCE_WRITE_HOME": "true"
|
|
183
189
|
}
|
|
184
190
|
}
|
|
185
191
|
```
|
|
@@ -189,34 +195,34 @@ This configuration allows:
|
|
|
189
195
|
- **Confluence**: Write restricted to your personal space only
|
|
190
196
|
- **Tempo**: Read-only (view worklogs, no time logging)
|
|
191
197
|
|
|
192
|
-
The `confluenceWriteHome: true` setting ensures all Confluence write operations (drafts, comments, attachments) can only target your personal space, preventing accidental modifications to shared team spaces.
|
|
193
|
-
|
|
194
198
|
**Draft Only** - create new documents without reading existing content:
|
|
195
199
|
```json
|
|
196
200
|
{
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"
|
|
201
|
+
"env": {
|
|
202
|
+
"JICON_PERMISSIONS_MODE": "custom",
|
|
203
|
+
"JICON_PERMISSIONS_WHITELIST": "confluence_draft"
|
|
200
204
|
}
|
|
201
205
|
}
|
|
202
206
|
```
|
|
203
207
|
|
|
204
|
-
Includes: `confluence_draft_create`, `confluence_draft_save`, `confluence_draft_delete`, plus space discovery (`confluence_get_current_user_space`, `confluence_list_spaces`) to know where to create drafts. No page content is exposed.
|
|
205
|
-
|
|
206
208
|
**Virtual actions** (for whitelist): `jira_read`, `jira_write`, `jira_all`, `confluence_read`, `confluence_write`, `confluence_draft`, `confluence_all`, `tempo_read`, `tempo_write`, `tempo_all`
|
|
207
209
|
|
|
208
|
-
**Individual tools** (for blacklist): See [TOOL_LIST.md](TOOL_LIST.md) for all tool names
|
|
210
|
+
**Individual tools** (for blacklist): See [TOOL_LIST.md](TOOL_LIST.md) for all tool names
|
|
209
211
|
|
|
210
|
-
###
|
|
212
|
+
### PlantUML Configuration
|
|
211
213
|
|
|
212
|
-
PlantUML validation requires
|
|
214
|
+
PlantUML validation requires an external PlantUML server. If not configured, PlantUML tools are disabled.
|
|
213
215
|
|
|
214
|
-
**
|
|
216
|
+
**Configure PlantUML server**:
|
|
215
217
|
```json
|
|
216
|
-
{
|
|
218
|
+
{
|
|
219
|
+
"env": {
|
|
220
|
+
"JICON_PLANTUML_SERVER_URL": "http://localhost:8080"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
217
223
|
```
|
|
218
224
|
|
|
219
|
-
|
|
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`.
|
|
220
226
|
|
|
221
227
|
### PlantUML Include Expansion
|
|
222
228
|
|
|
@@ -253,7 +259,7 @@ C4-PlantUML, AWS icons, and Azure diagrams require `!include` directives. By def
|
|
|
253
259
|
- **Jira** Server/Data Center or Cloud with API access
|
|
254
260
|
- **Confluence** (optional) Server/Data Center or Cloud
|
|
255
261
|
- **Tempo** (optional) Timesheets plugin
|
|
256
|
-
- **
|
|
262
|
+
- **PlantUML Server** (optional) External server for diagram validation
|
|
257
263
|
|
|
258
264
|
## API Limitations
|
|
259
265
|
|
|
@@ -274,7 +280,7 @@ The Confluence Data Center REST API has specific limitations for draft managemen
|
|
|
274
280
|
Since the API cannot create a "draft version" of an existing page, Jicon uses a workaround:
|
|
275
281
|
1. Creates a `[jicon-mcp REVIEW] Title` draft linked to the original via label
|
|
276
282
|
2. User reviews the draft content
|
|
277
|
-
3.
|
|
283
|
+
3. User approves to publish changes to the original page
|
|
278
284
|
|
|
279
285
|
This achieves "draft before publish" semantics within API constraints.
|
|
280
286
|
|
|
@@ -286,38 +292,38 @@ This achieves "draft before publish" semantics within API constraints.
|
|
|
286
292
|
|
|
287
293
|
## Features
|
|
288
294
|
|
|
289
|
-
###
|
|
295
|
+
### 75 Tools Across 3 Services
|
|
290
296
|
|
|
291
297
|
| Service | Capabilities |
|
|
292
298
|
|---------|--------------|
|
|
293
|
-
| **Jira** (
|
|
299
|
+
| **Jira** (22 tools) | Search, create, update, transition issues; manage comments, links, watchers; access boards, sprints, worklogs; **LLM-powered analysis** |
|
|
294
300
|
| **Confluence** (21 tools) | Search, create, edit pages via drafts; manage spaces, comments, attachments; PlantUML diagrams; review workflow |
|
|
295
301
|
| **Tempo** (12 tools) | Log time, view/update worklogs, team tracking, accounts |
|
|
296
302
|
|
|
297
|
-
Plus utility tools for content buffering, time calculations, URL generation, and built-in help.
|
|
303
|
+
Plus utility tools for content buffering, time calculations, URL generation, date resolution, and built-in help.
|
|
298
304
|
|
|
299
|
-
###
|
|
305
|
+
### LLM-Powered Analysis Tools
|
|
300
306
|
|
|
301
|
-
|
|
307
|
+
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:
|
|
302
308
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
},
|
|
310
|
-
"totalSize": 125000,
|
|
311
|
-
"hint": "Use buffer_get_chunk(bufferId) to read, buffer_grep(bufferId, pattern) to search"
|
|
312
|
-
}
|
|
313
|
-
```
|
|
309
|
+
| Tool | Purpose |
|
|
310
|
+
|------|---------|
|
|
311
|
+
| **Activity Digest** | Fetches comments, status/priority/assignee changes across issues. Ask: *"What happened on project X this week?"* |
|
|
312
|
+
| **Recent Comments** | Aggregates comments across multiple issues. Ask: *"Any blockers mentioned in recent discussions?"* |
|
|
313
|
+
| **Changelog** | Tracks field changes across issues. Ask: *"What issues had priority escalations?"* |
|
|
314
|
+
| **Analyze Epic** | Comprehensive Epic analysis: hierarchy breakdown, time metrics, velocity, linked Confluence pages, recent discussions. Ask: *"Analyze Epic PROJ-100 for progress and risks"* |
|
|
314
315
|
|
|
315
|
-
**
|
|
316
|
-
- `buffer_get_chunk(bufferId, offset, limit)` - Read data in chunks
|
|
317
|
-
- `buffer_grep(bufferId, pattern)` - Search within buffered data
|
|
318
|
-
- `buffer_list()` - List all active buffers with metadata
|
|
316
|
+
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.
|
|
319
317
|
|
|
320
|
-
|
|
318
|
+
### Buffered Responses
|
|
319
|
+
|
|
320
|
+
All data-heavy tools (search, list, get) return **buffered responses** for efficient handling of large datasets. Instead of returning raw data, tools return a `bufferId` with metadata:
|
|
321
|
+
|
|
322
|
+
**Buffer capabilities:**
|
|
323
|
+
- Read content in chunks or search within buffered data
|
|
324
|
+
- Server-side data transformation: filtering, grouping, sorting, aggregations
|
|
325
|
+
- Export to multiple formats: XHTML tables, lists, CSV, JSON, Markdown
|
|
326
|
+
- Track buffer origin with metadata (resource type, query, title)
|
|
321
327
|
|
|
322
328
|
### Safe Confluence Editing (Review Workflow)
|
|
323
329
|
|
|
@@ -332,21 +338,13 @@ Confluence write operations use a **review workflow** for safety:
|
|
|
332
338
|
1. **Ask the AI**: *"Add a PlantUML diagram to page https://confluence.example.com/..."*
|
|
333
339
|
2. **Review Draft Created**: Jicon creates a `[jicon-mcp REVIEW] Page Title` draft linked to the original
|
|
334
340
|
3. **You Review**: Check the draft content in Confluence UI
|
|
335
|
-
4. **Publish or Discard**:
|
|
336
|
-
- AI can run `confluence_review_publish` to apply changes to original page
|
|
337
|
-
- Or `confluence_review_discard` to cancel without changes
|
|
338
|
-
- Or you can manually copy content if preferred
|
|
341
|
+
4. **Publish or Discard**: Apply changes to the original page, discard them, or manually copy content
|
|
339
342
|
|
|
340
343
|
This means the AI assistant **never directly modifies** existing pages - all changes are staged as review drafts that require your approval. Combined with `confluenceWriteHome: true`, this ensures complete control over what gets published.
|
|
341
344
|
|
|
342
|
-
**Review Workflow Tools:**
|
|
343
|
-
- `confluence_review_list()` - Find all `[jicon-mcp REVIEW]` drafts
|
|
344
|
-
- `confluence_review_publish(reviewDraftId)` - Apply changes to original page
|
|
345
|
-
- `confluence_review_discard(reviewDraftId)` - Discard without changes
|
|
346
|
-
|
|
347
345
|
### PlantUML Diagrams
|
|
348
346
|
|
|
349
|
-
Create and validate UML diagrams directly in Confluence pages.
|
|
347
|
+
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.
|
|
350
348
|
|
|
351
349
|
## Tool Reference
|
|
352
350
|
|
|
@@ -358,7 +356,7 @@ For complete tool documentation with parameters and examples, see **[TOOL_LIST.m
|
|
|
358
356
|
- Use API tokens with minimal required permissions
|
|
359
357
|
- Rotate tokens regularly
|
|
360
358
|
- Use read-only mode for exploration
|
|
361
|
-
- Never commit
|
|
359
|
+
- Never commit credentials to version control
|
|
362
360
|
|
|
363
361
|
## License
|
|
364
362
|
|