@crypto512/jicon-mcp 0.7.1 → 1.0.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 (129) hide show
  1. package/README.md +128 -395
  2. package/TOOL_LIST.md +810 -120
  3. package/dist/config/constants.d.ts +1 -0
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +1 -0
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/loader.d.ts +1 -0
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +27 -1
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +8 -0
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +2 -0
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/client.d.ts +38 -0
  16. package/dist/confluence/client.d.ts.map +1 -1
  17. package/dist/confluence/client.js +117 -0
  18. package/dist/confluence/client.js.map +1 -1
  19. package/dist/confluence/tools.d.ts +102 -75
  20. package/dist/confluence/tools.d.ts.map +1 -1
  21. package/dist/confluence/tools.js +510 -151
  22. package/dist/confluence/tools.js.map +1 -1
  23. package/dist/confluence/types.d.ts +55 -1
  24. package/dist/confluence/types.d.ts.map +1 -1
  25. package/dist/index.js +88 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/jira/tools.d.ts +0 -5
  28. package/dist/jira/tools.d.ts.map +1 -1
  29. package/dist/jira/tools.js +40 -87
  30. package/dist/jira/tools.js.map +1 -1
  31. package/dist/permissions/filter.d.ts +5 -0
  32. package/dist/permissions/filter.d.ts.map +1 -1
  33. package/dist/permissions/filter.js +29 -12
  34. package/dist/permissions/filter.js.map +1 -1
  35. package/dist/permissions/tool-registry.d.ts +23 -25
  36. package/dist/permissions/tool-registry.d.ts.map +1 -1
  37. package/dist/permissions/tool-registry.js +41 -45
  38. package/dist/permissions/tool-registry.js.map +1 -1
  39. package/dist/permissions/write-home-validator.d.ts +35 -0
  40. package/dist/permissions/write-home-validator.d.ts.map +1 -0
  41. package/dist/permissions/write-home-validator.js +140 -0
  42. package/dist/permissions/write-home-validator.js.map +1 -0
  43. package/dist/tempo/tools.d.ts.map +1 -1
  44. package/dist/tempo/tools.js +43 -44
  45. package/dist/tempo/tools.js.map +1 -1
  46. package/dist/utils/buffer-tools.d.ts +119 -1
  47. package/dist/utils/buffer-tools.d.ts.map +1 -1
  48. package/dist/utils/buffer-tools.js +610 -3
  49. package/dist/utils/buffer-tools.js.map +1 -1
  50. package/dist/utils/content-buffer.d.ts +34 -0
  51. package/dist/utils/content-buffer.d.ts.map +1 -1
  52. package/dist/utils/content-buffer.js +79 -0
  53. package/dist/utils/content-buffer.js.map +1 -1
  54. package/dist/utils/http-client.d.ts.map +1 -1
  55. package/dist/utils/http-client.js +4 -4
  56. package/dist/utils/http-client.js.map +1 -1
  57. package/dist/utils/jicon-help.d.ts +29 -0
  58. package/dist/utils/jicon-help.d.ts.map +1 -0
  59. package/dist/utils/jicon-help.js +873 -0
  60. package/dist/utils/jicon-help.js.map +1 -0
  61. package/dist/utils/plantuml/client.d.ts +40 -0
  62. package/dist/utils/plantuml/client.d.ts.map +1 -0
  63. package/dist/utils/plantuml/client.js +306 -0
  64. package/dist/utils/plantuml/client.js.map +1 -0
  65. package/dist/utils/plantuml/docker-manager.d.ts +35 -0
  66. package/dist/utils/plantuml/docker-manager.d.ts.map +1 -0
  67. package/dist/utils/plantuml/docker-manager.js +280 -0
  68. package/dist/utils/plantuml/docker-manager.js.map +1 -0
  69. package/dist/utils/plantuml/index.d.ts +11 -0
  70. package/dist/utils/plantuml/index.d.ts.map +1 -0
  71. package/dist/utils/plantuml/index.js +16 -0
  72. package/dist/utils/plantuml/index.js.map +1 -0
  73. package/dist/utils/plantuml/service.d.ts +46 -0
  74. package/dist/utils/plantuml/service.d.ts.map +1 -0
  75. package/dist/utils/plantuml/service.js +96 -0
  76. package/dist/utils/plantuml/service.js.map +1 -0
  77. package/dist/utils/plantuml/tools.d.ts +65 -0
  78. package/dist/utils/plantuml/tools.d.ts.map +1 -0
  79. package/dist/utils/plantuml/tools.js +272 -0
  80. package/dist/utils/plantuml/tools.js.map +1 -0
  81. package/dist/utils/plantuml/types.d.ts +130 -0
  82. package/dist/utils/plantuml/types.d.ts.map +1 -0
  83. package/dist/utils/plantuml/types.js +66 -0
  84. package/dist/utils/plantuml/types.js.map +1 -0
  85. package/dist/utils/response-formatter.d.ts +14 -0
  86. package/dist/utils/response-formatter.d.ts.map +1 -1
  87. package/dist/utils/response-formatter.js +84 -1
  88. package/dist/utils/response-formatter.js.map +1 -1
  89. package/dist/utils/url-tools.d.ts +49 -0
  90. package/dist/utils/url-tools.d.ts.map +1 -0
  91. package/dist/utils/url-tools.js +141 -0
  92. package/dist/utils/url-tools.js.map +1 -0
  93. package/dist/utils/xhtml/confluence-schema.d.ts +55 -0
  94. package/dist/utils/xhtml/confluence-schema.d.ts.map +1 -0
  95. package/dist/utils/xhtml/confluence-schema.js +215 -0
  96. package/dist/utils/xhtml/confluence-schema.js.map +1 -0
  97. package/dist/utils/xhtml/index.d.ts +17 -0
  98. package/dist/utils/xhtml/index.d.ts.map +1 -0
  99. package/dist/utils/xhtml/index.js +21 -0
  100. package/dist/utils/xhtml/index.js.map +1 -0
  101. package/dist/utils/xhtml/operations.d.ts +100 -0
  102. package/dist/utils/xhtml/operations.d.ts.map +1 -0
  103. package/dist/utils/xhtml/operations.js +596 -0
  104. package/dist/utils/xhtml/operations.js.map +1 -0
  105. package/dist/utils/xhtml/parser.d.ts +64 -0
  106. package/dist/utils/xhtml/parser.d.ts.map +1 -0
  107. package/dist/utils/xhtml/parser.js +180 -0
  108. package/dist/utils/xhtml/parser.js.map +1 -0
  109. package/dist/utils/xhtml/plantuml.d.ts +112 -0
  110. package/dist/utils/xhtml/plantuml.d.ts.map +1 -0
  111. package/dist/utils/xhtml/plantuml.js +251 -0
  112. package/dist/utils/xhtml/plantuml.js.map +1 -0
  113. package/dist/utils/xhtml/selector.d.ts +35 -0
  114. package/dist/utils/xhtml/selector.d.ts.map +1 -0
  115. package/dist/utils/xhtml/selector.js +358 -0
  116. package/dist/utils/xhtml/selector.js.map +1 -0
  117. package/dist/utils/xhtml/serializer.d.ts +26 -0
  118. package/dist/utils/xhtml/serializer.d.ts.map +1 -0
  119. package/dist/utils/xhtml/serializer.js +170 -0
  120. package/dist/utils/xhtml/serializer.js.map +1 -0
  121. package/dist/utils/xhtml/types.d.ts +134 -0
  122. package/dist/utils/xhtml/types.d.ts.map +1 -0
  123. package/dist/utils/xhtml/types.js +65 -0
  124. package/dist/utils/xhtml/types.js.map +1 -0
  125. package/dist/utils/xhtml/validator.d.ts +67 -0
  126. package/dist/utils/xhtml/validator.d.ts.map +1 -0
  127. package/dist/utils/xhtml/validator.js +300 -0
  128. package/dist/utils/xhtml/validator.js.map +1 -0
  129. package/package.json +5 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp.svg)](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- > A comprehensive Model Context Protocol (MCP) server for seamless integration with Atlassian Jira and Confluence.
6
+ > Connect your AI assistant to Jira, Confluence, and Tempo. Search issues, create pages, log time - all through natural conversation.
7
7
 
8
8
  ## Quick Start
9
9
 
@@ -15,188 +15,115 @@ npx @crypto512/jicon-mcp
15
15
  npm install -g @crypto512/jicon-mcp
16
16
  ```
17
17
 
18
- ## What is Jicon?
18
+ ## What Can You Do?
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 52 powerful tools for:
20
+ Once configured, just ask in natural language:
21
21
 
22
- - 🎫 **Jira**: Issue management, searching, project operations, Agile boards, sprints
23
- - 📄 **Confluence**: Page management, content search, spaces, attachments, comments
24
- - ⏱️ **Tempo**: Time tracking, worklog management, accounts, and teams
25
- - 📦 **Buffer**: Content pagination for handling large responses
26
-
27
- ## Features at a Glance
28
-
29
- ### Jira (19 Tools)
30
- - Search issues with JQL
31
- - Create, update, and transition issues
32
- - Manage comments, links, and watchers
33
- - Access boards and sprints
34
- - View projects, issue types, and metadata
35
- - Track worklogs (individual and recursive totals)
36
-
37
- ### Confluence (14 Tools)
38
- - Search content with CQL
39
- - Create, update, and delete pages
40
- - Navigate page hierarchies
41
- - Manage attachments
42
- - Add and view comments
43
-
44
- ### Tempo (12 Tools)
45
- - Log and manage work time
46
- - View and update worklogs
47
- - Access accounts and teams
48
- - Retrieve team and epic worklogs
49
- - Get user time tracking info
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.
22
+ ### Jira
23
+ - *"Find all high-priority bugs assigned to me"*
24
+ - *"Create a task for implementing user authentication"*
25
+ - *"Move PROJ-123 to Done and add a comment that it's deployed"*
26
+ - *"Show me the current sprint's progress"*
27
+ - *"Link PROJ-456 as blocking PROJ-789"*
65
28
 
66
- ### How It Works
29
+ ### Confluence
30
+ - *"Update the API documentation page with the new endpoints"*
31
+ - *"Create a meeting notes page in the Engineering space"*
32
+ - *"Find all pages about authentication in DOCS"*
33
+ - *"Add a PlantUML diagram to the architecture page"*
67
34
 
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
35
+ ### Tempo
36
+ - *"Log 4 hours on PROJ-123 for today with description 'Code review'"*
37
+ - *"Show my worklogs for this week"*
38
+ - *"How much time did the team spend on the Epic last month?"*
71
39
 
72
- ### Response Format
40
+ ## Setup
73
41
 
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
42
+ ### Claude Desktop
81
43
 
82
- ### Example Usage
44
+ Add to your `claude_desktop_config.json`:
83
45
 
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 }
46
+ **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
47
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
90
48
 
91
- // 2. Get next chunk
49
+ ```json
92
50
  {
93
- "bufferId": "buf_xxx",
94
- "offset": 5000,
95
- "limit": 5000
51
+ "mcpServers": {
52
+ "jicon": {
53
+ "command": "npx",
54
+ "args": ["-y", "@crypto512/jicon-mcp"],
55
+ "env": {
56
+ "JIRA_URL": "https://jira.example.com",
57
+ "JIRA_USERNAME": "your-email@example.com",
58
+ "JIRA_API_TOKEN": "your-api-token",
59
+ "CONFLUENCE_URL": "https://confluence.example.com",
60
+ "CONFLUENCE_USERNAME": "your-email@example.com",
61
+ "CONFLUENCE_API_TOKEN": "your-api-token"
62
+ }
63
+ }
64
+ }
96
65
  }
97
- // Response: { content: "...", hasMore: true }
98
-
99
- // 3. Continue until hasMore: false
100
66
  ```
101
67
 
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
- }
68
+ ### Claude Code
127
69
 
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
- }
70
+ Add to `~/.claude/settings.json` or project `.mcp.json`:
135
71
 
136
- // Count occurrences only
72
+ ```json
137
73
  {
138
- "bufferId": "buf_xxx",
139
- "pattern": "TODO",
140
- "output_mode": "count"
74
+ "mcpServers": {
75
+ "jicon": {
76
+ "command": "npx",
77
+ "args": ["-y", "@crypto512/jicon-mcp"],
78
+ "env": {
79
+ "JIRA_URL": "https://jira.example.com",
80
+ "JIRA_USERNAME": "your-email@example.com",
81
+ "JIRA_API_TOKEN": "your-api-token"
82
+ }
83
+ }
84
+ }
141
85
  }
142
86
  ```
143
87
 
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:
88
+ ### OpenCode
159
89
 
160
- ```typescript
161
- // Replace single occurrence
162
- {
163
- "bufferId": "buf_xxx",
164
- "old_string": "Meeting at 2pm",
165
- "new_string": "Meeting at 3pm"
166
- }
90
+ Add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jsonc`:
167
91
 
168
- // Replace all occurrences
92
+ ```jsonc
169
93
  {
170
- "bufferId": "buf_xxx",
171
- "old_string": "TODO",
172
- "new_string": "DONE",
173
- "replace_all": true
94
+ "$schema": "https://opencode.ai/config.json",
95
+ "mcp": {
96
+ "jicon": {
97
+ "type": "local",
98
+ "command": ["npx", "-y", "@crypto512/jicon-mcp"],
99
+ "environment": {
100
+ "JIRA_URL": "https://jira.example.com",
101
+ "JIRA_USERNAME": "your-email@example.com",
102
+ "JIRA_API_TOKEN": "your-api-token"
103
+ }
104
+ }
105
+ }
174
106
  }
175
107
  ```
176
108
 
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
-
188
109
  ## Configuration
189
110
 
190
- ### Configuration with `.jicon.json`
111
+ ### Environment Variables
112
+
113
+ | Variable | Description |
114
+ |----------|-------------|
115
+ | `JIRA_URL` | Your Jira instance URL |
116
+ | `JIRA_USERNAME` | Your email (omit for Data Center PAT) |
117
+ | `JIRA_API_TOKEN` | API token or Personal Access Token |
118
+ | `CONFLUENCE_URL` | Your Confluence instance URL |
119
+ | `CONFLUENCE_USERNAME` | Your email (omit for Data Center PAT) |
120
+ | `CONFLUENCE_API_TOKEN` | API token or Personal Access Token |
191
121
 
192
- Jicon supports a flexible configuration hierarchy with permission control:
122
+ **Note:** Tempo uses the same Jira credentials - no separate configuration needed.
193
123
 
194
- **Configuration Priority:**
195
- 1. `.jicon.json` (project root) - **Highest priority**
196
- 2. `$HOME/.config/jicon/jicon.json` (user config) - Medium priority
197
- 3. Environment variables - Lowest priority
124
+ ### Configuration File (Optional)
198
125
 
199
- **Create `.jicon.json` in your project root:**
126
+ Create `.jicon.json` in your project root for project-specific settings:
200
127
 
201
128
  ```json
202
129
  {
@@ -209,300 +136,106 @@ Jicon supports a flexible configuration hierarchy with permission control:
209
136
  "url": "https://confluence.example.com",
210
137
  "username": "your-email@example.com",
211
138
  "token": "your-api-token"
212
- },
213
- "permissions": {
214
- "mode": "full"
215
139
  }
216
140
  }
