gojira-mcp
Provides tools for managing Atlassian Cloud administration, including project/scheme management, custom field admin, Jira automation CRUD, Assets (Insight) CMDB, JSM request type/SLA/queue config, Confluence space lifecycle, and org-admin APIs.
Manages Confluence spaces, including lifecycle operations such as creation, configuration, and deletion.
Provides tools for Jira administration, including project and scheme management, custom fields, automation rules, workflows, and filters/dashboards.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gojira-mcplist all Jira projects in our org"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gojira-mcp
Atlassian Cloud admin MCP server. Wraps the platform-administration surface
that the official Atlassian Rovo MCP deliberately omits — project/scheme
management, custom field admin, Jira automation CRUD, Assets (Insight) CMDB,
JSM request type / SLA / queue config, Confluence space lifecycle, and the
org-admin APIs at admin.atlassian.com.
Designed to run alongside the official Atlassian MCP in a single client session, not as a replacement.
Status
Stack | Node 22, TypeScript strict, Express 5, |
Transport | StreamableHTTP, per-session in-memory |
Auth | OAuth 2.1 to MCP clients; OAuth 2.0 3LO to Atlassian; per-user API token side-channel; org-admin API token (separate gate) |
Persistence | Redis (encrypted credentials, session state, rate buckets, operation journal, OAuth artifacts) |
Tool count | 170 across 13 permission groups |
Tests | 56 unit tests, all critical-path features covered |
Quickstart
1. Generate an encryption key
npm install
npm run generate-key
# copy the base64 string into TOKEN_ENCRYPTION_KEY in your .env2. Configure
cp .env.example .env
$EDITOR .envRequired at minimum:
ATLASSIAN_OAUTH_CLIENT_ID,ATLASSIAN_OAUTH_CLIENT_SECRETfrom the Atlassian developer consoleATLASSIAN_OAUTH_SCOPES— space-separated Atlassian OAuth scopes (must includeoffline_access)TOKEN_ENCRYPTION_KEY— output ofnpm run generate-keyALLOWED_ORIGINS—*for development, explicit origins for productionMCP_SERVER_URL— public URL of this server (callback must match)
See docs/deployment/environment-variables.md for the full list with defaults and gotchas.
3. Run
Locally (dev):
docker run --rm -p 6379:6379 redis:7-alpine # in one terminal
npm run dev # in anotherDocker (production):
docker compose up -d
# or with a Caddy TLS overlay:
docker compose -f docker-compose.yml -f docker-compose.caddy.yml up -dThe server listens on MCP_PORT (default 8081) with:
GET /health— unauthenticated liveness + Redis pingGET /.well-known/oauth-authorization-server— OAuth metadataPOST /register— RFC 7591 client registrationGET /authorize— OAuth 2.1 authorize entryPOST /token— token + refresh endpointPOST /revoke— token revocationGET /oauth/atlassian-callback— upstream callbackPOST|GET|DELETE /mcp— bearer-protected MCP transport
4. Verify
curl -fsS "http://localhost:8081/health" | jqThen point an MCP client (Claude Desktop, VS Code chat, Claude Code, Cursor)
at https://<host>/mcp. The client will discover the OAuth endpoints, walk
the consent flow with you against Atlassian, and start calling tools.
For first-time setup of the JSM/Assets tools, call gojira.bindApiToken
once to attach a per-user Atlassian API token.
Deployment patterns
One image, many configs. Each deployment shape below is a different
.env file pointing at the same gojira-mcp:latest image. Run as
many side-by-side instances as you need — different hostnames, ports,
audit channels, and tool surfaces, all isolated from each other.
The total tool count for each pattern is shown next to the pattern
name. Lower is better for model selection accuracy — see
docs/tools/overview.md.
Pattern | Tool count | Use case |
1 — Default safe (admin sandbox) | 145 | Single team's daily admin instance |
2 — Read-only audit | 81 | Compliance / forensic review |
3 — JSM/Assets specialist | 63 | Service-desk operators |
4 — Schemes/workflows admin | 62 | Jira config-changes only |
5 — Org-admin (separate host) | 31 |
|
6 — Multi-tenant (prod + sandbox) | 145 each | Two pinned instances side-by-side |
7 — Local development | 145 | Same as default safe + debug logs |
Pattern 1 — Default safe (admin sandbox) · 145 tools
Daily admin work, no destructive project deletion, no org-admin path. Good starting point for a single team's instance.
Active groups: utility, all read_* (10 groups), all write_* except
none excluded, plus the safe project surface — minus delete_projects
and admin_org.
ATLASSIAN_OAUTH_CLIENT_ID=...
ATLASSIAN_OAUTH_CLIENT_SECRET=...
ATLASSIAN_OAUTH_SCOPES=offline_access read:me read:account read:jira-work write:jira-work manage:jira-project manage:jira-configuration read:servicedesk-request write:servicedesk-request manage:servicedesk-customer
ATLASSIAN_PINNED_CLOUD_ID=<prod-cloud-id>
TOKEN_ENCRYPTION_KEY=<base64>
ALLOWED_ORIGINS=*
MCP_SERVER_URL=https://gojira.example.com
GOJIRA_DISABLED_GROUPS=delete_projects,admin_orgPattern 2 — Read-only audit · 81 tools
Every write_*, delete_projects, and admin_org group disabled.
Useful for compliance reviewers, incident investigators, or any flow
that must not mutate Atlassian state.
Active groups: utility + all 10 read_* groups.
GOJIRA_DISABLED_GROUPS=write_jsm_admin,write_assets,write_automation,write_customfields,write_projects,write_schemes,write_workflows,write_confluence_admin,delete_projects,write_agile,write_filters_dashboards,admin_org(Same auth/secret/cloud config as Pattern 1.)
Pattern 3 — JSM/Assets specialist · 63 tools
Service-desk operators who don't need automation rules, custom fields, schemes, workflows, agile, or filters/dashboards.
Active groups: utility, read_jsm_admin, write_jsm_admin,
read_assets, write_assets.
ATLASSIAN_OAUTH_SCOPES=offline_access read:me read:account read:jira-work write:jira-work read:servicedesk-request write:servicedesk-request manage:servicedesk-customer
GOJIRA_DISABLED_GROUPS=read_automation,write_automation,read_customfields,write_customfields,read_projects,write_projects,read_schemes,write_schemes,read_workflows,write_workflows,read_confluence_admin,write_confluence_admin,delete_projects,read_agile,write_agile,read_filters_dashboards,write_filters_dashboards,admin_orgPattern 4 — Schemes/workflows admin · 62 tools
Configuration-change instance for Jira admins. Excludes JSM, Assets, Confluence, agile, and filters/dashboards.
Active groups: utility, read_automation, write_automation,
read_customfields, write_customfields, read_projects,
write_projects, delete_projects, read_schemes, write_schemes,
read_workflows, write_workflows.
ATLASSIAN_OAUTH_SCOPES=offline_access read:me read:account read:jira-work write:jira-work manage:jira-project manage:jira-configuration
GOJIRA_DISABLED_GROUPS=read_jsm_admin,write_jsm_admin,read_assets,write_assets,read_confluence_admin,write_confluence_admin,read_agile,write_agile,read_filters_dashboards,write_filters_dashboards,admin_orgPattern 5 — Org-admin (separate instance, separate host) · 31 tools
Run on its own hostname/port. Only admin_org and utility tools
register. Audit goes to a separate channel.
Active groups: utility, admin_org.
ATLASSIAN_OAUTH_SCOPES=offline_access read:me read:account
ATLASSIAN_PINNED_CLOUD_ID=<prod-cloud-id>
GOJIRA_ENABLE_ORG_ADMIN=true
GOJIRA_ORG_ADMIN_TOKEN=<admin.atlassian.com api token>
GOJIRA_ORG_ID=<your-org-id>
GOJIRA_ORG_ADMIN_AUDIT_LOG_TARGET=file:/var/log/gojira/org-admin.log
GOJIRA_DISABLED_GROUPS=read_jsm_admin,write_jsm_admin,read_assets,write_assets,read_automation,write_automation,read_customfields,write_customfields,read_projects,write_projects,read_schemes,write_schemes,read_workflows,write_workflows,read_confluence_admin,write_confluence_admin,delete_projects,read_agile,write_agile,read_filters_dashboards,write_filters_dashboardsCaller verification still requires the calling user to be an org admin
on the Atlassian side; non-admins get INSUFFICIENT_PERMISSIONS even
on this instance.
Pattern 6 — Multi-tenant (prod + sandbox side-by-side) · 145 tools each
Two instances, same image, two compose stacks, two hostnames:
gojira.prod.example.com → ATLASSIAN_PINNED_CLOUD_ID=<prod cloudId>
gojira.sandbox.example.com → ATLASSIAN_PINNED_CLOUD_ID=<sandbox cloudId>A user with grants on both cloudIds can connect both as separate connectors in their MCP client; site pinning ensures each instance only ever talks to its own tenant.
Pattern 7 — Local development · 145 tools
ATLASSIAN_OAUTH_CLIENT_ID=...
ATLASSIAN_OAUTH_CLIENT_SECRET=...
ATLASSIAN_OAUTH_SCOPES=offline_access read:me read:account read:jira-work write:jira-work manage:jira-project manage:jira-configuration read:servicedesk-request write:servicedesk-request manage:servicedesk-customer
TOKEN_ENCRYPTION_KEY=<base64>
ALLOWED_ORIGINS=*
MCP_SERVER_URL=http://localhost:8081
GOJIRA_DISABLED_GROUPS=delete_projects,admin_org
LOG_LEVEL=debug
NODE_ENV=development
# no PINNED_CLOUD_ID — use the user's primary cloudIdDocumentation map
Architecture
OAuth
Tools
Deployment
Security
Operations
Development
Reference
Design properties
The features below are the things this server does that a naïve admin MCP typically gets wrong:
Per-user delegation. Every upstream Atlassian call is attributable to a real human; no service-account proxying.
End-to-end identity binding. Tools cannot accept a caller/requester field from the client; identity is derived from the bearer.
Encrypted-at-rest credentials. AES-256-GCM, unique IV per write, tampered blobs auto-purge.
Distributed refresh lock with compare-and-delete. No thundering herd at token expiry; no accidental unlock by a stale holder.
Atomic one-time-use for state, codes, and refresh artifacts (
GETDEL).OAuth error pass-through to MCP client's
redirect_uri— never a hung client on JSON 500.Allowlist-based query construction — no string concatenation of user input into upstream queries.
Fail-open rate limiting, fail-closed auth. Availability for non-security failures; never bypass identity.
Health endpoint outside the auth boundary — observability without privilege.
Token redaction in logs as defense in depth.
Rotating MCP refresh tokens with reuse detection. Family-tracked; presenting a previously-rotated RT while siblings are alive triggers full-family revocation + a
REFRESH_TOKEN_REUSEaudit event.Operation journal with prior-state snapshots and revert. Every destructive admin write captures
beforestate; revertible operations can be undone by replaying the inverse mutation as a new journaled op.Operator-controlled tool surface, least-privilege by default. Permission groups + the
admin_orggate are the runtime knobs.GOJIRA_DISABLED_GROUPSfilters the registered surface at session creation and again at dispatch. No client-side scope grammar to mismanage.Site pinning at deploy time.
ATLASSIAN_PINNED_CLOUD_IDrefuses any tool invocation whose target cloudId differs from the pinned value.Commit-positive consent on destructive writes. Tools without
commit: truereturn a JSON Patch dry-run; forgotten flag fails closed.Rate-limit-header-aware throttling.
X-RateLimit-NearLimittriggers proactive extra-token deduction;X-RateLimit-Resetsoft-caps the bucket until the future window.Three-tier auth strategy with explicit isolation of the org-admin path.
License
Internal / unlicensed. See package.json.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/windoze95/gojira-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server