@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.
- package/.env.example +2 -2
- package/README.md +16 -138
- package/TOOL_LIST.md +361 -296
- package/dist/config/constants.d.ts +15 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +19 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +7 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +38 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +16 -0
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/formatters.d.ts +20 -0
- package/dist/confluence/formatters.d.ts.map +1 -1
- package/dist/confluence/formatters.js +74 -8
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +8 -7
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +52 -31
- package/dist/confluence/tools.js.map +1 -1
- package/dist/credentials/extractor.d.ts +1 -2
- package/dist/credentials/extractor.d.ts.map +1 -1
- package/dist/credentials/extractor.js +21 -4
- package/dist/credentials/extractor.js.map +1 -1
- package/dist/credentials/index.d.ts +3 -2
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +3 -2
- package/dist/credentials/index.js.map +1 -1
- package/dist/index.js +43 -20
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +8 -11
- package/dist/jira/activity-tools.d.ts.map +1 -1
- package/dist/jira/activity-tools.js +91 -27
- package/dist/jira/activity-tools.js.map +1 -1
- package/dist/jira/client.d.ts +12 -0
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +35 -0
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +58 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +80 -11
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +30 -12
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +127 -37
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +6 -6
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +4 -3
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/session/context.d.ts +81 -0
- package/dist/session/context.d.ts.map +1 -0
- package/dist/session/context.js +107 -0
- package/dist/session/context.js.map +1 -0
- package/dist/session/index.d.ts +12 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +22 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +155 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +285 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/tempo/client.d.ts +14 -0
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +55 -0
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/formatters.d.ts +13 -0
- package/dist/tempo/formatters.d.ts.map +1 -1
- package/dist/tempo/formatters.js +106 -20
- package/dist/tempo/formatters.js.map +1 -1
- package/dist/tempo/tools.d.ts +10 -9
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +188 -33
- package/dist/tempo/tools.js.map +1 -1
- package/dist/tempo/types.d.ts +20 -6
- package/dist/tempo/types.d.ts.map +1 -1
- package/dist/transport/http.d.ts +20 -3
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +171 -15
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/types.d.ts +2 -0
- package/dist/transport/types.d.ts.map +1 -1
- package/dist/transport/types.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +46 -722
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +303 -158
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +10 -31
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +12 -86
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +3 -3
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +163 -101
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +8 -7
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +12 -2
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +85 -13
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/sandbox/formatters.d.ts +25 -0
- package/dist/utils/sandbox/formatters.d.ts.map +1 -0
- package/dist/utils/sandbox/formatters.js +690 -0
- package/dist/utils/sandbox/formatters.js.map +1 -0
- package/dist/utils/sandbox/helpers.d.ts +16 -0
- package/dist/utils/sandbox/helpers.d.ts.map +1 -0
- package/dist/utils/sandbox/helpers.js +252 -0
- package/dist/utils/sandbox/helpers.js.map +1 -0
- package/dist/utils/sandbox/index.d.ts +19 -0
- package/dist/utils/sandbox/index.d.ts.map +1 -0
- package/dist/utils/sandbox/index.js +269 -0
- package/dist/utils/sandbox/index.js.map +1 -0
- package/dist/utils/sandbox/schema.d.ts +55 -0
- package/dist/utils/sandbox/schema.d.ts.map +1 -0
- package/dist/utils/sandbox/schema.js +39 -0
- package/dist/utils/sandbox/schema.js.map +1 -0
- package/dist/utils/sandbox/types.d.ts +179 -0
- package/dist/utils/sandbox/types.d.ts.map +1 -0
- package/dist/utils/sandbox/types.js +8 -0
- package/dist/utils/sandbox/types.js.map +1 -0
- package/dist/utils/schemas/confluence.d.ts +41 -0
- package/dist/utils/schemas/confluence.d.ts.map +1 -0
- package/dist/utils/schemas/confluence.js +105 -0
- package/dist/utils/schemas/confluence.js.map +1 -0
- package/dist/utils/schemas/index.d.ts +66 -0
- package/dist/utils/schemas/index.d.ts.map +1 -0
- package/dist/utils/schemas/index.js +107 -0
- package/dist/utils/schemas/index.js.map +1 -0
- package/dist/utils/schemas/jira.d.ts +49 -0
- package/dist/utils/schemas/jira.d.ts.map +1 -0
- package/dist/utils/schemas/jira.js +151 -0
- package/dist/utils/schemas/jira.js.map +1 -0
- package/dist/utils/schemas/tempo.d.ts +29 -0
- package/dist/utils/schemas/tempo.d.ts.map +1 -0
- package/dist/utils/schemas/tempo.js +72 -0
- package/dist/utils/schemas/tempo.js.map +1 -0
- package/dist/utils/xhtml/error-locator.js +5 -5
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- 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
|
-
"
|
|
93
|
-
"
|
|
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
|
-
"
|
|
114
|
-
"
|
|
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,
|
|
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:
|
|
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
|
-
-
|
|
598
|
-
-
|
|
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)
|