217
141
  ```
218
142
 
219
- **Note:** Tempo uses the same Jira URL and credentials - no separate configuration needed.
220
-
221
- **⚠️ Important:** Add `.jicon.json` to your `.gitignore` to avoid committing credentials!
143
+ **Important:** Add `.jicon.json` to your `.gitignore`!
222
144
 
223
145
  ### Permission Modes
224
146
 
225
- Control which tools are allowed to execute:
147
+ Control what operations are allowed:
226
148
 
227
- #### 1. **Full Access** (default)
149
+ **Full Access** (default):
228
150
  ```json
229
151
  { "permissions": { "mode": "full" } }
230
152
  ```
231
- All 52 tools are available.
232
153
 
233
- #### 2. **Read-Only Mode**
154
+ **Read-Only** - safe for exploration:
234
155
  ```json
235
156
  { "permissions": { "mode": "readonly" } }
236
157
  ```
237
- Only read operations (36 read tools + auto-included dependencies: 14 Jira + 9 Confluence + 9 Tempo + 4 Buffer read tools, plus workload utilities).
238
-
239
- #### 3. **Custom Mode** with Virtual Actions
240
-
241
- Simplify configuration with **virtual actions** that group related tools:
242
-
243
- **Virtual Actions Available (9 total):**
244
- - `jira_read` - All 14 Jira read tools
245
- - `jira_write` - All 5 Jira write tools
246
- - `jira_all` - All 19 Jira tools
247
- - `confluence_read` - All 9 Confluence read tools
248
- - `confluence_write` - All 5 Confluence write tools
249
- - `confluence_all` - All 14 Confluence tools
250
- - `tempo_read` - All 9 Tempo read tools
251
- - `tempo_write` - All 3 Tempo write tools
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
257
-
258
- **Example: Read-only access to all services**
259
- ```json
260
- {
261
- "permissions": {
262
- "mode": "custom",
263
- "whitelist": ["jira_read", "confluence_read", "tempo_read"]
264
- }
265
- }
266
- ```
267
-
268
- **Example: Full Jira + Confluence read-only + Tempo time tracking**
269
- ```json
270
- {
271
- "permissions": {
272
- "mode": "custom",
273
- "whitelist": ["jira_all", "confluence_read", "tempo_all"]
274
- }
275
- }
276
- ```
277
-
278
- **Example: Specific tools only**
279
- ```json
280
- {
281
- "permissions": {
282
- "mode": "custom",
283
- "whitelist": [
284
- "jira_search_issues",
285
- "jira_get_issue",
286
- "jira_create_issue",
287
- "confluence_get_page",
288
- "tempo_log_work",
289
- "tempo_get_worklogs"
290
- ]
291
- }
292
- }
293
- ```
294
158
 
295
- **Example: Blacklist dangerous operations**
159
+ **Custom** - fine-grained control:
296
160
  ```json
