@crypto512/jicon-mcp 2.2.0 → 2.3.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 (143) hide show
  1. package/.env.example +2 -2
  2. package/README.md +16 -138
  3. package/TOOL_LIST.md +361 -296
  4. package/dist/config/constants.d.ts +15 -0
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +19 -0
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +7 -1
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +38 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +16 -0
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/formatters.d.ts +20 -0
  16. package/dist/confluence/formatters.d.ts.map +1 -1
  17. package/dist/confluence/formatters.js +74 -8
  18. package/dist/confluence/formatters.js.map +1 -1
  19. package/dist/confluence/tools.d.ts +8 -7
  20. package/dist/confluence/tools.d.ts.map +1 -1
  21. package/dist/confluence/tools.js +52 -31
  22. package/dist/confluence/tools.js.map +1 -1
  23. package/dist/credentials/extractor.d.ts +1 -2
  24. package/dist/credentials/extractor.d.ts.map +1 -1
  25. package/dist/credentials/extractor.js +21 -4
  26. package/dist/credentials/extractor.js.map +1 -1
  27. package/dist/credentials/index.d.ts +3 -2
  28. package/dist/credentials/index.d.ts.map +1 -1
  29. package/dist/credentials/index.js +3 -2
  30. package/dist/credentials/index.js.map +1 -1
  31. package/dist/index.js +43 -20
  32. package/dist/index.js.map +1 -1
  33. package/dist/jira/activity-tools.d.ts +8 -11
  34. package/dist/jira/activity-tools.d.ts.map +1 -1
  35. package/dist/jira/activity-tools.js +91 -27
  36. package/dist/jira/activity-tools.js.map +1 -1
  37. package/dist/jira/client.d.ts +12 -0
  38. package/dist/jira/client.d.ts.map +1 -1
  39. package/dist/jira/client.js +35 -0
  40. package/dist/jira/client.js.map +1 -1
  41. package/dist/jira/formatters.d.ts +58 -0
  42. package/dist/jira/formatters.d.ts.map +1 -1
  43. package/dist/jira/formatters.js +80 -11
  44. package/dist/jira/formatters.js.map +1 -1
  45. package/dist/jira/tools.d.ts +30 -12
  46. package/dist/jira/tools.d.ts.map +1 -1
  47. package/dist/jira/tools.js +127 -37
  48. package/dist/jira/tools.js.map +1 -1
  49. package/dist/permissions/tool-registry.d.ts +6 -6
  50. package/dist/permissions/tool-registry.d.ts.map +1 -1
  51. package/dist/permissions/tool-registry.js +4 -3
  52. package/dist/permissions/tool-registry.js.map +1 -1
  53. package/dist/session/context.d.ts +81 -0
  54. package/dist/session/context.d.ts.map +1 -0
  55. package/dist/session/context.js +107 -0
  56. package/dist/session/context.js.map +1 -0
  57. package/dist/session/index.d.ts +12 -0
  58. package/dist/session/index.d.ts.map +1 -0
  59. package/dist/session/index.js +22 -0
  60. package/dist/session/index.js.map +1 -0
  61. package/dist/session/manager.d.ts +155 -0
  62. package/dist/session/manager.d.ts.map +1 -0
  63. package/dist/session/manager.js +285 -0
  64. package/dist/session/manager.js.map +1 -0
  65. package/dist/tempo/client.d.ts +14 -0
  66. package/dist/tempo/client.d.ts.map +1 -1
  67. package/dist/tempo/client.js +55 -0
  68. package/dist/tempo/client.js.map +1 -1
  69. package/dist/tempo/formatters.d.ts +13 -0
  70. package/dist/tempo/formatters.d.ts.map +1 -1
  71. package/dist/tempo/formatters.js +106 -20
  72. package/dist/tempo/formatters.js.map +1 -1
  73. package/dist/tempo/tools.d.ts +10 -9
  74. package/dist/tempo/tools.d.ts.map +1 -1
  75. package/dist/tempo/tools.js +188 -33
  76. package/dist/tempo/tools.js.map +1 -1
  77. package/dist/tempo/types.d.ts +20 -6
  78. package/dist/tempo/types.d.ts.map +1 -1
  79. package/dist/transport/http.d.ts +20 -3
  80. package/dist/transport/http.d.ts.map +1 -1
  81. package/dist/transport/http.js +171 -15
  82. package/dist/transport/http.js.map +1 -1
  83. package/dist/transport/types.d.ts +2 -0
  84. package/dist/transport/types.d.ts.map +1 -1
  85. package/dist/transport/types.js.map +1 -1
  86. package/dist/utils/buffer-tools.d.ts +46 -722
  87. package/dist/utils/buffer-tools.d.ts.map +1 -1
  88. package/dist/utils/buffer-tools.js +303 -158
  89. package/dist/utils/buffer-tools.js.map +1 -1
  90. package/dist/utils/content-buffer.d.ts +10 -31
  91. package/dist/utils/content-buffer.d.ts.map +1 -1
  92. package/dist/utils/content-buffer.js +12 -86
  93. package/dist/utils/content-buffer.js.map +1 -1
  94. package/dist/utils/jicon-help.d.ts +3 -3
  95. package/dist/utils/jicon-help.d.ts.map +1 -1
  96. package/dist/utils/jicon-help.js +163 -101
  97. package/dist/utils/jicon-help.js.map +1 -1
  98. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  99. package/dist/utils/plantuml/tools.js +8 -7
  100. package/dist/utils/plantuml/tools.js.map +1 -1
  101. package/dist/utils/response-formatter.d.ts +12 -2
  102. package/dist/utils/response-formatter.d.ts.map +1 -1
  103. package/dist/utils/response-formatter.js +85 -13
  104. package/dist/utils/response-formatter.js.map +1 -1
  105. package/dist/utils/sandbox/formatters.d.ts +25 -0
  106. package/dist/utils/sandbox/formatters.d.ts.map +1 -0
  107. package/dist/utils/sandbox/formatters.js +690 -0
  108. package/dist/utils/sandbox/formatters.js.map +1 -0
  109. package/dist/utils/sandbox/helpers.d.ts +16 -0
  110. package/dist/utils/sandbox/helpers.d.ts.map +1 -0
  111. package/dist/utils/sandbox/helpers.js +252 -0
  112. package/dist/utils/sandbox/helpers.js.map +1 -0
  113. package/dist/utils/sandbox/index.d.ts +19 -0
  114. package/dist/utils/sandbox/index.d.ts.map +1 -0
  115. package/dist/utils/sandbox/index.js +269 -0
  116. package/dist/utils/sandbox/index.js.map +1 -0
  117. package/dist/utils/sandbox/schema.d.ts +55 -0
  118. package/dist/utils/sandbox/schema.d.ts.map +1 -0
  119. package/dist/utils/sandbox/schema.js +39 -0
  120. package/dist/utils/sandbox/schema.js.map +1 -0
  121. package/dist/utils/sandbox/types.d.ts +179 -0
  122. package/dist/utils/sandbox/types.d.ts.map +1 -0
  123. package/dist/utils/sandbox/types.js +8 -0
  124. package/dist/utils/sandbox/types.js.map +1 -0
  125. package/dist/utils/schemas/confluence.d.ts +41 -0
  126. package/dist/utils/schemas/confluence.d.ts.map +1 -0
  127. package/dist/utils/schemas/confluence.js +105 -0
  128. package/dist/utils/schemas/confluence.js.map +1 -0
  129. package/dist/utils/schemas/index.d.ts +66 -0
  130. package/dist/utils/schemas/index.d.ts.map +1 -0
  131. package/dist/utils/schemas/index.js +107 -0
  132. package/dist/utils/schemas/index.js.map +1 -0
  133. package/dist/utils/schemas/jira.d.ts +49 -0
  134. package/dist/utils/schemas/jira.d.ts.map +1 -0
  135. package/dist/utils/schemas/jira.js +151 -0
  136. package/dist/utils/schemas/jira.js.map +1 -0
  137. package/dist/utils/schemas/tempo.d.ts +29 -0
  138. package/dist/utils/schemas/tempo.d.ts.map +1 -0
  139. package/dist/utils/schemas/tempo.js +72 -0
  140. package/dist/utils/schemas/tempo.js.map +1 -0
  141. package/dist/utils/xhtml/error-locator.js +5 -5
  142. package/dist/utils/xhtml/error-locator.js.map +1 -1
  143. package/package.json +10 -9
