MCP Atlassian Node Server
Production-ready MCP server for Atlassian Jira and Confluence, providing tools for issue management, page retrieval, and content operations.
README
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.
- Service-specific Basic auth via
- Config validation with clear startup errors.
- HTTP layer powered by
undici:- retries with exponential backoff
- respects
Retry-After - request/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
>=20 - npm
Install
npm i
Configuration
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-mcp
Environment 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/api - Server/Data Center default:
/rest/api - Custom context path example:
/confluence/rest/api
- Cloud default:
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 dev
Build:
npm run build
Start built server:
npm start
Manual smoke test (direct API calls):
npm run build
npm run manual:test
MCP 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_token
Different Basic tokens:
JIRA_EMAIL=you@company.com
JIRA_API_TOKEN=jira_api_token
CONFLUENCE_EMAIL=you@company.com
CONFLUENCE_API_TOKEN=confluence_api_token
Global fallback for both services:
ATLASSIAN_EMAIL=you@company.com
ATLASSIAN_API_TOKEN=global_api_token
# or
ATLASSIAN_BEARER_TOKEN=global_bearer_token
Corporate proxy / self-signed cert support
To disable TLS certificate verification explicitly:
SSL_VERIFY=false
Default 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).
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。