297
161
  {
298
162
  "permissions": {
299
163
  "mode": "custom",
300
- "blacklist": ["confluence_delete_page"]
164
+ "whitelist": ["jira_read", "confluence_read", "tempo_all"]
301
165
  }
302
166
  }
303
167
  ```
304
168
 
305
- See [`.jicon.json.example`](.jicon.json.example), [`.jicon.json.readonly`](.jicon.json.readonly), and [`.jicon.json.custom`](.jicon.json.custom) for more examples.
306
-
307
- ### Environment Variables
308
-
309
- All configuration options can be set via environment variables:
310
-
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` |
169
+ Available virtual actions: `jira_read`, `jira_write`, `jira_all`, `confluence_read`, `confluence_write`, `confluence_all`, `tempo_read`, `tempo_write`, `tempo_all`
321
170
 
322
- ### Claude Desktop
171
+ ## Authentication
323
172
 
324
- Add to `claude_desktop_config.json`:
173
+ ### Atlassian Cloud
325
174
 
326
- ```json
327
- {
328
- "mcpServers": {
329
- "jicon": {
330
- "command": "npx",
331
- "args": ["-y", "@crypto512/jicon-mcp"],
332
- "env": {
333
- "JIRA_URL": "https://jira.example.com",
334
- "JIRA_USERNAME": "your-email@example.com",
335
- "JIRA_API_TOKEN": "your-api-token",
336
- "CONFLUENCE_URL": "https://confluence.example.com",
337
- "CONFLUENCE_USERNAME": "your-email@example.com",
338
- "CONFLUENCE_API_TOKEN": "your-api-token"
339
- }
340
- }
341
- }
342
- }
343
- ```
344
-
345
- ### Claude Code
175
+ 1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
176
+ 2. Create a new API token
177
+ 3. Use your email as `username` and the token as `token`
346
178
 