package/.env.example CHANGED
@@ -1,9 +1,9 @@
1
1
  # Jira Configuration
2
2
  JIRA_URL=https://jira.example.com
3
- JIRA_USERNAME=your-email@example.com
3
+ # JIRA_USERNAME=your-email@example.com # Optional: omit for Data Center PAT
4
4
  JIRA_API_TOKEN=your-jira-api-token
5
5
 
6
6
  # Confluence Configuration
7
7
  CONFLUENCE_URL=https://confluence.example.com
8
- CONFLUENCE_USERNAME=your-email@example.com
8
+ # CONFLUENCE_USERNAME=your-email@example.com # Optional: omit for Data Center PAT
9
9
  CONFLUENCE_API_TOKEN=your-confluence-api-token
package/README.md CHANGED
@@ -66,10 +66,8 @@ Add to your `claude_desktop_config.json`:
66
66
  "args": ["-y", "@crypto512/jicon-mcp"],
67
67
  "env": {
68
68
  "JIRA_URL": "https://jira.example.com",
69
- "JIRA_USERNAME": "your-email@example.com",
70
69
  "JIRA_API_TOKEN": "your-api-token",
71
70
  "CONFLUENCE_URL": "https://confluence.example.com",
72
- "CONFLUENCE_USERNAME": "your-email@example.com",
73
71
  "CONFLUENCE_API_TOKEN": "your-api-token"
74
72
  }
