MCP Atlassian Node Server
Provides tools for interacting with Atlassian services, including Jira and Confluence, via generic proxy calls and high-level wrappers.
Offers tools for searching, retrieving pages, children, attachments, and downloading attachments from Confluence, including page content normalization with plain text extraction.
Provides tools for searching issues, retrieving issue details, listing projects, managing transitions, adding comments, fetching users, and downloading attachments from Jira.
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., "@MCP Atlassian Node Serversearch for open Jira issues in project ENG"
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.
MCP Atlassian Node Server
Production-ready MCP (Model Context Protocol) server for Atlassian Jira and Confluence built with Node.js + TypeScript.
Features
Node 20+ TypeScript ESM server.
MCP tools for generic Jira/Confluence proxy calls and high-level wrappers.
Auth modes:
Service-specific Basic auth via
JIRA_EMAIL+JIRA_API_TOKENandCONFLUENCE_EMAIL+CONFLUENCE_API_TOKEN.Service-specific Bearer auth via
JIRA_BEARER_TOKENandCONFLUENCE_BEARER_TOKEN.Global fallback auth via
ATLASSIAN_*when service-specific values are not provided.
Config validation with clear startup errors.
HTTP layer powered by
undici:retries with exponential backoff
respects
Retry-Afterrequest/response logging with token redaction
configurable timeout (30s)
max response size limit (10 MB)
Security controls:
base URL allowlist derived from config (SSRF prevention)
path prefix validation for Jira/Confluence APIs
optional TLS verification bypass for self-signed corporate cert chains (
SSL_VERIFY=false)
Confluence normalization helpers:
plain text extraction from storage HTML
normalized document object with metadata and attachments
Requirements
Node.js
>=20npm
Install
npm iConfiguration
Copy .env.example and set values:
ATLASSIAN_SITE=https://company.atlassian.net
JIRA_BASE_URL=https://jira.company.internal
JIRA_API_VERSION=2
CONFLUENCE_BASE_URL=https://wiki.company.internal
CONFLUENCE_API_PREFIX=/rest/api
# Optional global fallback auth
ATLASSIAN_EMAIL=you@company.com
ATLASSIAN_API_TOKEN=global_fallback_token
ATLASSIAN_BEARER_TOKEN=
# Jira auth
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=jira_api_token
JIRA_BEARER_TOKEN=
# Confluence auth
CONFLUENCE_EMAIL=you@company.com
CONFLUENCE_API_TOKEN=confluence_api_token
CONFLUENCE_BEARER_TOKEN=
SSL_VERIFY=true
USER_AGENT=jira-mcpEnvironment variables
ATLASSIAN_SITE(required): base site URL, e.g.https://company.atlassian.netJIRA_BASE_URL(optional): defaults toATLASSIAN_SITEJIRA_API_VERSION(optional,2/3, default2): Jira REST API version used by Jira tools and relativejira_requestpathsCONFLUENCE_BASE_URL(optional): defaults toATLASSIAN_SITECONFLUENCE_API_PREFIX(optional): Confluence REST prefix.Cloud default:
/wiki/rest/apiServer/Data Center default:
/rest/apiCustom context path example:
/confluence/rest/api
JIRA_BEARER_TOKEN(optional): Jira Bearer token, takes precedence for Jira requestsCONFLUENCE_BEARER_TOKEN(optional): Confluence Bearer token, takes precedence for Confluence requestsJIRA_EMAIL(optional): Jira Basic auth emailJIRA_API_TOKEN(optional): Jira Basic auth tokenCONFLUENCE_EMAIL(optional): Confluence Basic auth emailCONFLUENCE_API_TOKEN(optional): Confluence Basic auth tokenATLASSIAN_BEARER_TOKEN(optional): global Bearer fallback for any service without service-specific bearer tokenATLASSIAN_EMAIL(optional): global Basic auth email fallbackATLASSIAN_API_TOKEN(optional): global Basic auth token fallbackSSL_VERIFY(optional,true/false, defaulttrue)USER_AGENT(optional, defaultjira-mcp)
Run
Development:
npm run devBuild:
npm run buildStart built server:
npm startManual smoke test (direct API calls):
npm run build
npm run manual:testMCP Tools
Generic proxy tools
jira_requestconfluence_request
jira_request uses JIRA_API_VERSION when apiVersion is not provided.
Both return:
{
"status": 200,
"headers": {
"content-type": "application/json"
},
"body": {}
}Jira tools
jira_search_issuesjira_get_issuejira_get_projectjira_list_projectsjira_get_transitionsjira_transition_issuejira_add_commentjira_get_usersjira_download_attachment
jira_download_attachment:
input:
attachmentId, optionalmode(base64orfile)output always uses
{ status, headers, body }; for non-2xx Jira responses it still returns this shape with error details inbody
Confluence tools
confluence_get_pageconfluence_searchconfluence_get_childrenconfluence_get_page_contentconfluence_get_attachmentsconfluence_download_attachment
confluence_get_page_content returns:
original Confluence page payload
normalized
document
{
"id": "12345",
"title": "Page Title",
"url": "https://company.atlassian.net/wiki/spaces/ENG/pages/12345/Page+Title",
"spaceKey": "ENG",
"updatedAt": "2025-01-01T12:00:00.000Z",
"text": "Plain text extracted from storage HTML",
"html": "<p>Original storage HTML</p>",
"breadcrumbs": ["Parent", "Child"],
"labels": ["runbook"],
"attachments": [
{
"id": "att-1",
"title": "diagram.png",
"mediaType": "image/png",
"fileSize": 10240,
"downloadUrl": "https://company.atlassian.net/wiki/download/attachments/..."
}
]
}Authentication examples
Different servers, different tokens:
JIRA_BASE_URL=https://jira.company.internal
JIRA_API_VERSION=2
CONFLUENCE_BASE_URL=https://wiki.company.internal
CONFLUENCE_API_PREFIX=/rest/api
JIRA_BEARER_TOKEN=jira_bearer_token
CONFLUENCE_BEARER_TOKEN=confluence_bearer_tokenDifferent Basic tokens:
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=jira_api_token
CONFLUENCE_EMAIL=you@company.com
CONFLUENCE_API_TOKEN=confluence_api_tokenGlobal fallback for both services:
ATLASSIAN_EMAIL=you@company.com
ATLASSIAN_API_TOKEN=global_api_token
# or
ATLASSIAN_BEARER_TOKEN=global_bearer_tokenCorporate proxy / self-signed cert support
To disable TLS certificate verification explicitly:
SSL_VERIFY=falseDefault is secure verification (SSL_VERIFY=true).
Notes
Tokens are never printed in logs.
HTTP logs are emitted to
stderrso MCP stdio communication remains valid onstdout.HTTP 3xx redirects are treated as errors (
HTTP_REDIRECT) to surface auth/login redirect issues explicitly.If Confluence returns redirect to
login.actionwithfourohfour.action, setCONFLUENCE_API_PREFIXfor your deployment (commonly/rest/apifor Server/DC).If official MCP SDK loading fails, a minimal JSON-RPC stdio adapter starts automatically.
How to add to cursor:
{
"mcpServers": {
"atlassian": {
"command": "node",
"args": ["/your/path/to/JIRA_MCP/dist/index.js"],
"env": {
"ATLASSIAN_SITE": "https://company.atlassian.net",
"JIRA_BASE_URL": "https://jira.company.internal",
"JIRA_API_VERSION": "2",
"CONFLUENCE_BASE_URL": "https://wiki.company.internal",
"CONFLUENCE_API_PREFIX": "/rest/api",
"JIRA_BEARER_TOKEN": "jira_token",
"CONFLUENCE_BEARER_TOKEN": "confluence_token",
"SSL_VERIFY": "true"
}
}
}
}Publishing to npm
Имя пакета:
@alexbuzo/jira-mcp. Проверка:npm view @alexbuzo/jira-mcp.Вход в npm:
npm login(илиnpm login --registry=https://registry.npmjs.org/).Сборка перед публикацией выполняется автоматически скриптом
prepublishOnly(npm run build).Публикация (в
package.jsonзаданоpublishConfig.access: public):npm publishПри необходимости явно:
npm publish --access public.После публикации в Cursor через
npx:"command": "npx", "args": ["-y", "@alexbuzo/jira-mcp"], "env": { ... }
Или command: jira-mcp, если пакет установлен глобально (npm i -g @alexbuzo/jira-mcp — исполняемый файл по-прежнему называется jira-mcp).
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/abuzo/JIRA_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server