@crypto512/jicon-mcp 0.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.
Files changed (103) hide show
  1. package/.env.example +9 -0
  2. package/.jicon.json.custom +21 -0
  3. package/.jicon.json.example +15 -0
  4. package/.jicon.json.readonly +15 -0
  5. package/CLAUDE.md +596 -0
  6. package/CONTRIBUTING.md +371 -0
  7. package/DEVELOPMENT.md +400 -0
  8. package/LICENSE +21 -0
  9. package/README.md +300 -0
  10. package/TOOL_LIST.md +435 -0
  11. package/dist/config/constants.d.ts +14 -0
  12. package/dist/config/constants.d.ts.map +1 -0
  13. package/dist/config/constants.js +18 -0
  14. package/dist/config/constants.js.map +1 -0
  15. package/dist/config/loader.d.ts +35 -0
  16. package/dist/config/loader.d.ts.map +1 -0
  17. package/dist/config/loader.js +108 -0
  18. package/dist/config/loader.js.map +1 -0
  19. package/dist/config/types.d.ts +130 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/config/types.js +32 -0
  22. package/dist/config/types.js.map +1 -0
  23. package/dist/confluence/client.d.ts +30 -0
  24. package/dist/confluence/client.d.ts.map +1 -0
  25. package/dist/confluence/client.js +176 -0
  26. package/dist/confluence/client.js.map +1 -0
  27. package/dist/confluence/defaults.d.ts +23 -0
  28. package/dist/confluence/defaults.d.ts.map +1 -0
  29. package/dist/confluence/defaults.js +29 -0
  30. package/dist/confluence/defaults.js.map +1 -0
  31. package/dist/confluence/formatters.d.ts +22 -0
  32. package/dist/confluence/formatters.d.ts.map +1 -0
  33. package/dist/confluence/formatters.js +125 -0
  34. package/dist/confluence/formatters.js.map +1 -0
  35. package/dist/confluence/tools.d.ts +266 -0
  36. package/dist/confluence/tools.d.ts.map +1 -0
  37. package/dist/confluence/tools.js +376 -0
  38. package/dist/confluence/tools.js.map +1 -0
  39. package/dist/confluence/types.d.ts +122 -0
  40. package/dist/confluence/types.d.ts.map +1 -0
  41. package/dist/confluence/types.js +5 -0
  42. package/dist/confluence/types.js.map +1 -0
  43. package/dist/index.d.ts +6 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +161 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/jira/client.d.ts +46 -0
  48. package/dist/jira/client.d.ts.map +1 -0
  49. package/dist/jira/client.js +178 -0
  50. package/dist/jira/client.js.map +1 -0
  51. package/dist/jira/defaults.d.ts +19 -0
  52. package/dist/jira/defaults.d.ts.map +1 -0
  53. package/dist/jira/defaults.js +57 -0
  54. package/dist/jira/defaults.js.map +1 -0
  55. package/dist/jira/formatters.d.ts +22 -0
  56. package/dist/jira/formatters.d.ts.map +1 -0
  57. package/dist/jira/formatters.js +128 -0
  58. package/dist/jira/formatters.js.map +1 -0
  59. package/dist/jira/tools.d.ts +334 -0
  60. package/dist/jira/tools.d.ts.map +1 -0
  61. package/dist/jira/tools.js +372 -0
  62. package/dist/jira/tools.js.map +1 -0
  63. package/dist/jira/types.d.ts +110 -0
  64. package/dist/jira/types.d.ts.map +1 -0
  65. package/dist/jira/types.js +5 -0
  66. package/dist/jira/types.js.map +1 -0
  67. package/dist/permissions/filter.d.ts +30 -0
  68. package/dist/permissions/filter.d.ts.map +1 -0
  69. package/dist/permissions/filter.js +89 -0
  70. package/dist/permissions/filter.js.map +1 -0
  71. package/dist/permissions/tool-registry.d.ts +49 -0
  72. package/dist/permissions/tool-registry.d.ts.map +1 -0
  73. package/dist/permissions/tool-registry.js +111 -0
  74. package/dist/permissions/tool-registry.js.map +1 -0
  75. package/dist/tempo/client.d.ts +32 -0
  76. package/dist/tempo/client.d.ts.map +1 -0
  77. package/dist/tempo/client.js +125 -0
  78. package/dist/tempo/client.js.map +1 -0
  79. package/dist/tempo/formatters.d.ts +30 -0
  80. package/dist/tempo/formatters.d.ts.map +1 -0
  81. package/dist/tempo/formatters.js +172 -0
  82. package/dist/tempo/formatters.js.map +1 -0
  83. package/dist/tempo/tools.d.ts +184 -0
  84. package/dist/tempo/tools.d.ts.map +1 -0
  85. package/dist/tempo/tools.js +392 -0
  86. package/dist/tempo/tools.js.map +1 -0
  87. package/dist/tempo/types.d.ts +98 -0
  88. package/dist/tempo/types.d.ts.map +1 -0
  89. package/dist/tempo/types.js +5 -0
  90. package/dist/tempo/types.js.map +1 -0
  91. package/dist/types.d.ts +27 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils/http-client.d.ts +22 -0
  96. package/dist/utils/http-client.d.ts.map +1 -0
  97. package/dist/utils/http-client.js +137 -0
  98. package/dist/utils/http-client.js.map +1 -0
  99. package/dist/utils/response-formatter.d.ts +8 -0
  100. package/dist/utils/response-formatter.d.ts.map +1 -0
  101. package/dist/utils/response-formatter.js +38 -0
  102. package/dist/utils/response-formatter.js.map +1 -0
  103. package/package.json +50 -0