75
73
  }
@@ -89,8 +87,9 @@ Add to `~/.claude/settings.json` or project `.mcp.json`:
89
87
  "args": ["-y", "@crypto512/jicon-mcp"],
90
88
  "env": {
91
89
  "JIRA_URL": "https://jira.example.com",
92
- "JIRA_USERNAME": "your-email@example.com",
93
- "JIRA_API_TOKEN": "your-api-token"
90
+ "JIRA_API_TOKEN": "your-api-token",
91
+ "CONFLUENCE_URL": "https://confluence.example.com",
92
+ "CONFLUENCE_API_TOKEN": "your-api-token"
94
93
  }
95
94
  }
96
95
  }
@@ -110,8 +109,9 @@ Add to `opencode.jsonc` in your project root or `~/.config/opencode/opencode.jso
110
109
  "command": ["npx", "-y", "@crypto512/jicon-mcp"],
111
110
  "environment": {
112
111
  "JIRA_URL": "https://jira.example.com",
113
- "JIRA_USERNAME": "your-email@example.com",
114
- "JIRA_API_TOKEN": "your-api-token"
112
+ "JIRA_API_TOKEN": "your-api-token",
113
+ "CONFLUENCE_URL": "https://confluence.example.com",
114
+ "CONFLUENCE_API_TOKEN": "your-api-token"
115
115
  }
116
116
  }
117
117
  }
@@ -144,6 +144,7 @@ All configuration is done through environment variables.
144
144
  | `JICON_HTTP_PORT` | number | `3000` | HTTP server port |
145
145
  | `JICON_HTTP_HOST` | string | `0.0.0.0` | HTTP bind address |
146
146
  | `JICON_HTTP_BASE_PATH` | string | `/mcp` | MCP endpoint path |
147
+ | `JICON_SESSION_TIMEOUT_MS` | number | `1800000` | Session timeout in milliseconds (default: 30 min). Also controls HTTP server timeouts for SSE connections. MCP clients should use matching timeout. |
147
148
 
148
149
  **Note:** Tempo uses the same Jira credentials - no separate configuration needed.
149
150
 
@@ -209,7 +210,7 @@ This configuration allows:
209
210
  }
210
211
  ```
