@crypto512/jicon-mcp 0.7.1 → 1.0.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/README.md +128 -395
- package/TOOL_LIST.md +810 -120
- package/dist/config/constants.d.ts +1 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +1 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +27 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/client.d.ts +38 -0
- package/dist/confluence/client.d.ts.map +1 -1
- package/dist/confluence/client.js +117 -0
- package/dist/confluence/client.js.map +1 -1
- package/dist/confluence/tools.d.ts +102 -75
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +510 -151
- package/dist/confluence/tools.js.map +1 -1
- package/dist/confluence/types.d.ts +55 -1
- package/dist/confluence/types.d.ts.map +1 -1
- package/dist/index.js +88 -2
- package/dist/index.js.map +1 -1
- package/dist/jira/tools.d.ts +0 -5
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +40 -87
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/filter.d.ts +5 -0
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +29 -12
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +23 -25
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +41 -45
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/permissions/write-home-validator.d.ts +35 -0
- package/dist/permissions/write-home-validator.d.ts.map +1 -0
- package/dist/permissions/write-home-validator.js +140 -0
- package/dist/permissions/write-home-validator.js.map +1 -0
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +43 -44
- package/dist/tempo/tools.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +119 -1
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +610 -3
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +34 -0
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +79 -0
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +4 -4
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +29 -0
- package/dist/utils/jicon-help.d.ts.map +1 -0
- package/dist/utils/jicon-help.js +873 -0
- package/dist/utils/jicon-help.js.map +1 -0
- package/dist/utils/plantuml/client.d.ts +40 -0
- package/dist/utils/plantuml/client.d.ts.map +1 -0
- package/dist/utils/plantuml/client.js +306 -0
- package/dist/utils/plantuml/client.js.map +1 -0
- package/dist/utils/plantuml/docker-manager.d.ts +35 -0
- package/dist/utils/plantuml/docker-manager.d.ts.map +1 -0
- package/dist/utils/plantuml/docker-manager.js +280 -0
- package/dist/utils/plantuml/docker-manager.js.map +1 -0
- package/dist/utils/plantuml/index.d.ts +11 -0
- package/dist/utils/plantuml/index.d.ts.map +1 -0
- package/dist/utils/plantuml/index.js +16 -0
- package/dist/utils/plantuml/index.js.map +1 -0
- package/dist/utils/plantuml/service.d.ts +46 -0
- package/dist/utils/plantuml/service.d.ts.map +1 -0
- package/dist/utils/plantuml/service.js +96 -0
- package/dist/utils/plantuml/service.js.map +1 -0
- package/dist/utils/plantuml/tools.d.ts +65 -0
- package/dist/utils/plantuml/tools.d.ts.map +1 -0
- package/dist/utils/plantuml/tools.js +272 -0
- package/dist/utils/plantuml/tools.js.map +1 -0
- package/dist/utils/plantuml/types.d.ts +130 -0
- package/dist/utils/plantuml/types.d.ts.map +1 -0
- package/dist/utils/plantuml/types.js +66 -0
- package/dist/utils/plantuml/types.js.map +1 -0
- package/dist/utils/response-formatter.d.ts +14 -0
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +84 -1
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/url-tools.d.ts +49 -0
- package/dist/utils/url-tools.d.ts.map +1 -0
- package/dist/utils/url-tools.js +141 -0
- package/dist/utils/url-tools.js.map +1 -0
- package/dist/utils/xhtml/confluence-schema.d.ts +55 -0
- package/dist/utils/xhtml/confluence-schema.d.ts.map +1 -0
- package/dist/utils/xhtml/confluence-schema.js +215 -0
- package/dist/utils/xhtml/confluence-schema.js.map +1 -0
- package/dist/utils/xhtml/index.d.ts +17 -0
- package/dist/utils/xhtml/index.d.ts.map +1 -0
- package/dist/utils/xhtml/index.js +21 -0
- package/dist/utils/xhtml/index.js.map +1 -0
- package/dist/utils/xhtml/operations.d.ts +100 -0
- package/dist/utils/xhtml/operations.d.ts.map +1 -0
- package/dist/utils/xhtml/operations.js +596 -0
- package/dist/utils/xhtml/operations.js.map +1 -0
- package/dist/utils/xhtml/parser.d.ts +64 -0
- package/dist/utils/xhtml/parser.d.ts.map +1 -0
- package/dist/utils/xhtml/parser.js +180 -0
- package/dist/utils/xhtml/parser.js.map +1 -0
- package/dist/utils/xhtml/plantuml.d.ts +112 -0
- package/dist/utils/xhtml/plantuml.d.ts.map +1 -0
- package/dist/utils/xhtml/plantuml.js +251 -0
- package/dist/utils/xhtml/plantuml.js.map +1 -0
- package/dist/utils/xhtml/selector.d.ts +35 -0
- package/dist/utils/xhtml/selector.d.ts.map +1 -0
- package/dist/utils/xhtml/selector.js +358 -0
- package/dist/utils/xhtml/selector.js.map +1 -0
- package/dist/utils/xhtml/serializer.d.ts +26 -0
- package/dist/utils/xhtml/serializer.d.ts.map +1 -0
- package/dist/utils/xhtml/serializer.js +170 -0
- package/dist/utils/xhtml/serializer.js.map +1 -0
- package/dist/utils/xhtml/types.d.ts +134 -0
- package/dist/utils/xhtml/types.d.ts.map +1 -0
- package/dist/utils/xhtml/types.js +65 -0
- package/dist/utils/xhtml/types.js.map +1 -0
- package/dist/utils/xhtml/validator.d.ts +67 -0
- package/dist/utils/xhtml/validator.d.ts.map +1 -0
- package/dist/utils/xhtml/validator.js +300 -0
- package/dist/utils/xhtml/validator.js.map +1 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
>
|
|
6
|
+
> Connect Claude to your 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
|
|
18
|
+
## What Can You Do?
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Once configured, just ask Claude in natural language:
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
40
|
+
## Setup
|
|
73
41
|
|
|
74
|
-
|
|
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
|
-
|
|
44
|
+
Add to your `claude_desktop_config.json`:
|
|
83
45
|
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
49
|
+
```json
|
|
92
50
|
{
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
72
|
+
```json
|
|
137
73
|
{
|
|
138
|
-
"
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
+
```jsonc
|
|
169
93
|
{
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
122
|
+
**Note:** Tempo uses the same Jira credentials - no separate configuration needed.
|
|
193
123
|
|
|
194
|
-
|
|
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
|
-
|
|
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
|
-
**
|
|
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
|
|
147
|
+
Control what operations are allowed:
|
|
226
148
|
|
|
227
|
-
|
|
149
|
+
**Full Access** (default):
|
|
228
150
|
```json
|
|
229
151
|
{ "permissions": { "mode": "full" } }
|
|
230
152
|
```
|
|
231
|
-
All 52 tools are available.
|
|
232
153
|
|
|
233
|
-
|
|
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
|
-
**
|
|
159
|
+
**Custom** - fine-grained control:
|
|
296
160
|
```json
|
|
297
161
|
{
|
|
298
162
|
"permissions": {
|
|
299
163
|
"mode": "custom",
|
|
300
|
-
"
|
|
164
|
+
"whitelist": ["jira_read", "confluence_read", "tempo_all"]
|
|
301
165
|
}
|
|
302
166
|
}
|
|
303
167
|
```
|
|
304
168
|
|
|
305
|
-
|
|
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
|
-
|
|
171
|
+
## Authentication
|
|
323
172
|
|
|
324
|
-
|
|
173
|
+
### Atlassian Cloud
|
|
325
174
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
-
|
|
179
|
+
### Jira/Confluence Data Center (8.14+)
|
|
348
180
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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
|
-
|
|
186
|
+
## Requirements
|
|
366
187
|
|
|
367
|
-
|
|
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
|
-
|
|
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
|
-
|
|
196
|
+
### 63 Tools Across 3 Services
|
|
390
197
|
|
|
391
|
-
|
|
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
|
-
|
|
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
|
-
|
|
206
|
+
### Safe Confluence Editing
|
|
449
207
|
|
|
450
|
-
-
|
|
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 - Claude creates drafts, you review and publish. No accidental overwrites.
|
|
455
209
|
|
|
456
|
-
|
|
210
|
+
### PlantUML Diagrams
|
|
457
211
|
|
|
458
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
218
|
+
## Security
|
|
483
219
|
|
|
484
|
-
-
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
-
|
|
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)
|
|
228
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
493
229
|
|
|
494
230
|
## Support
|
|
495
231
|
|
|
496
|
-
-
|
|
497
|
-
-
|
|
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
|
-
|
|
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
|
|
241
|
+
**Made with care for teams using Jira, Confluence, and Tempo**
|