package/DEVELOPMENT.md ADDED
@@ -0,0 +1,400 @@
1
+ # Development Guide - Testing Jicon MCP Server
2
+
3
+ ## Testing Your Development Version
4
+
5
+ There are several ways to test the MCP server during development:
6
+
7
+ ## Method 1: Claude Desktop with Local Build (Recommended)
8
+
9
+ ### Step 1: Build the Project
10
+ ```bash
11
+ npm run build
12
+ ```
13
+
14
+ ### Step 2: Configure Claude Desktop
15
+
16
+ Edit your Claude Desktop configuration file:
17
+
18
+ **MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
19
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "jicon-dev": {
25
+ "command": "node",
26
+ "args": ["/absolute/path/to/jicon/dist/index.js"],
27
+ "env": {
28
+ "JIRA_URL": "https://jira.example.com",
29
+ "JIRA_USERNAME": "your-email@example.com",
30
+ "JIRA_API_TOKEN": "your-test-token",
31
+ "CONFLUENCE_URL": "https://confluence.example.com",
32
+ "CONFLUENCE_USERNAME": "your-email@example.com",
33
+ "CONFLUENCE_API_TOKEN": "your-test-token"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ ```
39
+
40
+ **Or use `.jicon.json` in the project directory:**
41
+
42
+ ```json
43
+ {
44
+ "mcpServers": {
45
+ "jicon-dev": {
46
+ "command": "node",
47
+ "args": ["/absolute/path/to/jicon/dist/index.js"]
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ Then create `.jicon.json` in your project:
54
+
55
+ ```json
56
+ {
57
+ "jira": {
58
+ "url": "https://jira.example.com",
59
+ "username": "your-email@example.com",
60
+ "token": "your-test-token"
61
+ },
62
+ "confluence": {
63
+ "url": "https://confluence.example.com",
64
+ "username": "your-email@example.com",
65
+ "token": "your-test-token"
66
+ },
67
+ "permissions": {
68
+ "mode": "readonly"
69
+ }
70
+ }
71
+ ```
72
+
73
+ ### Step 3: Restart Claude Desktop
74
+
75
+ 1. Quit Claude Desktop completely
76
+ 2. Start Claude Desktop again
77
+ 3. The server should appear in the MCP menu (hammer icon)
78
+
79
+ ### Step 4: Test in Claude
80
+
81
+ Ask Claude to use the tools:
82
+ ```
83
+ Can you search for issues in project TEST using Jira?
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Method 2: MCP Inspector (Best for Debugging)
89
+
90
+ The MCP Inspector is a tool from Anthropic for testing MCP servers.
91
+
92
+ ### Install MCP Inspector
93
+
94
+ ```bash
95
+ npx @modelcontextprotocol/inspector node dist/index.js
96
+ ```
97
+
98
+ This opens a web interface where you can:
99
+ - See all available tools
100
+ - Test tool execution
101
+ - Inspect requests/responses
102
+ - Debug errors
103
+
104
+ ### With Configuration File
105
+
106
+ Create `.jicon.json` in the project root first, then:
107
+
108
+ ```bash
109
+ npx @modelcontextprotocol/inspector node dist/index.js
110
+ ```
111
+
112
+ The inspector will read your config automatically.
113
+
114
+ ---
115
+
116
+ ## Method 3: Manual Testing with stdio
117
+
118
+ ### Test the Server Directly
119
+
120
+ ```bash
121
+ # Build first
122
+ npm run build
123
+
124
+ # Run the server
125
+ node dist/index.js
126
+ ```
127
+
128
+ You should see:
129
+ ```
130
+ ✓ Using environment variables (or config file info)
131
+ ✓ Jira configured: https://jira.example.com
132
+ ✓ Confluence configured: https://confluence.example.com
133
+ ✓ Permission mode: full
134
+ ✓ Allowed tools: 28/28
135
+ Jicon MCP Server running on stdio
136
+ ```
137
+
138
+ ### Send Test JSON-RPC Request
139
+
140
+ The server communicates via JSON-RPC over stdio. You can test manually:
141
+
142
+ ```bash
143
+ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Method 4: npm link for Global Testing
149
+
150
+ Make your dev version available globally:
151
+
152
+ ```bash
153
+ # In the jicon directory
154
+ npm link
155
+
156
+ # Now you can use it anywhere
157
+ jicon-mcp
158
+ ```
159
+
160
+ Then in Claude Desktop config:
161
+ ```json
162
+ {
163
+ "mcpServers": {
164
+ "jicon-dev": {
165
+ "command": "jicon-mcp"
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Testing Different Configurations
174
+
175
+ ### Test Read-Only Mode
176
+
177
+ Create `.jicon.json`:
178
+ ```json
179
+ {
180
+ "jira": { "url": "...", "username": "...", "token": "..." },
181
+ "confluence": { "url": "...", "username": "...", "token": "..." },
182
+ "permissions": {
183
+ "mode": "readonly"
184
+ }
185
+ }
186
+ ```
187
+
188
+ Ask Claude to try creating an issue - it should be denied:
189
+ ```
190
+ Create a Jira issue in project TEST
191
+ ```
192
+
193
+ Expected: Error message about permission denied.
194
+
195
+ ### Test Virtual Actions
196
+
197
+ ```json
198
+ {
199
+ "permissions": {
200
+ "mode": "custom",
201
+ "whitelist": ["jira_read", "confluence_read"]
202
+ }
203
+ }
204
+ ```
205
+
206
+ Test that only read actions work.
207
+
208
+ ### Test Whitelist
209
+
210
+ ```json
211
+ {
212
+ "permissions": {
213
+ "mode": "custom",
214
+ "whitelist": ["jira_search_issues", "jira_get_issue"]
215
+ }
216
+ }
217
+ ```
218
+
219
+ Only those 2 tools should be available.
220
+
221
+ ---
222
+
223
+ ## Development Workflow
224
+
225
+ ### 1. Make Changes to Code
226
+
227
+ Edit files in `src/`:
228
+ ```bash
229
+ vim src/jira/tools.ts
230
+ ```
231
+
232
+ ### 2. Rebuild
233
+
234
+ ```bash
235
+ npm run build
236
+ ```
237
+
238
+ Or use watch mode:
239
+ ```bash
240
+ npm run watch
241
+ ```
242
+
243
+ ### 3. Restart Claude Desktop
244
+
245
+ - Quit Claude Desktop
246
+ - Start it again
247
+ - Test your changes
248
+
249
+ ### 4. Check Logs
250
+
251
+ **MacOS Logs:**
252
+ ```bash
253
+ tail -f ~/Library/Logs/Claude/mcp*.log
254
+ ```
255
+
256
+ **Windows Logs:**
257
+ ```
258
+ %APPDATA%\Claude\logs\
259
+ ```
260
+
261
+ Look for errors or debug output from your server.
262
+
263
+ ---
264
+
265
+ ## Debugging Tips
266
+
267
+ ### Enable Verbose Logging
268
+
269
+ Add console.error statements (they go to stderr, not stdout):
270
+
271
+ ```typescript
272
+ console.error("DEBUG: Tool called with args:", args);
273
+ ```
274
+
275
+ ### Test Individual Components
276
+
277
+ ```bash
278
+ # Test configuration loading
279
+ node -e "const {ConfigLoader} = require('./dist/config/loader.js'); console.log(ConfigLoader.load())"
280
+
281
+ # Test permission filter
282
+ node -e "const {PermissionFilter} = require('./dist/permissions/filter.js'); const f = new PermissionFilter({mode:'readonly',whitelist:[],blacklist:[]}); console.log(f.isToolAllowed('jira_search_issues'))"
283
+ ```
284
+
285
+ ### Run Unit Tests
286
+
287
+ ```bash
288
+ npm test
289
+ ```
290
+
291
+ ### Test Specific Test File
292
+
293
+ ```bash
294
+ node --test tests/permissions/filter.test.ts
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Common Issues
300
+
301
+ ### Issue: "Command not found"
302
+
303
+ **Solution:** Use absolute path in Claude Desktop config:
304
+ ```json
305
+ "args": ["/Users/yourname/projects/jicon/dist/index.js"]
306
+ ```
307
+
308
+ ### Issue: "No services configured"
309
+
310
+ **Solution:** Check your `.jicon.json` or environment variables are set correctly.
311
+
312
+ ### Issue: Server not appearing in Claude Desktop
313
+
314
+ **Solution:**
315
+ 1. Check config file syntax (valid JSON)
316
+ 2. Restart Claude Desktop completely
317
+ 3. Check logs for errors
318
+ 4. Verify the `command` path is correct
319
+
320
+ ### Issue: Permission denied errors
321
+
322
+ **Solution:** Check your `permissions` configuration in `.jicon.json`.
323
+
324
+ ### Issue: Changes not taking effect
325
+
326
+ **Solution:**
327
+ 1. Run `npm run build` after code changes
328
+ 2. Completely quit and restart Claude Desktop
329
+ 3. Clear Claude Desktop cache if needed
330
+
331
+ ---
332
+
333
+ ## Testing Checklist
334
+
335
+ Before committing changes:
336
+
337
+ - [ ] `npm run build` succeeds
338
+ - [ ] `npm test` passes
339
+ - [ ] Server starts without errors
340
+ - [ ] Can list tools via MCP Inspector
341
+ - [ ] Can execute tools in Claude Desktop
342
+ - [ ] Permission system works as expected
343
+ - [ ] Error messages are clear and helpful
344
+ - [ ] Config hierarchy works (project > home > env)
345
+
346
+ ---
347
+
348
+ ## Advanced: Testing with Multiple Configurations
349
+
350
+ Create a test script to quickly switch configs:
351
+
352
+ ```bash
353
+ #!/bin/bash
354
+ # test-config.sh
355
+
356
+ case $1 in
357
+ "full")
358
+ cp .jicon.json.example .jicon.json
359
+ ;;
360
+ "readonly")
361
+ cp .jicon.json.readonly .jicon.json
362
+ ;;
363
+ "custom")
364
+ cp .jicon.json.custom .jicon.json
365
+ ;;
366
+ *)
367
+ echo "Usage: ./test-config.sh [full|readonly|custom]"
368
+ exit 1
369
+ ;;
370
+ esac
371
+
372
+ echo "Switched to $1 mode. Restart Claude Desktop to apply."
373
+ ```
374
+
375
+ ---
376
+
377
+ ## Testing with CI/CD
378
+
379
+ For automated testing, you can use the MCP test utilities:
380
+
381
+ ```bash
382
+ # Run integration tests (coming soon)
383
+ npm run test:integration
384
+
385
+ # Test against mock Jira/Confluence servers
386
+ npm run test:e2e
387
+ ```
388
+
389
+ ---
390
+
391
+ ## Need Help?
392
+
393
+ - Check [CONTRIBUTING.md](CONTRIBUTING.md) for development guidelines
394
+ - See [README.md](README.md) for configuration examples
395
+ - Open an issue on GitHub for bugs
396
+ - Use GitHub Discussions for questions
397
+
398
+ ---
399
+
400
+ **Happy Testing! 🚀**
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Jicon Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,300 @@
1
+ # Jicon - Jira & Confluence MCP Server
2
+
3
+ [![npm version](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp.svg)](https://badge.fury.io/js/%40crypto512%2Fjicon-mcp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ > A comprehensive Model Context Protocol (MCP) server for seamless integration with Atlassian Jira and Confluence.
7
+
8
+ ## Quick Start
9
+
10
+ ```bash
11
+ # Run with npx (no installation required)
12
+ npx @crypto512/jicon-mcp
13
+
14
+ # Or install globally
15
+ npm install -g @crypto512/jicon-mcp
16
+ ```
17
+
18
+ ## What is Jicon?
19
+
20
+ Jicon is an MCP server that enables AI assistants like Claude to interact with your Jira and Confluence instances. It provides 28 powerful tools for:
21
+
22
+ - 🎫 **Jira**: Issue management, searching, project operations, Agile boards, sprints
23
+ - 📄 **Confluence**: Page management, content search, spaces, attachments, comments
24
+
25
+ ## Features at a Glance
26
+
27
+ ### Jira (15 Tools)
28
+ - Search issues with JQL
29
+ - Create, update, and transition issues
30
+ - Manage comments and links
31
+ - Access boards and sprints
32
+ - View projects and metadata
33
+
34
+ ### Confluence (13 Tools)
35
+ - Search content with CQL
36
+ - Create and update pages
37
+ - Navigate page hierarchies
38
+ - Manage attachments
39
+ - Add and view comments
40
+
41
+ ## Configuration
42
+
43
+ ### Configuration with `.jicon.json` (Recommended)
44
+
45
+ Jicon supports a flexible configuration hierarchy with permission control:
46
+
47
+ **Configuration Priority:**
48
+ 1. `.jicon.json` (project root) - **Highest priority**
49
+ 2. `$HOME/.config/jicon/jicon.json` (user config) - Medium priority
50
+ 3. Environment variables - Lowest priority (legacy)
51
+
52
+ **Create `.jicon.json` in your project root:**
53
+
54
+ ```json
55
+ {
56
+ "jira": {
57
+ "url": "https://jira.example.com",
58
+ "username": "your-email@example.com",
59
+ "token": "your-api-token"
60
+ },
61
+ "confluence": {
62
+ "url": "https://confluence.example.com",
63
+ "username": "your-email@example.com",
64
+ "token": "your-api-token"
65
+ },
66
+ "permissions": {
67
+ "mode": "full"
68
+ }
69
+ }
70
+ ```
71
+
72
+ **⚠️ Important:** Add `.jicon.json` to your `.gitignore` to avoid committing credentials!
73
+
74
+ ### Permission Modes
75
+
76
+ Control which tools are allowed to execute:
77
+
78
+ #### 1. **Full Access** (default)
79
+ ```json
80
+ { "permissions": { "mode": "full" } }
81
+ ```
82
+ All 28 tools are available.
83
+
84
+ #### 2. **Read-Only Mode**
85
+ ```json
86
+ { "permissions": { "mode": "readonly" } }
87
+ ```
88
+ Only read operations (18 tools: 10 Jira + 8 Confluence).
89
+
90
+ #### 3. **Custom Mode** with Virtual Actions
91
+
92
+ Simplify configuration with **virtual actions** that group related tools:
93
+
94
+ **Virtual Actions Available:**
95
+ - `jira_read` - All 10 Jira read tools
96
+ - `jira_write` - All 5 Jira write tools
97
+ - `jira_all` - All 15 Jira tools
98
+ - `confluence_read` - All 8 Confluence read tools
99
+ - `confluence_write` - All 5 Confluence write tools
100
+ - `confluence_all` - All 13 Confluence tools
101
+
102
+ **Example: Read-only access to both services**
103
+ ```json
104
+ {
105
+ "permissions": {
106
+ "mode": "custom",
107
+ "whitelist": ["jira_read", "confluence_read"]
108
+ }
109
+ }
110
+ ```
111
+
112
+ **Example: Full Jira + Confluence read-only**
113
+ ```json
114
+ {
115
+ "permissions": {
116
+ "mode": "custom",
117
+ "whitelist": ["jira_all", "confluence_read"]
118
+ }
119
+ }
120
+ ```
121
+
122
+ **Example: Specific tools only**
123
+ ```json
124
+ {
125
+ "permissions": {
126
+ "mode": "custom",
127
+ "whitelist": [
128
+ "jira_search_issues",
129
+ "jira_get_issue",
130
+ "jira_create_issue",
131
+ "confluence_get_page"
132
+ ]
133
+ }
134
+ }
135
+ ```
136
+
137
+ **Example: Blacklist dangerous operations**
138
+ ```json
139
+ {
140
+ "permissions": {
141
+ "mode": "custom",
142
+ "blacklist": ["confluence_delete_page"]
143
+ }
144
+ }
145
+ ```
146
+
147
+ See [`.jicon.json.example`](.jicon.json.example), [`.jicon.json.readonly`](.jicon.json.readonly), and [`.jicon.json.custom`](.jicon.json.custom) for more examples.
148
+
149
+ ### Environment Variables (Legacy)
150
+
151
+ For Claude Desktop, add to config file:
152
+
153
+ **MacOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
154
+
155
+ ```json
156
+ {
157
+ "mcpServers": {
158
+ "jicon": {
159
+ "command": "npx",
160
+ "args": ["-y", "@crypto512/jicon-mcp"],
161
+ "env": {
162
+ "JIRA_URL": "https://jira.example.com",
163
+ "JIRA_USERNAME": "your-email@example.com",
164
+ "JIRA_API_TOKEN": "your-api-token",
165
+ "CONFLUENCE_URL": "https://confluence.example.com",
166
+ "CONFLUENCE_USERNAME": "your-email@example.com",
167
+ "CONFLUENCE_API_TOKEN": "your-api-token"
168
+ }
169
+ }
170
+ }
171
+ }
172
+ ```
173
+
174
+ ## Example Usage
175
+
176
+ Once configured, you can ask Claude to:
177
+
178
+ - *"Find all high-priority bugs assigned to me in the PROJ project"*
179
+ - *"Create a new task for implementing the login feature"*
180
+ - *"Show me the current sprint's progress"*
181
+ - *"Update the API documentation page in Confluence"*
182
+ - *"Search for pages about authentication in the DOCS space"*
183
+
184
+ ## Documentation
185
+
186
+ - **[CLAUDE.md](CLAUDE.md)** - Complete functional specification
187
+ - **[TOOL_LIST.md](TOOL_LIST.md)** - Comprehensive tool reference with examples
188
+ - **[API Documentation](docs/api.md)** - Detailed API documentation (coming soon)
189
+
190
+ ## Tool Categories
191
+
192
+ ### Jira Tools
193
+ | Category | Tools |
194
+ |----------|-------|
195
+ | **Search & Retrieval** | `jira_search_issues`, `jira_get_issue`, `jira_get_issue_comments` |
196
+ | **Issue Management** | `jira_create_issue`, `jira_update_issue`, `jira_transition_issue` |
197
+ | **Collaboration** | `jira_add_comment`, `jira_link_issues`, `jira_get_issue_watchers` |
198
+ | **Projects** | `jira_list_projects`, `jira_get_project` |
199
+ | **Agile** | `jira_get_board`, `jira_get_sprints`, `jira_get_sprint_issues` |
200
+ | **Workflow** | `jira_get_transitions` |
201
+
202
+ ### Confluence Tools
203
+ | Category | Tools |
204
+ |----------|-------|
205
+ | **Search & Retrieval** | `confluence_search_content`, `confluence_get_page`, `confluence_get_page_by_title` |
206
+ | **Page Management** | `confluence_create_page`, `confluence_update_page`, `confluence_delete_page` |
207
+ | **Spaces** | `confluence_list_spaces`, `confluence_get_space` |
208
+ | **Navigation** | `confluence_get_page_children` |
209
+ | **Collaboration** | `confluence_add_comment`, `confluence_get_comments` |
210
+ | **Attachments** | `confluence_upload_attachment`, `confluence_list_attachments` |
211
+
212
+ ## Requirements
213
+
214
+ - Node.js 18 or higher
215
+ - Jira Server/Data Center or Jira Cloud instance
216
+ - Confluence Server/Data Center or Confluence Cloud instance
217
+ - Valid API tokens or Personal Access Tokens
218
+
219
+ ## Authentication
220
+
221
+ ### Jira/Confluence Cloud
222
+ Generate an API token from your Atlassian account:
223
+ 1. Go to https://id.atlassian.com/manage-profile/security/api-tokens
224
+ 2. Create a new API token
225
+ 3. Use your email as username and the token as password
226
+
227
+ ### Jira/Confluence Data Center
228
+ Generate a Personal Access Token (PAT):
229
+ 1. Go to your profile settings
230
+ 2. Navigate to "Personal Access Tokens"
231
+ 3. Create a new token with required permissions
232
+
233
+ ## Security Best Practices
234
+
235
+ - ✅ Store credentials in environment variables
236
+ - ✅ Use API tokens with minimal required permissions
237
+ - ✅ Regularly rotate API tokens
238
+ - ✅ Never commit credentials to version control
239
+ - ✅ Use read-only tokens for search/read operations
240
+
241
+ ## Development Status
242
+
243
+ - ✅ **Specification Complete** - Functional spec and tool list defined
244
+ - ✅ **Implementation Complete** - All 28 tools implemented
245
+ - ✅ **Testing** - 86 tests passing
246
+ - ✅ **Configuration System** - Flexible .jicon.json with permissions
247
+ - 📦 **Publishing** - Ready for npm publish
248
+
249
+ ## Roadmap
250
+
251
+ ### Phase 1: Core Implementation ✅ **COMPLETED**
252
+ - ✅ Project setup and structure
253
+ - ✅ Jira API client implementation (310 lines, 15 tools)
254
+ - ✅ Confluence API client implementation (281 lines, 13 tools)
255
+ - ✅ MCP server implementation (179 lines)
256
+ - ✅ Basic testing (86 tests, 100% pass rate)
257
+ - ✅ Configuration system (.jicon.json with hierarchy)
258
+ - ✅ Permission system (full, readonly, custom modes)
259
+ - ✅ Virtual actions (jira_read, jira_all, confluence_read, etc.)
260
+ - ✅ Development and contributing guides
261
+
262
+ ### Phase 2: Enhancement (In Progress)
263
+ - ✅ Advanced error handling (implemented)
264
+ - [ ] Rate limiting and caching
265
+ - [ ] Integration tests with mock servers
266
+ - ✅ Documentation examples (DEVELOPMENT.md added)
267
+ - [ ] CI/CD pipeline
268
+ - [ ] npm package publishing
269
+
270
+ ### Phase 3: Advanced Features (Planned)
271
+ - [ ] Bulk operations
272
+ - [ ] Custom field templates
273
+ - [ ] Webhook support
274
+ - [ ] Multi-instance support
275
+ - [ ] CLI tool for configuration testing
276
+ - [ ] Performance optimizations
277
+
278
+ ## Contributing
279
+
280
+ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.
281
+
282
+ ## License
283
+
284
+ MIT License - see [LICENSE](LICENSE) file for details.
285
+
286
+ ## Support
287
+
288
+ - 🐛 **Issues**: [GitHub Issues](https://github.com/crypto512/jicon/issues)
289
+ - 💬 **Discussions**: [GitHub Discussions](https://github.com/crypto512/jicon/discussions)
290
+ - 📖 **Documentation**: [GitHub Repository](https://github.com/crypto512/jicon)
291
+
292
+ ## Acknowledgments
293
+
294
+ - Built on [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic
295
+ - Powered by Atlassian APIs
296
+ - Inspired by the community's need for better Jira/Confluence integration
297
+
298
+ ---
299
+
300
+ **Made with ❤️ for developers who work with Jira and Confluence**