Atlassian Rovo MCP
Overview
The Atlassian Rovo MCP connector enables your Leena AI Agents to integrate with your organization's Atlassian Cloud platform, facilitating automated work item management, content creation, and search workflows across Jira and Confluence.
The Atlassian Rovo MCP Server is Atlassian's official remote Model Context Protocol (MCP) server that securely exposes Jira, Confluence, and other Atlassian Cloud apps as tools for AI agents. Leena AI connects to it through the MCP connector, allowing Agents to create and update Jira issues, search and author Confluence pages, and automate cross-product workflows — all while respecting each user's existing Atlassian access controls and permissions.
API Details
Leena AI integrates with the Atlassian Rovo MCP Server via the Model Context Protocol (MCP) over Streamable HTTP.
MCP server URL: https://mcp.atlassian.com/v1/mcp
The legacy endpointhttps://mcp.atlassian.com/v1/sseis deprecated by Atlassian and will no longer be supported after June 30, 2026. Usehttps://mcp.atlassian.com/v1/mcp.
Documentation link: https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/
Setup
The Atlassian Rovo MCP Server is connected through Leena AI's MCP connector. The connector supports the following authentication types: No authentication, Custom auth (static headers), Admin OAuth 2.0, and User OAuth 2.0.
For Atlassian Rovo MCP, use one of the two methods Atlassian supports:
- User OAuth 2.0 (recommended): Atlassian's OAuth 2.1 browser-based authorization. Each employee signs in with their own Atlassian account, and every action runs with that user's existing Jira/Confluence permissions.
- Custom auth (API token): A static
Authorizationheader using an Atlassian API token (Basic) or a service account API key (Bearer). All actions run with the permissions of the token's account. This method must be enabled by your Atlassian organization admin.
Prerequisites
Before setting up the Atlassian Rovo MCP connector, ensure you have:
- An Atlassian Cloud site with the products you want to automate (Jira, Confluence, etc.)
- Atlassian Rovo MCP Server access allowed for your organization (organization admins can control this from Atlassian Administration > Security > Atlassian Rovo MCP server settings)
- For API token authentication: API token authentication for the Rovo MCP Server enabled by your Atlassian organization admin
- Atlassian accounts (with appropriate product permissions) for the employees who will use the actions
- Access to your Leena AI workspace with connector management permissions
Get credentials
For User OAuth 2.0:
No API credentials need to be created upfront. The Atlassian Rovo MCP Server uses OAuth 2.1 — when the connection is set up, users are redirected to Atlassian's authorization page in the browser, where they sign in and approve access to their Atlassian apps. Authorization and token endpoints are discovered automatically from the MCP server, and access is limited to what each user can already see and do in Atlassian.
For Custom auth (API token):
Here is how to create an Atlassian API token:
- Log in to your Atlassian account and go to Manage your account > Security > API tokens (id.atlassian.com)
- Click Create API token (choose a scoped token if you want to restrict it to specific apps and scopes)
- Give the token a name and expiry, and select the required scopes for the tools you plan to use
- Copy and securely store the token (it is displayed only once)
- Note the email address of the Atlassian account the token belongs to
- Build the header value by Base64-encoding the string
[email protected]:your_api_token
Alternatively, an organization admin can create a service account and generate an API key with the required scopes; this is passed as a Bearer token instead of Basic authentication.
Add connection
Here is how to add a connection on Leena AI:
- Log in to your Leena AI workspace
- Navigate to Settings > Integrations
- Search for "Custom MCP" and select it from the list to add its new connector
- Give the connection a name (for example, "Atlassian Rovo MCP")
- Start configuring the connector
- MCP remote URL: The Atlassian Rovo MCP Server URL —
https://mcp.atlassian.com/v1/mcp - Authentication type: Select "User OAuth 2.0" (recommended) or "Custom auth" for API token authentication
- MCP remote URL: The Atlassian Rovo MCP Server URL —
- For User OAuth 2.0, fill in the OAuth fields:
- Redirect URI: The callback URL for the OAuth flow (auto-generated by Leena AI)
- Client ID: OAuth client ID
- Client secret: OAuth client secret
- For Custom auth, fill in:
-
Authentication headers: Headers in JSON format, for example:
{ "Authorization": "Basic <base64 of [email protected]:your_api_token>" }or, when using a service account API key:
{ "Authorization": "Bearer <service_account_api_key>" }
-
- Complete the OAuth flow and save the configuration
- Click Connect in Leena AI for the Atlassian Rovo MCP connection
- You'll be redirected to Atlassian's authorization page
- Sign in to your Atlassian account if prompted
- Click Accept to grant access to your Atlassian apps
- You'll be redirected back to Leena AI with a successful connection
- The connector will be saved
- Once the connection is authorized, the available actions are fetched automatically from the Atlassian Rovo MCP Server and can be selected while building skills (workflows)
With User OAuth 2.0, each employee authorizes their own Atlassian account the first time an action runs on their behalf. If a user hasn't connected yet, Leena AI shares an authorization link so they can sign in to Atlassian.
Actions
Actions for this connector are discovered dynamically from the Atlassian Rovo MCP Server. The list of actions available in your workspace reflects the authentication method used and the Atlassian apps and permissions granted during authorization. All actions accept JSON input matching the tool's schema, and every action runs with the authenticated user's existing Atlassian permissions.
The following key actions are supported for the Atlassian Rovo MCP connector:
getJiraIssue
Retrieves the details of a Jira issue by its ID or key. The Agent can leverage the skill (workflow), which has been designed to fetch issue details from Jira, once the user raises a query to do so. Here are some common use cases:
- Status Check: Get the current status and assignee of a ticket
- Issue Summary: Summarize an issue's description and comments for the user
- Field Lookup: Read specific fields (priority, labels, resolution) before taking further action
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Issue ID/Key | The issue ID or key (e.g., PROJ-123 or 10000) |
Optional
| Name | Description |
|---|---|
| Fields | List of issue fields to return; defaults to summary, description, status, issue type, priority, labels, components, assignee, reporter, created, updated, resolution, and project. Pass "*all" for every field, or include "comment" to fetch issue comments |
| Expand | Additional issue details to expand in the response (e.g., renderedFields or names) |
| Properties | Issue property keys to include in the response |
| Fields By Keys | Whether fields in the request are referenced by field keys instead of IDs |
| Fail Fast | Whether to fail quickly when some fields cannot be loaded instead of partially returning data |
| Update History | Whether to update the user's recently viewed history for this issue request |
| Response Content Format | Content format for body content — markdown for simplified plain text or adf (Atlassian Document Format) |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"issueIdOrKey": "PROJ-123",
"fields": ["summary", "status", "assignee", "priority"],
"responseContentFormat": "markdown"
}Response
The action returns the issue details including:
- Issue ID and key
- Requested fields (summary, description, status, issue type, priority, labels, assignee, reporter, created/updated dates, resolution, project)
- Comments (when requested via fields)
searchJiraIssuesUsingJql
Searches Jira issues using a JQL (Jira Query Language) query. This action can be leveraged by the Leena AI Orchestrator/Agent to find issues matching specific criteria. Here are some common use cases:
- My Open Tickets: Find all open issues assigned to the requesting user
- Sprint Review: List issues updated in the current sprint
- Escalation Check: Find high-priority unresolved bugs in a project
- Reporting: Retrieve issues created within a date range for summaries
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| JQL | The JQL query string used to filter issues |
Optional
| Name | Description |
|---|---|
| Fields | List of issue fields to return for each matching issue; same defaults as getJiraIssue |
| Max Results | Maximum number of issues to return (50–100) |
| Next Page Token | Page token to fetch the next page of results |
| Search Result Mode | issues (default) to return matching issues, count to return only the total count, all for both |
| Response Content Format | Content format for body content — markdown or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"jql": "project = PROJ AND status = 'In Progress' AND assignee = currentUser() ORDER BY updated DESC",
"maxResults": 50,
"fields": ["summary", "status", "priority", "assignee"]
}Response
The action returns a list of matching Jira issues, each containing:
- Issue ID and key
- Requested fields (summary, status, priority, assignee, etc.)
- Pagination token for the next page (when more results are available)
- Total count (when the count mode is requested)
createJiraIssue
Creates a new issue in a Jira project. The Agent can leverage the skill (workflow), which has been designed to create a Jira issue, once the user raises a query to do so. Here are some common use cases:
- Ticket Raising: Create a bug, task, or story from an employee's request
- HR/IT Requests: Convert conversational requests into trackable work items
- Follow-ups: Create action items from meeting or conversation summaries
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Project Key | The key of the project in which the issue will be created |
| Issue Type Name | The issue type (e.g., Task, Bug, Story) |
| Summary | The title/summary of the issue |
Optional
| Name | Description |
|---|---|
| Description | Issue description — plain text/Markdown (default) or an ADF document when the content format is set to adf |
| Assignee Account ID | Atlassian account ID of the assignee (use lookupJiraAccountId to find it) |
| Parent | Parent issue key (for subtasks) |
| Additional Fields | JSON object for any other Jira field — priority, labels, components, fix versions, custom fields (e.g., {"priority": {"name": "High"}, "labels": ["bug"]}) |
| Transition | Workflow transition (by ID) to apply during creation |
| Content Format | Content format for body content — markdown (default) or adf |
| Response Content Format | Content format for body content in the response — markdown or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"projectKey": "PROJ",
"issueTypeName": "Task",
"summary": "Laptop replacement request for new joiner",
"description": "Employee needs a laptop replacement. Please process by Friday.",
"assignee_account_id": "5b10ac8d82e05b22cc7d4ef5",
"additional_fields": {
"priority": { "name": "High" },
"labels": ["it-support"]
}
}Response
Upon successful creation, the action returns the created issue details including:
- Issue ID and key
- Issue URL
- Created field values
editJiraIssue
Updates fields on an existing Jira issue. The Agent can leverage the skill (workflow), which has been designed to modify an existing Jira issue, once the user provides the details to be updated. Here are some common use cases:
- Detail Updates: Change summary, description, or priority of a ticket
- Reassignment: Update the assignee of an issue
- Labelling: Add or update labels and components
- Field Cleanup: Clear a field (e.g., resolution) by passing an explicit null
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Issue ID/Key | The issue ID or key (e.g., PROJ-123 or 10000) |
| Fields | JSON object of fields to set, keyed by field name or custom field ID; pass null for a field to clear its value |
Optional
| Name | Description |
|---|---|
| Content Format | Content format for body content — markdown (default) or adf |
| Response Content Format | Content format for body content in the response — markdown or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"issueIdOrKey": "PROJ-123",
"fields": {
"summary": "Updated: Laptop replacement request",
"priority": { "name": "Highest" },
"labels": ["it-support", "urgent"]
}
}Response
Upon successful update, the action returns the updated issue with its default read fields (summary, description, status, issue type, priority, labels, components, assignee, reporter, created, updated, resolution, project).
transitionJiraIssue
Moves a Jira issue to a new status by executing a workflow transition. The Agent can leverage the skill (workflow), which has been designed to transition a Jira issue, once the user specifies the issue and target state. Here are some common use cases:
- Close Tickets: Move resolved requests to Done
- Start Work: Move a ticket to In Progress when an agent picks it up
- Approvals: Advance issues through approval workflow states
Use the getTransitionsForJiraIssue action first to list the transition IDs available for the issue in its current status.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Issue ID/Key | The issue ID or key (e.g., PROJ-123 or 10000) |
| Transition | Object containing the workflow transition ID to execute (e.g., {"id": "31"}) |
Optional
| Name | Description |
|---|---|
| Fields | JSON object of fields to set during the transition |
| Update | JSON object of update operations to apply during the transition |
| History Metadata | Metadata describing the actor/cause of the transition for issue history |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"issueIdOrKey": "PROJ-123",
"transition": { "id": "31" }
}Response
Upon successful transition, the action returns confirmation that the issue was moved to the new status.
addCommentToJiraIssue
Adds a new comment to a Jira issue, or updates an existing comment. The Agent can leverage the skill (workflow), which has been designed to comment on Jira issues, once the user raises a query to do so. Here are some common use cases:
- Status Updates: Post progress updates on a ticket on the user's behalf
- Conversation Sync: Add context captured in a chat to the relevant issue
- Restricted Notes: Add comments visible only to a specific group or role
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Issue ID/Key | The issue ID or key (e.g., PROJ-123 or 10000) |
| Comment Body | The text of the comment |
Optional
| Name | Description |
|---|---|
| Comment ID | ID of an existing comment to update; if omitted, a new comment is added |
| Comment Visibility | Restricts the comment's visibility, with parameters: type (group or role) and value |
| Content Format | Content format for body content — markdown (default) or adf |
| Response Content Format | Content format for body content in the response — markdown or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"issueIdOrKey": "PROJ-123",
"commentBody": "The replacement laptop has been dispatched and will be delivered by Friday.",
"commentVisibility": {
"type": "role",
"value": "Administrators"
}
}Response
Upon successful creation or update, the action returns the comment details including:
- Comment ID
- Comment body
- Author and timestamps
getConfluencePage
Retrieves a Confluence page or blog post by its ID, including the body content. The Agent can leverage the skill (workflow), which has been designed to fetch Confluence content, once the user raises a query to do so. Here are some common use cases:
- Content Lookup: Fetch a policy or process page to answer an employee's question
- Summarization: Read a page so the Agent can summarize it for the user
- Pre-update Read: Fetch the current body before updating a page
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Page ID | The page or blog post ID, or a Confluence tiny link ID (the encoded part from /wiki/x/ URLs) |
Optional
| Name | Description |
|---|---|
| Content Type | Type of content — page (default) or blog |
| Content Format | Format of the returned body — html (structured Confluence HTML), markdown, or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"pageId": "123456789",
"contentFormat": "markdown"
}Response
The action returns the page details including:
- Page ID and title
- Space information
- Body content in the requested format
- Version information
searchConfluenceUsingCql
Searches Confluence content (pages, blog posts, comments, attachments) using CQL (Confluence Query Language). This action can be leveraged by the Leena AI Orchestrator/Agent to locate content matching specific criteria. Here are some common use cases:
- Knowledge Lookup: Find pages by title or text for an employee's query
- Space Audit: List pages modified recently in a specific space
- Content Discovery: Find pages created by a specific user or carrying a label
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| CQL | The CQL query string (common fields: title, text, space, type, creator, label, lastmodified; content types: page, blogpost, comment, attachment) |
Optional
| Name | Description |
|---|---|
| CQL Context | CQL context for narrowing the search scope (e.g., space key) |
| Limit | Maximum results to return (default 25, maximum 250) |
| Cursor | Pagination cursor for fetching the next page |
| Next | Whether to include the next page link |
| Prev | Whether to include the previous page link |
| Expand | Properties to expand in the response |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"cql": "title ~ \"leave policy\" AND type = page AND space = HR",
"limit": 25
}Response
The action returns a list of matching Confluence content items, each containing:
- Content ID, title, and type
- Space information
- Links to the content
- Pagination cursor (when more results are available)
createConfluencePage
Creates a new Confluence page or blog post. The Agent can leverage the skill (workflow), which has been designed to create Confluence content, once the user raises a query to do so. Here are some common use cases:
- Documentation: Create meeting notes, policy drafts, or process documents from conversations
- Knowledge Capture: Publish resolved-query summaries as knowledge articles
- Draft Creation: Create draft pages for review before publishing
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Space ID | The numeric space ID; a space key (e.g., "ENG") is also accepted and resolved automatically |
| Body | The page body content (structured HTML, Markdown, or ADF depending on the content format) |
Optional
| Name | Description |
|---|---|
| Title | The page or blog post title |
| Content Type | Type of content — page (default) or blog |
| Parent ID | ID of the parent to nest the new page under (pages only) |
| Status | current (published, default) or draft (unpublished) |
| Subtype | Page subtype — live for live docs (pages only) |
| Is Private | Whether to make the page private |
| Content Format | Format of the supplied body — html, markdown, or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"spaceId": "HR",
"title": "Work From Home Policy - FAQ",
"body": "# Work From Home Policy - FAQ\n\nThis page summarizes the most frequently asked questions about the WFH policy.",
"contentFormat": "markdown",
"status": "draft"
}Response
Upon successful creation, the action returns the created page details including:
- Page ID and title
- Space information
- Page URL
- Status (current/draft) and version information
updateConfluencePage
Updates an existing Confluence page or blog post. The Agent can leverage the skill (workflow), which has been designed to modify Confluence content, once the user provides the details to be updated. Here are some common use cases:
- Content Refresh: Update outdated sections of a policy or FAQ page
- Append Updates: Add new information to an existing page
- Retitle/Move: Change a page's title or move it under a different parent
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Cloud ID | The Atlassian Cloud ID or site URL (e.g., your-domain.atlassian.net) |
| Page ID | The page or blog post ID, or a Confluence tiny link ID |
| Body | The new page body content (structured HTML, Markdown, or ADF depending on the content format) |
Optional
| Name | Description |
|---|---|
| Title | New title for the page |
| Content Type | Type of content — page (default) or blog |
| Space ID | Space ID |
| Parent ID | ID of the parent to move the page under (pages only) |
| Status | Page status — current (default) or draft |
| Version Message | Message describing the change, stored with the new version |
| Include Body | Whether to include the page body in the response (default false) |
| Content Format | Format of the supplied body — html, markdown, or adf |
Here is a sample JSON input:
{
"cloudId": "your-domain.atlassian.net",
"pageId": "123456789",
"title": "Work From Home Policy - FAQ (Updated)",
"body": "# Work From Home Policy - FAQ\n\nUpdated for the 2026 policy revision.",
"contentFormat": "markdown",
"versionMessage": "Updated for 2026 policy revision"
}Response
Upon successful update, the action returns the updated page details including:
- Page ID and title
- New version information
- Page URL
- Updated body (when Include Body is true)
Other available actions
In addition to the key actions above, the following actions are discovered from the Atlassian Rovo MCP Server and can be used in skills (workflows). Availability depends on the authentication method and the Atlassian apps enabled for your organization.
Common
| Action | Description |
|---|---|
| atlassianUserInfo | Retrieves the current authenticated user's Atlassian account information |
| getAccessibleAtlassianResources | Lists accessible Atlassian sites with their Cloud IDs (used by other actions) |
Jira
| Action | Description |
|---|---|
| getTransitionsForJiraIssue | Lists workflow transitions available for an issue in its current status |
| getVisibleJiraProjects | Lists Jira projects accessible to the user |
| getJiraProjectIssueTypesMetadata | Lists issue types available in a Jira project |
| getJiraIssueTypeMetaWithFields | Gets create-field metadata for a project and issue type |
| getJiraIssueRemoteIssueLinks | Lists remote (web) links on a Jira issue |
| getIssueLinkTypes | Lists available issue link types |
| createIssueLink | Creates a link between two Jira issues |
| lookupJiraAccountId | Finds Jira user account IDs by name or email |
| addWorklogToJiraIssue | Adds a time-tracking worklog to a Jira issue |
Confluence
| Action | Description |
|---|---|
| getConfluenceSpaces | Lists Confluence spaces |
| getPagesInConfluenceSpace | Lists pages within a space |
| getConfluencePageDescendants | Lists child pages under a parent page |
| getConfluencePageFooterComments | Lists footer comments on a page |
| getConfluencePageInlineComments | Lists inline comments on a page |
| getConfluenceCommentChildren | Lists replies to a comment |
| createConfluenceFooterComment | Creates a footer comment on a page, or a reply to a comment |
| createConfluenceInlineComment | Creates an inline comment tied to selected text on a page |
Rovo Search
| Action | Description |
|---|---|
| search | Searches Jira and Confluence content using Rovo Search with a natural-language query |
| fetch | Fetches the details of a Jira issue or Confluence page by ARI (Atlassian Resource Identifier) |
Teamwork Graph (Beta)
| Action | Description |
|---|---|
| getTeamworkGraphContext | Retrieves connected context for work items from Atlassian Teamwork Graph |
| getTeamworkGraphObject | Fetches all data for objects using ARIs or URLs |
| addTeamworkGraphContext | Adds relationships between objects in Teamwork Graph |
Compass (available with OAuth authentication only)
| Action | Description |
|---|---|
| getCompassComponent | Gets Compass component details by ID |
| getCompassComponents | Searches or lists Compass components |
| getCompassComponentActivityEvents | Lists recent activity events for a component |
| getCompassComponentLabels | Gets labels of a component |
| getCompassComponentTypes | Lists available component types |
| getCompassCustomFieldDefinitions | Lists custom field definitions |
| getCompassComponentsOwnedByMyTeams | Lists components owned by the user's teams |
| createCompassComponent | Creates a Compass component |
| createCompassComponentRelationship | Creates a relationship between components |
| createCompassCustomFieldDefinition | Creates a custom field definition |
Jira Service Management Operations (available with API token authentication only)
| Action | Description |
|---|---|
| getJsmOpsAlerts | Retrieves operations alerts by ID, alias, or search |
| getJsmOpsScheduleInfo | Lists on-call schedules or current/next responders |
| getJsmOpsTeamInfo | Lists operations teams and their details |
| updateJsmOpsAlert | Performs alert actions such as acknowledge, close, or escalate |
Bitbucket Cloud (available with API token authentication only)
| Action | Description |
|---|---|
| bitbucketWorkspace | Gets workspace details |
| bitbucketRepository | Gets repository details and content |
| bitbucketUser | Gets the user's pull requests |
| bitbucketPullRequest | Gets, creates, merges, approves, or comments on pull requests |
| bitbucketRepoContent | Gets branches, commits, and files; creates branches and commits |
| bitbucketPipeline | Gets pipeline details and logs; runs or manages pipelines |
| bitbucketDeployment | Gets deployment information |
| bitbucketEnvironment | Gets, creates, updates, or deletes deployment environments |
Updated about 16 hours ago