211
212
 
212
- **Virtual actions** (for whitelist): `jira_read`, `jira_write`, `jira_all`, `confluence_read`, `confluence_write`, `confluence_draft`, `confluence_all`, `tempo_read`, `tempo_write`, `tempo_all`
213
+ **Virtual actions** (for whitelist): `jira_read`, `jira_write`, `jira_all`, `confluence_read`, `confluence_write`, `confluence_write_home`, `confluence_draft`, `confluence_all`, `tempo_read`, `tempo_write`, `tempo_all`
213
214
 
214
215
  **Individual tools** (for blacklist): See [TOOL_LIST.md](TOOL_LIST.md) for all tool names
215
216
 
@@ -258,7 +259,7 @@ Jicon supports two transport modes:
258
259
  | Mode | Use Case | Protocol |
259
260
  |------|----------|----------|
260
261
  | **stdio** (default) | Local usage with `npx`, Claude Desktop, Claude Code | Standard I/O |
261
- | **http** | Containers, Kubernetes, remote servers | HTTP with StreamableHTTP |
262
+ | **http** | Containers, remote servers | HTTP with StreamableHTTP |
262
263
 
263
264
  For containerized deployments, use HTTP mode which exposes the MCP protocol over HTTP.
264
265
 
@@ -324,6 +325,9 @@ docker-compose logs -f
324
325
  | `JICON_HTTP_PORT` | `3000` | HTTP server port |
325
326
  | `JICON_HTTP_HOST` | `0.0.0.0` | HTTP bind address |
326
327
  | `JICON_HTTP_BASE_PATH` | `/mcp` | MCP endpoint path |
328
+ | `JICON_SESSION_TIMEOUT_MS` | `1800000` | Session and SSE connection timeout (30 min) |
329
+
330
+ **Important:** MCP clients using streamable-http should set their `timeout` to match `JICON_SESSION_TIMEOUT_MS` for stable SSE connections.
327
331
 
328
332
  ### HTTP Endpoints
329
333
 
@@ -357,130 +361,10 @@ JICON_TRANSPORT=http \
357
361
  npm start
