Atlassian
Use MCP Atlassian for Jira issues, Confluence documentation, and Bitbucket repositories.
Best use case
Atlassian is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use MCP Atlassian for Jira issues, Confluence documentation, and Bitbucket repositories.
Teams using Atlassian should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/atlassian/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Atlassian Compares
| Feature / Agent | Atlassian | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use MCP Atlassian for Jira issues, Confluence documentation, and Bitbucket repositories.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
<!-- ATLASSIAN:START -->
# Atlassian MCP Instructions
**CRITICAL**: Use MCP Atlassian for Jira issues, Confluence documentation, and Bitbucket repositories.
## Jira Operations
### Issue Management
```typescript
// Create issue
jira.issues.createIssue({
fields: {
project: { key: 'PROJ' },
summary: 'Bug in authentication',
description: 'Users cannot login with valid credentials',
issuetype: { name: 'Bug' },
priority: { name: 'High' }
}
})
// Update issue
jira.issues.updateIssue({
issueIdOrKey: 'PROJ-123',
fields: {
status: { name: 'In Progress' },
assignee: { accountId: 'user-id' }
}
})
// Get issue
jira.issues.getIssue({ issueIdOrKey: 'PROJ-123' })
// Search issues
jira.issueSearch.searchForIssuesUsingJql({
jql: 'project = PROJ AND status = "To Do" ORDER BY priority DESC'
})
// Add comment
jira.issueComments.addComment({
issueIdOrKey: 'PROJ-123',
body: 'Working on this issue'
})
```
### Transitions
```typescript
// Get transitions
const transitions = await jira.issues.getTransitions({ issueIdOrKey: 'PROJ-123' })
// Transition issue
jira.issues.doTransition({
issueIdOrKey: 'PROJ-123',
transition: { id: transitionId }
})
```
## Confluence Operations
### Page Management
```typescript
// Create page
confluence.content.createContent({
type: 'page',
title: 'API Documentation',
space: { key: 'DOCS' },
body: {
storage: {
value: '<h1>Introduction</h1><p>Content here</p>',
representation: 'storage'
}
}
})
// Update page
confluence.content.updateContent({
id: 'page-id',
type: 'page',
title: 'Updated Title',
version: { number: currentVersion + 1 },
body: {
storage: {
value: '<p>Updated content</p>',
representation: 'storage'
}
}
})
// Get page
confluence.content.getContentById({ id: 'page-id' })
// Search
confluence.search.search({
cql: 'type=page AND space=DOCS AND title~"API"'
})
```
### Attachments
```typescript
// Add attachment
confluence.content.createAttachment({
id: 'page-id',
file: fileBuffer,
filename: 'document.pdf'
})
// Get attachments
confluence.content.getAttachments({ id: 'page-id' })
```
## Bitbucket Operations
### Repository Management
```typescript
// Get repositories
bitbucket.repositories.list({ workspace: 'my-workspace' })
// Get repository
bitbucket.repositories.get({
workspace: 'my-workspace',
repo_slug: 'my-repo'
})
// Get branches
bitbucket.refs.listBranches({
workspace: 'my-workspace',
repo_slug: 'my-repo'
})
```
### Pull Requests
```typescript
// Create PR
bitbucket.pullrequests.create({
workspace: 'my-workspace',
repo_slug: 'my-repo',
title: 'Add new feature',
source: { branch: { name: 'feature/new-feature' } },
destination: { branch: { name: 'main' } },
description: 'Implements feature X'
})
// List PRs
bitbucket.pullrequests.list({
workspace: 'my-workspace',
repo_slug: 'my-repo',
state: 'OPEN'
})
// Approve PR
bitbucket.pullrequests.approve({
workspace: 'my-workspace',
repo_slug: 'my-repo',
pull_request_id: 123
})
```
## Common Patterns
### CI/CD Integration
```typescript
// Create issue on test failure
if (testsFailed) {
await jira.issues.createIssue({
fields: {
project: { key: 'PROJ' },
summary: `Test failure in ${testSuite}`,
description: `Tests failed with errors:\n${errors.join('\n')}`,
issuetype: { name: 'Bug' },
labels: ['ci-failure', 'automated']
}
})
}
```
### Documentation Sync
```typescript
// Sync CHANGELOG to Confluence
const changelog = fs.readFileSync('CHANGELOG.md', 'utf-8')
const html = markdownToConfluenceHtml(changelog)
await confluence.content.updateContent({
id: changelogPageId,
type: 'page',
title: 'Changelog',
version: { number: version + 1 },
body: { storage: { value: html, representation: 'storage' } }
})
```
### Sprint Planning
```typescript
// Get sprint tasks
const issues = await jira.issueSearch.searchForIssuesUsingJql({
jql: 'sprint = ACTIVE AND project = PROJ',
fields: ['summary', 'status', 'assignee', 'priority']
})
// Generate sprint report
const report = issues.issues.map(issue => ({
key: issue.key,
summary: issue.fields.summary,
status: issue.fields.status.name,
assignee: issue.fields.assignee?.displayName
}))
```
## Best Practices
✅ **DO:**
- Use JQL for complex Jira queries
- Cache project/user data
- Handle rate limits
- Use issue transitions properly
- Version Confluence pages correctly
- Link issues to commits/PRs
❌ **DON'T:**
- Create duplicate issues
- Skip issue validation
- Ignore rate limiting
- Hardcode issue keys
- Update without version check
- Store credentials in code
## Configuration
```json
{
"mcpServers": {
"atlassian": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-atlassian"],
"env": {
"JIRA_HOST": "your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token",
"CONFLUENCE_HOST": "your-domain.atlassian.net",
"CONFLUENCE_EMAIL": "your-email@example.com",
"CONFLUENCE_API_TOKEN": "your-api-token",
"BITBUCKET_WORKSPACE": "your-workspace",
"BITBUCKET_USERNAME": "your-username",
"BITBUCKET_APP_PASSWORD": "your-app-password"
}
}
}
}
```
**Setup:**
1. Generate API token at https://id.atlassian.com/manage-profile/security/api-tokens
2. For Bitbucket, create app password in account settings
3. Never commit credentials
<!-- ATLASSIAN:END -->Related Skills
Vectorizer
Use MCP Vectorizer as primary data source for project information instead of file reading.
Synap
Use MCP Synap for persistent task and data storage across context windows.
Supabase
Use MCP Supabase for database operations, authentication, and storage.
Serena
Use MCP Serena for AI-powered development assistance, code analysis, and intelligent automation.
Playwright
Use MCP Playwright for automated browser testing and web automation.
Notion
Use MCP Notion for documentation, task tracking, and knowledge management.
Memory
The rulebook memory system provides persistent context across AI sessions using hybrid search (BM25 keyword + HNSW vector) with zero native dependenci
Grafana
Use MCP Grafana for metrics visualization, alerting, and observability dashboards.
GitHub MCP
Monitor CI/CD workflows after every `git push` using GitHub MCP.
Figma
Use MCP Figma for design system integration, asset export, and design-to-code workflows.
Context7
Use MCP Context7 to access up-to-date library documentation before adding dependencies.
Zig
Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).