@crypto512/jicon-mcp 0.7.0 → 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 +133 -381
- 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 +46 -0
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +108 -12
- 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/CLAUDE.md +0 -947
- package/CONTRIBUTING.md +0 -371
- package/DEVELOPMENT.md +0 -400
- package/JIRA_API_ANALYSIS.md +0 -275
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
|
|
113
|
-
- **List Buffers**: Use `buffer_list` to see active buffers
|
|
114
|
-
- **Clear Buffers**: Use `buffer_clear` to free memory
|
|
68
|
+
### Claude Code
|
|
115
69
|
|
|
116
|
-
|
|
70
|
+
Add to `~/.claude/settings.json` or project `.mcp.json`:
|
|
117
71
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
// Search for "meeting" with 2 lines of context before and after
|
|
122
|
-
{
|
|
123
|
-
"bufferId": "buf_xxx",
|
|
124
|
-
"pattern": "meeting",
|
|
125
|
-
"-C": 2
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Case-insensitive search with 3 lines after each match
|
|
129
|
-
{
|
|
130
|
-
"bufferId": "buf_xxx",
|
|
131
|
-
"pattern": "API",
|
|
132
|
-
"-i": true,
|
|
133
|
-
"-A": 3
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Count occurrences only
|
|
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
|
|
88
|
+
### OpenCode
|
|
157
89
|
|
|
158
|
-
|
|
90
|
+
Add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jsonc`:
|
|
159
91
|
|
|
160
|
-
```
|
|
161
|
-
// Replace single occurrence
|
|
92
|
+
```jsonc
|
|
162
93
|
{
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
|
191
112
|
|
|
192
|
-
|
|
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 |
|
|
193
121
|
|
|
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 (legacy)
|
|
122
|
+
**Note:** Tempo uses the same Jira credentials - no separate configuration needed.
|
|
198
123
|
|
|
199
|
-
|
|
124
|
+
### Configuration File (Optional)
|
|
125
|
+
|
|
126
|
+
Create `.jicon.json` in your project root for project-specific settings:
|
|
200
127
|
|
|
201
128
|
```json
|
|
202
129
|
{
|
|
@@ -209,281 +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
|
-
|
|
143
|
+
**Important:** Add `.jicon.json` to your `.gitignore`!
|
|
220
144
|
|
|
221
145
|
### Permission Modes
|
|
222
146
|
|
|
223
|
-
Control
|
|
147
|
+
Control what operations are allowed:
|
|
224
148
|
|
|
225
|
-
|
|
149
|
+
**Full Access** (default):
|
|
226
150
|
```json
|
|
227
151
|
{ "permissions": { "mode": "full" } }
|
|
228
152
|
```
|
|
229
|
-
All 52 tools are available.
|
|
230
153
|
|
|
231
|
-
|
|
154
|
+
**Read-Only** - safe for exploration:
|
|
232
155
|
```json
|
|
233
156
|
{ "permissions": { "mode": "readonly" } }
|
|
234
157
|
```
|
|
235
|
-
Only read operations (36 read tools + auto-included dependencies: 14 Jira + 9 Confluence + 9 Tempo + 4 Buffer read tools, plus workload utilities).
|
|
236
|
-
|
|
237
|
-
#### 3. **Custom Mode** with Virtual Actions
|
|
238
158
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
**Virtual Actions Available (9 total):**
|
|
242
|
-
- `jira_read` - All 14 Jira read tools
|
|
243
|
-
- `jira_write` - All 5 Jira write tools
|
|
244
|
-
- `jira_all` - All 19 Jira tools
|
|
245
|
-
- `confluence_read` - All 9 Confluence read tools
|
|
246
|
-
- `confluence_write` - All 5 Confluence write tools
|
|
247
|
-
- `confluence_all` - All 14 Confluence tools
|
|
248
|
-
- `tempo_read` - All 9 Tempo read tools
|
|
249
|
-
- `tempo_write` - All 3 Tempo write tools
|
|
250
|
-
- `tempo_all` - All 12 Tempo tools
|
|
251
|
-
|
|
252
|
-
**Auto-included Dependencies:**
|
|
253
|
-
- Buffer tools (buffer_get_chunk, buffer_grep, etc.) are automatically included with any read/write action
|
|
254
|
-
- Workload tools (workload_convert, workload_sum) are automatically included with any Jira/Confluence/Tempo tool
|
|
255
|
-
|
|
256
|
-
**Example: Read-only access to all services**
|
|
159
|
+
**Custom** - fine-grained control:
|
|
257
160
|
```json
|
|
258
161
|
{
|
|
259
162
|
"permissions": {
|
|
260
163
|
"mode": "custom",
|
|
261
|
-
"whitelist": ["jira_read", "confluence_read", "
|
|
164
|
+
"whitelist": ["jira_read", "confluence_read", "tempo_all"]
|
|
262
165
|
}
|
|
263
166
|
}
|
|
264
167
|
```
|
|
265
168
|
|
|
266
|
-
|
|
267
|
-
```json
|
|
268
|
-
{
|
|
269
|
-
"permissions": {
|
|
270
|
-
"mode": "custom",
|
|
271
|
-
"whitelist": ["jira_all", "confluence_read", "tempo_all"]
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
```
|
|
169
|
+
Available virtual actions: `jira_read`, `jira_write`, `jira_all`, `confluence_read`, `confluence_write`, `confluence_all`, `tempo_read`, `tempo_write`, `tempo_all`
|
|
275
170
|
|
|
276
|
-
|
|
277
|
-
```json
|
|
278
|
-
{
|
|
279
|
-
"permissions": {
|
|
280
|
-
"mode": "custom",
|
|
281
|
-
"whitelist": [
|
|
282
|
-
"jira_search_issues",
|
|
283
|
-
"jira_get_issue",
|
|
284
|
-
"jira_create_issue",
|
|
285
|
-
"confluence_get_page",
|
|
286
|
-
"tempo_log_work",
|
|
287
|
-
"tempo_get_worklogs"
|
|
288
|
-
]
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
```
|
|
171
|
+
## Authentication
|
|
292
172
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
"blacklist": ["confluence_delete_page"]
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
```
|
|
173
|
+
### Atlassian Cloud
|
|
174
|
+
|
|
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`
|
|
302
178
|
|
|
303
|
-
|
|
179
|
+
### Jira/Confluence Data Center (8.14+)
|
|
304
180
|
|
|
305
|
-
|
|
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"`
|
|
306
185
|
|
|
307
|
-
|
|
186
|
+
## Requirements
|
|
308
187
|
|
|
309
|
-
**
|
|
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
|
|
310
193
|
|
|
311
|
-
|
|
312
|
-
{
|
|
313
|
-
"mcpServers": {
|
|
314
|
-
"jicon": {
|
|
315
|
-
"command": "npx",
|
|
316
|
-
"args": ["-y", "@crypto512/jicon-mcp"],
|
|
317
|
-
"env": {
|
|
318
|
-
"JIRA_URL": "https://jira.example.com",
|
|
319
|
-
"JIRA_USERNAME": "your-email@example.com",
|
|
320
|
-
"JIRA_API_TOKEN": "your-api-token",
|
|
321
|
-
"CONFLUENCE_URL": "https://confluence.example.com",
|
|
322
|
-
"CONFLUENCE_USERNAME": "your-email@example.com",
|
|
323
|
-
"CONFLUENCE_API_TOKEN": "your-api-token"
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
```
|
|
194
|
+
## Features
|
|
329
195
|
|
|
330
|
-
|
|
196
|
+
### 63 Tools Across 3 Services
|
|
331
197
|
|
|
332
|
-
|
|
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 |
|
|
333
203
|
|
|
334
|
-
|
|
335
|
-
- *"Create a new task for implementing the login feature"*
|
|
336
|
-
- *"Show me the current sprint's progress"*
|
|
337
|
-
- *"Update the API documentation page in Confluence"*
|
|
338
|
-
- *"Search for pages about authentication in the DOCS space"*
|
|
339
|
-
- *"Log 4 hours of work on PROJ-123 for today"*
|
|
340
|
-
- *"Show me my worklogs for this week"*
|
|
341
|
-
- *"Get team worklogs for the development team"*
|
|
342
|
-
|
|
343
|
-
## Documentation
|
|
344
|
-
|
|
345
|
-
- **[CLAUDE.md](CLAUDE.md)** - Complete functional specification
|
|
346
|
-
- **[TOOL_LIST.md](TOOL_LIST.md)** - Comprehensive tool reference with examples
|
|
347
|
-
- **[API Documentation](docs/api.md)** - Detailed API documentation (coming soon)
|
|
348
|
-
|
|
349
|
-
## Tool Categories
|
|
350
|
-
|
|
351
|
-
### Jira Tools
|
|
352
|
-
| Category | Tools |
|
|
353
|
-
|----------|-------|
|
|
354
|
-
| **Help** | `jira_jql_help` |
|
|
355
|
-
| **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
|
|
356
|
-
| **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
|
|
357
|
-
| **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
|
|
358
|
-
| **Projects** | `jira_list_projects`, `jira_get_project`, `jira_get_issue_types` |
|
|
359
|
-
| **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
|
|
360
|
-
| **Workflow** | `jira_get_transitions` |
|
|
361
|
-
| **Time Tracking** | `jira_get_issue_worklogs`, `jira_get_total_worklogs` |
|
|
362
|
-
|
|
363
|
-
### Confluence Tools
|
|
364
|
-
| Category | Tools |
|
|
365
|
-
|----------|-------|
|
|
366
|
-
| **Help** | `confluence_cql_help` |
|
|
367
|
-
| **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
|
|
368
|
-
| **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
|
|
369
|
-
| **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
|
|
370
|
-
| **Navigation** | `confluence_get_page_children` |
|
|
371
|
-
| **Collaboration** | `confluence_add_comment`, `confluence_get_comments` |
|
|
372
|
-
| **Attachments** | `confluence_upload_attachment`, `confluence_list_attachments` |
|
|
373
|
-
|
|
374
|
-
### Tempo Tools
|
|
375
|
-
| Category | Tools |
|
|
376
|
-
|----------|-------|
|
|
377
|
-
| **Worklog Management** | `tempo_get_worklogs`, `tempo_get_worklog`, `tempo_log_work`, `tempo_update_worklog`, `tempo_delete_worklog` |
|
|
378
|
-
| **Team Tracking** | `tempo_get_team_worklogs`, `tempo_get_teams`, `tempo_get_team` |
|
|
379
|
-
| **Epic Tracking** | `tempo_get_epic_worklogs` |
|
|
380
|
-
| **Accounts** | `tempo_get_accounts`, `tempo_get_account` |
|
|
381
|
-
| **User Info** | `tempo_get_user_info` |
|
|
382
|
-
|
|
383
|
-
### Buffer Tools
|
|
384
|
-
| Category | Tools |
|
|
385
|
-
|----------|-------|
|
|
386
|
-
| **Content Pagination** | `buffer_get_chunk`, `buffer_list`, `buffer_clear` |
|
|
387
|
-
| **Content Search** | `buffer_grep` |
|
|
388
|
-
| **Content Edit** | `buffer_edit` |
|
|
389
|
-
|
|
390
|
-
### Workload Tools
|
|
391
|
-
| Category | Tools |
|
|
392
|
-
|----------|-------|
|
|
393
|
-
| **Time Conversion** | `workload_convert`, `workload_sum` |
|
|
204
|
+
Plus utility tools for content buffering, time calculations, URL generation, and built-in help.
|
|
394
205
|
|
|
395
|
-
|
|
206
|
+
### Safe Confluence Editing
|
|
396
207
|
|
|
397
|
-
-
|
|
398
|
-
- Jira Server/Data Center or Jira Cloud instance
|
|
399
|
-
- Confluence Server/Data Center or Confluence Cloud instance (optional)
|
|
400
|
-
- Tempo Timesheets instance (optional)
|
|
401
|
-
- 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.
|
|
402
209
|
|
|
403
|
-
|
|
210
|
+
### PlantUML Diagrams
|
|
404
211
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
- ✅ Store credentials in environment variables
|
|
420
|
-
- ✅ Use API tokens with minimal required permissions
|
|
421
|
-
- ✅ Regularly rotate API tokens
|
|
422
|
-
- ✅ Never commit credentials to version control
|
|
423
|
-
- ✅ Use read-only tokens for search/read operations
|
|
424
|
-
|
|
425
|
-
## Development Status
|
|
426
|
-
|
|
427
|
-
- ✅ **Specification Complete** - Functional spec and tool list defined
|
|
428
|
-
- ✅ **Implementation Complete** - All 52 tools implemented
|
|
429
|
-
- ✅ **Testing** - 157 tests passing
|
|
430
|
-
- ✅ **Configuration System** - Flexible .jicon.json with permissions
|
|
431
|
-
- ✅ **Content Buffering** - In-memory pagination for large responses
|
|
432
|
-
- 📦 **Publishing** - Ready for npm publish
|
|
433
|
-
|
|
434
|
-
## Roadmap
|
|
435
|
-
|
|
436
|
-
### Phase 1: Core Implementation ✅ **COMPLETED**
|
|
437
|
-
- ✅ Project setup and structure
|
|
438
|
-
- ✅ Jira API client implementation (19 tools)
|
|
439
|
-
- ✅ Confluence API client implementation (14 tools)
|
|
440
|
-
- ✅ Tempo API client implementation (12 tools)
|
|
441
|
-
- ✅ Workload utility tools implementation (2 tools)
|
|
442
|
-
- ✅ Buffer tools implementation (5 tools)
|
|
443
|
-
- ✅ MCP server implementation
|
|
444
|
-
- ✅ Basic testing (157 tests, 100% pass rate)
|
|
445
|
-
- ✅ Configuration system (.jicon.json with hierarchy)
|
|
446
|
-
- ✅ Permission system (full, readonly, custom modes)
|
|
447
|
-
- ✅ Virtual actions (jira_read, jira_all, confluence_read, tempo_all, etc.)
|
|
448
|
-
- ✅ Content buffering with pagination support
|
|
449
|
-
- ✅ Development and contributing guides
|
|
450
|
-
|
|
451
|
-
### Phase 2: Enhancement (In Progress)
|
|
452
|
-
- ✅ Advanced error handling (implemented)
|
|
453
|
-
- [ ] Rate limiting and caching
|
|
454
|
-
- [ ] Integration tests with mock servers
|
|
455
|
-
- ✅ Documentation examples (DEVELOPMENT.md added)
|
|
456
|
-
- [ ] CI/CD pipeline
|
|
457
|
-
- [ ] npm package publishing
|
|
458
|
-
|
|
459
|
-
### Phase 3: Advanced Features (Planned)
|
|
460
|
-
- [ ] Bulk operations
|
|
461
|
-
- [ ] Custom field templates
|
|
462
|
-
- [ ] Webhook support
|
|
463
|
-
- [ ] Multi-instance support
|
|
464
|
-
- [ ] CLI tool for configuration testing
|
|
465
|
-
- [ ] Performance optimizations
|
|
466
|
-
|
|
467
|
-
## Contributing
|
|
468
|
-
|
|
469
|
-
Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.
|
|
212
|
+
Create and validate UML diagrams directly in Confluence pages. Requires Docker for full syntax validation.
|
|
213
|
+
|
|
214
|
+
## Tool Reference
|
|
215
|
+
|
|
216
|
+
For complete tool documentation with parameters and examples, see **[TOOL_LIST.md](TOOL_LIST.md)**.
|
|
217
|
+
|
|
218
|
+
## Security
|
|
219
|
+
|
|
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
|
|
470
225
|
|
|
471
226
|
## License
|
|
472
227
|
|
|
473
|
-
MIT License - see [LICENSE](LICENSE)
|
|
228
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
474
229
|
|
|
475
230
|
## Support
|
|
476
231
|
|
|
477
|
-
-
|
|
478
|
-
-
|
|
479
|
-
- 📖 **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)
|
|
480
234
|
|
|
481
235
|
## Acknowledgments
|
|
482
236
|
|
|
483
|
-
|
|
484
|
-
- Powered by Atlassian APIs
|
|
485
|
-
- Inspired by the community's need for better Jira/Confluence integration
|
|
237
|
+
Built on [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic.
|
|
486
238
|
|
|
487
239
|
---
|
|
488
240
|
|
|
489
|
-
**Made with
|
|
241
|
+
**Made with care for teams using Jira, Confluence, and Tempo**
|