358
362
  ```
359
363
 
360
- ### Kubernetes Deployment
361
-
362
- ```yaml
363
- apiVersion: v1
364
- kind: Secret
365
- metadata:
366
- name: jicon-secrets
367
- type: Opaque
368
- stringData:
369
- jira-url: "https://jira.example.com"
370
- jira-token: "your-api-token"
371
- ---
372
- apiVersion: apps/v1
373
- kind: Deployment
374
- metadata:
375
- name: jicon-mcp
376
- spec:
377
- replicas: 1
378
- selector:
379
- matchLabels:
380
- app: jicon-mcp
381
- template:
382
- metadata:
383
- labels:
384
- app: jicon-mcp
385
- spec:
386
- containers:
387
- - name: jicon-mcp
388
- image: jicon-mcp:latest
389
- ports:
390
- - containerPort: 3000
391
- env:
392
- - name: JICON_TRANSPORT
393
- value: "http"
394
- - name: JIRA_URL
395
- valueFrom:
396
- secretKeyRef:
397
- name: jicon-secrets
398
- key: jira-url
399
- - name: JIRA_API_TOKEN
400
- valueFrom:
401
- secretKeyRef:
402
- name: jicon-secrets
403
- key: jira-token
404
- livenessProbe:
405
- httpGet:
406
- path: /health
407
- port: 3000
408
- initialDelaySeconds: 5
409
- periodSeconds: 30
410
- readinessProbe:
411
- httpGet:
412
- path: /ready
413
- port: 3000
414
- initialDelaySeconds: 5
415
- periodSeconds: 10
416
- resources:
417
- requests:
418
- memory: "128Mi"
419
- cpu: "100m"
420
- limits:
421
- memory: "256Mi"
422
- cpu: "500m"
423
- ---
424
- apiVersion: v1
425
- kind: Service
426
- metadata:
427
- name: jicon-mcp
428
- spec:
429
- selector:
430
- app: jicon-mcp
431
- ports:
432
- - port: 3000
433
- targetPort: 3000
434
- ```
435
-
436
364
  ### LibreChat Integration
437
365
 
438
366
  [LibreChat](https://www.librechat.ai/) supports MCP servers via the `streamable-http` transport type. This allows LibreChat to connect to jicon running in a container.
439
367
 
440
- **Basic configuration in `librechat.yaml`:**
441
-
442
- ```yaml
443
- mcpServers:
444
- jicon:
445
- type: streamable-http
446
- url: http://jicon-mcp:3000/mcp
447
- timeout: 60000
448
- initTimeout: 10000
449
- serverInstructions: |
450
- Jicon MCP server provides access to Jira, Confluence, and Tempo.
451
- Use jicon_help tool to learn about available workflows.
452
- ```
453
-
454
- **With environment variables for credentials:**
455
-
456
- Jicon reads credentials from its own environment variables. When running with Docker Compose, pass them to the jicon container:
457
-
458
- ```yaml
459
- # docker-compose.yml
460
- version: "3.8"
461
-
462
- services:
463
- jicon-mcp:
464
- build: .
465
- environment:
466
- - JICON_TRANSPORT=http
467
- - JIRA_URL=${JIRA_URL}
468
- - JIRA_API_TOKEN=${JIRA_API_TOKEN}
469
- - CONFLUENCE_URL=${CONFLUENCE_URL}
470
- - CONFLUENCE_API_TOKEN=${CONFLUENCE_API_TOKEN}
471
- - JICON_PERMISSIONS_MODE=${JICON_PERMISSIONS_MODE:-readonly}
472
-
473
- librechat:
474
- image: ghcr.io/danny-avila/librechat:latest
475
- depends_on:
476
- - jicon-mcp
477
- volumes:
478
- - ./librechat.yaml:/app/librechat.yaml
479
- # ... other LibreChat configuration
480
- ```
481
-
482
- **Per-user credentials with `customUserVars`:**
483
-
484
368
  Each LibreChat user can use their own Jira/Confluence credentials via HTTP headers. Configure `customUserVars` in LibreChat to prompt users for their credentials:
485
369
 
486
370
  ```yaml
@@ -489,7 +373,7 @@ mcpServers:
489
373
  jicon:
490
374
  type: streamable-http
491
375
  url: http://jicon-mcp:3000/mcp
492
- timeout: 60000
376
+ timeout: 180000
493
377
  initTimeout: 10000
494
378
  headers:
495
379
  X-Jira-Url: "{{JIRA_URL}}"
@@ -525,13 +409,6 @@ mcpServers:
525
409
 
526
410
  Both URL and Token headers must be provided together for each service. Per-request credentials take priority over environment variables.
527
411
 
528
- **Timeout recommendations:**
529
-
530
- | Setting | Value | Description |
531
- |---------|-------|-------------|
532
- | `timeout` | `60000` | Request timeout (60s) - allows for large searches |
533
- | `initTimeout` | `10000` | Initialization timeout (10s) - jicon starts quickly |
534
-
535
412
  For more details, see [LibreChat MCP documentation](https://www.librechat.ai/docs/features/mcp).
536
413
 
537
414
  ## API Limitations
@@ -594,8 +471,9 @@ All data-heavy tools (search, list, get) return **buffered responses** for effic
594
471
 
595
472
  **Buffer capabilities:**
596
473
  - Read content in chunks or search within buffered data
597
- - Server-side data transformation: filtering, grouping, sorting, aggregations
598
- - Export to multiple formats: XHTML tables, lists, CSV, JSON, Markdown
474
+ - JavaScript-based transformation: write custom code to filter, transform, aggregate data
475
+ - Built-in helpers: groupBy, sum, avg, min, max, unique, date utilities
476
+ - Generate Confluence tables and lists with auto-linking and conditional formatting
599
477
  - Track buffer origin with metadata (resource type, query, title)
600
478
 
601
479
  ### Safe Confluence Editing (Review Workflow)