Jira & Confluence MCP Server
     
A Model Context Protocol (MCP) server that connects AI assistants to Jira and Confluence.
Features
- 🔍 Search & View - Query Jira issues with JQL and Confluence pages with CQL
- ✏️ Create & Edit - Add new issues and pages, update existing content
- 🎨 Rich Formatting - Automatically converts AI-generated Markdown to ADF (Atlassian Document Format) for beautiful, native-looking content in Jira and Confluence
- 🔒 Safe Operations - No delete operations—read-heavy with controlled write access
- 🚀 Easy Setup - One-command integration with OpenCode, GitHub Copilot, Claude Desktop, and more
- 🔐 Secure - Uses Atlassian API tokens with optional TLS configuration for corporate networks
AI Agent Skill
Installation
Copy and paste this prompt to your LLM agent (Claude Code, AmpCode, Cursor, etc.):
Install and configure the Jira & Confluence CLI agent skill by following the instructions here:
https://raw.githubusercontent.com/thamaraiselvam/mcp-jira-confluence/main/docs/agent-skill-setup.md
MCP Server
Add to OpenCode CLI
Quick Add (Interactive - Recommended)
Use OpenCode's interactive MCP add command:
opencode mcp add
Then follow the prompts:
┌ Add MCP server
│
◇ Enter MCP server name
│ jira-confluence
│
◇ Select MCP server type
│ Local
│
◇ Enter command to run
│ npx mcp-jira-confluence
After adding, edit ~/.config/opencode/opencode.json to add your credentials:
{
"mcp": {
"jira-confluence": {
"type": "local",
"command": ["npx", "mcp-jira-confluence"],
"environment": {
"ATLASSIAN_URL": "https://your-org.atlassian.net",
"ATLASSIAN_EMAIL": "your.email@example.com",
"ATLASSIAN_API_TOKEN": "your-api-token",
"IGNORE_TLS_ERRORS": "true"
}
}
}
}
Get your API token from Atlassian API Tokens.
Manual Configuration
Create or edit ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira-confluence": {
"type": "local",
"command": ["npx", "mcp-jira-confluence"],
"environment": {
"ATLASSIAN_URL": "https://your-org.atlassian.net",
"ATLASSIAN_EMAIL": "your.email@example.com",
"ATLASSIAN_API_TOKEN": "your-api-token",
"IGNORE_TLS_ERRORS": "true"
}
}
}
}
Get your API token from Atlassian API Tokens.
Usage in OpenCode
After configuration, use natural prompts to interact with Jira and Confluence:
Search and Query: `` Show me all high-priority bugs in the AUTH project What are the open issues assigned to me in Jira? Search Confluence for API documentation in the DEV space ``
View and Analyze: `` Get details of issue PROJ-123 Show me the latest comments on PROJ-456 What's in the "Architecture Decisions" Confluence page? ``
Create and Update: `` Create a new bug in Jira: The login page shows a 500 error when... Update PROJ-789 to mark it as in progress Add a comment to PROJ-101: "Fixed in latest deployment" ``
Workflow: `` What transitions are available for PROJ-234? Move PROJ-567 to Done status ``
The AI will automatically use the Jira and Confluence tools when it detects you're asking about issues, projects, or documentation.
Other MCP Clients
GitHub Copilot CLI
Create or edit ~/.config/github-copilot/mcp.json:
{
"mcpServers": {
"jira-confluence": {
"command": "npx",
"args": ["mcp-jira-confluence"],
"env": {
"ATLASSIAN_URL": "https://your-org.atlassian.net",
"ATLASSIAN_EMAIL": "your.email@example.com",
"ATLASSIAN_API_TOKEN": "your-api-token",
"IGNORE_TLS_ERRORS": "true"
}
}
}
}
Claude Desktop & VS Code
Same configuration format. For Claude Desktop, edit your Claude config file. For VS Code, add to .vscode/mcp.json.
Connect to Running Server
If you prefer to run the server manually, use this configuration:
{
"mcpServers": {
"jira-confluence": {
"type": "http",
"url": "http://127.0.0.1:9339/mcp"
}
}
}
Quick Start (Manual Usage)
If you prefer to run the server manually instead of auto-starting:
- Create
.envfile in your home directory or project root:
# ~/.env or current directory
ATLASSIAN_URL=https://your-org.atlassian.net
ATLASSIAN_EMAIL=your.email@example.com
ATLASSIAN_API_TOKEN=your-api-token
IGNORE_TLS_ERRORS=true
Get your API token from Atlassian API Tokens.
- Run with npx:
npx mcp-jira-confluence
Server runs on http://127.0.0.1:9339 by default.
Available Tools
Confluence
search_confluence- Search pages with CQLget_confluence_page- Read page contentcreate_confluence_page- Create pages from Markdownupdate_confluence_page- Update pages from Markdownadd_confluence_comment- Add commentsget_confluence_page_versions- Read version historycheck_confluence_permissions- Check permissions
Jira
jira_search- Search issues with JQLjira_get_issue- Read issue detailsjira_create_issue- Create issues from Markdownjira_update_issue- Update issue fieldsjira_transition_issue- Change workflow statusjira_get_transitions- List available transitionsjira_add_comment- Add a Markdown comment to an issuejira_update_comment- Update an existing comment on an issue
CLI Usage
The same package also ships a command-line interface, so you can drive Jira and Confluence straight from a terminal, a shell script, or a Claude skill — without an MCP client. Every MCP tool above has a matching CLI command, grouped under jira and confluence.
The CLI shares the single mcp-jira-confluence entry point — there is no separate executable. Invoke it as <entry> <group> <command>, where <group> is jira or confluence. With no group, the same entry point starts the MCP server instead.
It reads the same environment variables as the server (ATLASSIAN_, or service-specific JIRA_ / CONFLUENCE_*). Set them in your shell or a .env file.
Run it with npx (no install needed):
npx -y mcp-jira-confluence@latest --help
Installed the package globally (
npm install -g mcp-jira-confluence@latest)? Drop thenpx -y …@latestprefix and callmcp-jira-confluence <group> <command>directly. The examples below use the npx form.
# List all command groups and commands
npx -y mcp-jira-confluence@latest --help
# Per-command help (shows required/optional arguments)
npx -y mcp-jira-confluence@latest jira create-issue --help
# --- Jira ---
npx -y mcp-jira-confluence@latest jira search --jql "status = 'In Progress'" --limit 10
npx -y mcp-jira-confluence@latest jira get-issue PROJ-123
npx -y mcp-jira-confluence@latest jira create-issue \
--projectKey PROJ --issueType Story \
--summary "New story" --description ./description.md \
--priority High --labels "backend,urgent"
# Update plain fields as JSON, and/or the description from a Markdown file:
npx -y mcp-jira-confluence@latest jira update-issue PROJ-123 --fields '{"summary":"Updated title"}'
npx -y mcp-jira-confluence@latest jira update-issue PROJ-123 --descriptionFile ./description.md
npx -y mcp-jira-confluence@latest jira transition-issue PROJ-123 "In Progress"
npx -y mcp-jira-confluence@latest jira get-transitions PROJ-123
npx -y mcp-jira-confluence@latest jira add-comment PROJ-123 ./comment.md
npx -y mcp-jira-confluence@latest jira update-comment PROJ-123 100042 ./comment.md
# --- Confluence ---
npx -y mcp-jira-confluence@latest confluence search --cql "type=page AND title~'Roadmap'"
npx -y mcp-jira-confluence@latest confluence get-page 12345
npx -y mcp-jira-confluence@latest confluence create-page \
--spaceKey ENG --title "Design Notes" --markdownContent ./notes.md
npx -y mcp-jira-confluence@latest confluence update-page 12345 "New Title" ./notes.md
npx -y mcp-jira-confluence@latest confluence add-comment 12345 ./comment.md
npx -y mcp-jira-confluence@latest confluence get-page-versions 12345 --limit 5
npx -y mcp-jira-confluence@latest confluence check-permissions
Notes:
- Arguments can be passed as named flags (
--summary "...") or as positionals in the order shown by--help. - Markdown rich-text content is supplied as a path to a Markdown file, not as an inline string — this keeps multi-line content reliable across shells. This applies to: Confluence
create-page/update-pagebodies andadd-comment; Jiracreate-issuedescription,add-comment/update-comment, andupdate-issue --descriptionFile. (BREAKING: inline Markdown for these arguments is no longer accepted.) update-issuetakes a JSON--fieldsobject for plain fields and/or a--descriptionFilefor the description (the file wins if both set a description); at least one is required.- Markdown is converted exactly as the MCP server does — to HTML for Confluence and to ADF for Jira. The file's raw Markdown is passed to the API layer, which performs the conversion.
- Add
--jsonto any command to print the raw result as JSON for scripting; the default is a human-readable summary. - Commands exit
0on success and non-zero on any failure (missing argument, missing config, or API error). - Like the MCP server, the CLI has no delete operations.
Configuration
Optional Variables
# Custom port (default: 9339)
MCP_PORT=8080
# Service-specific credentials (overrides ATLASSIAN_*)
CONFLUENCE_URL=https://your-confluence.atlassian.net
CONFLUENCE_API_TOKEN=confluence-token
JIRA_URL=https://your-jira.atlassian.net
JIRA_API_TOKEN=jira-token
# Project/Space scoping
CONFLUENCE_SPACE_KEY=MYSPACE
JIRA_PROJECT_KEY=PROJ
# Corporate network
IGNORE_TLS_ERRORS=true
# Debug logging
VERBOSE=true
Note: When using the command configuration approach, set variables in the env object. When running manually with npx, use a .env file.
Troubleshooting
Manual Testing
Run the server manually to test your configuration:
npx mcp-jira-confluence
Check server health: ``bash curl http://127.0.0.1:9339/health ``
Common Issues
- Connection refused: Check VPN/proxy and URLs in your configuration
- TLS errors: Add
"IGNORE_TLS_ERRORS": "true"to theenvobject - Authentication errors: Verify your API token at Atlassian API Tokens
Development
Clone and validate: ``bash git clone https://github.com/thamaraiselvam/mcp-jira-confluence cd mcp-jira-confluence npm install npm run build npm run validate ``
License
MIT