347
- Add to `~/.claude/settings.json` or project `.mcp.json`:
179
+ ### Jira/Confluence Data Center (8.14+)
348
180
 
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
- ```
181
+ 1. Go to your profile → Personal Access Tokens
182
+ 2. Create a new token
183
+ 3. Use only the `token` field (omit `username`)
184
+ 4. Optionally set `"authType": "bearer"`
364
185
 
365
- ### OpenCode
186
+ ## Requirements
366
187
 
367
- For [OpenCode](https://opencode.ai) 1.0+, add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jsonc`:
188
+ - **Node.js 18+**
189
+ - **Jira** Server/Data Center or Cloud with API access
190
+ - **Confluence** (optional) Server/Data Center or Cloud
191
+ - **Tempo** (optional) Timesheets plugin
192
+ - **Docker** (optional) For PlantUML diagram validation
368
193
 
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
- ```
194
+ ## Features
388
195
 
389
- ## Example Usage
196
+ ### 63 Tools Across 3 Services
390
197
 
391
- Once configured, you can ask Claude to:
198
+ | Service | Capabilities |
199
+ |---------|--------------|
200
+ | **Jira** (18 tools) | Search, create, update, transition issues; manage comments, links, watchers; access boards, sprints, worklogs |
201
+ | **Confluence** (17 tools) | Search, create, edit pages via drafts; manage spaces, comments, attachments; PlantUML diagrams |
202
+ | **Tempo** (12 tools) | Log time, view/update worklogs, team tracking, accounts |
392
203
 
393
- - *"Find all high-priority bugs assigned to me in the PROJ project"*
394
- - *"Create a new task for implementing the login feature"*
395
- - *"Show me the current sprint's progress"*
396
- - *"Update the API documentation page in Confluence"*
397
- - *"Search for pages about authentication in the DOCS space"*
398
- - *"Log 4 hours of work on PROJ-123 for today"*
399
- - *"Show me my worklogs for this week"*
400
- - *"Get team worklogs for the development team"*
401
-
402
- ## Tool Categories
403
-
404
- ### Jira Tools
405
- | Category | Tools |
406
- |----------|-------|
407
- | **Help** | `jira_jql_help` |
408
- | **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
409
- | **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
410
- | **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
411
- | **Projects** | `jira_list_projects`, `jira_get_project`, `jira_get_issue_types` |
412
- | **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
413
- | **Workflow** | `jira_get_transitions` |
414
- | **Time Tracking** | `jira_get_issue_worklogs`, `jira_get_total_worklogs` |
415
-
416
- ### Confluence Tools
417
- | Category | Tools |
418
- |----------|-------|
419
- | **Help** | `confluence_cql_help` |
420
- | **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
421
- | **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
422
- | **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
423
- | **Navigation** | `confluence_get_page_children` |
424
- | **Collaboration** | `confluence_add_comment`, `confluence_get_comments` |
425
- | **Attachments** | `confluence_upload_attachment`, `confluence_list_attachments` |
426
-
427
- ### Tempo Tools
428
- | Category | Tools |
429
- |----------|-------|
430
- | **Worklog Management** | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_log_work`, `tempo_update_worklog`, `tempo_delete_worklog` |
431
- | **Team Tracking** | `tempo_get_team_worklogs`, `tempo_get_teams`, `tempo_get_team` |
432
- | **Epic Tracking** | `tempo_get_epic_worklogs` |
433
- | **Accounts** | `tempo_get_accounts`, `tempo_get_account` |
434
- | **User Info** | `tempo_get_user_info` |
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` |
204
+ Plus utility tools for content buffering, time calculations, URL generation, and built-in help.
447
205
 
448
- ## Requirements
206
+ ### Safe Confluence Editing
449
207
 
450
- - Node.js 18 or higher
451
- - Jira Server/Data Center or Jira Cloud instance
452
- - Confluence Server/Data Center or Confluence Cloud instance (optional)
453
- - Tempo Timesheets instance (optional)
454
- - Valid API tokens or Personal Access Tokens
208
+ Confluence changes go through a draft workflow - drafts are created for your review before publishing. No accidental overwrites.
455
209
 
456
- ## Authentication
210
+ ### PlantUML Diagrams
457
211
 
458
- ### Jira/Confluence Cloud (Basic Auth)
459
- Generate an API token from your Atlassian account:
460
- 1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
461
- 2. Create a new API token
462
- 3. Use your email as `username` and the token as `token`
212
+ Create and validate UML diagrams directly in Confluence pages. Requires Docker for full syntax validation.
463
213
 
464
- ### Jira/Confluence Data Center (Bearer Auth)
465
- For Data Center 8.14+, use Personal Access Tokens (PAT):
466
- 1. Go to your profile settings
467
- 2. Navigate to "Personal Access Tokens"
468
- 3. Create a new token with required permissions
469
- 4. Omit `username` or set `authType: "bearer"` to use Bearer authentication
214
+ ## Tool Reference
470
215
 
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
- ```
216
+ For complete tool documentation with parameters and examples, see **[TOOL_LIST.md](TOOL_LIST.md)**.
481
217
 
482
- ## Security Best Practices
218
+ ## Security
483
219
 
484
- - Store credentials in environment variables
485
- - Use API tokens with minimal required permissions
486
- - Regularly rotate API tokens
487
- - Never commit credentials to version control
488
- - Use read-only tokens for search/read operations
220
+ - Store credentials in environment variables, not in code
221
+ - Use API tokens with minimal required permissions
222
+ - Rotate tokens regularly
223
+ - Use read-only mode for exploration
224
+ - Never commit `.jicon.json` to version control
489
225
 
490
226
  ## License
491
227
 
492
- MIT License - see [LICENSE](LICENSE) file for details.
228
+ MIT License - see [LICENSE](LICENSE) for details.
493
229
 
494
230
  ## Support
495
231
 
496
- - 🐛 **Issues**: [GitHub Issues](https://github.com/crypto512/jicon/issues)
497
- - 💬 **Discussions**: [GitHub Discussions](https://github.com/crypto512/jicon/discussions)
498
- - 📖 **Documentation**: [GitHub Repository](https://github.com/crypto512/jicon)
232
+ - [GitHub Issues](https://github.com/crypto512/jicon/issues)
233
+ - [GitHub Discussions](https://github.com/crypto512/jicon/discussions)
499
234
 
500
235
  ## Acknowledgments
501
236
 
502
- - Built on [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic
503
- - Powered by Atlassian APIs
504
- - Inspired by the community's need for better Jira/Confluence integration
237
+ Built on [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic.
505
238
 
506
239
  ---
507
240
 
508
- **Made with ❤️ for developers who work with Jira, Confluence, and Tempo**
241
+ **Made with care for teams using Jira, Confluence, and Tempo**