Skip to main content
Glama

get_jira_transitions

Retrieve available workflow transitions for a Jira issue by specifying its issue key, enabling users to view and manage next steps in the issue's lifecycle with ease.

Instructions

Get available workflow transitions for a Jira issue

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
issue_keyYesThe issue key (e.g., PROJECT-123)

Implementation Reference

  • The primary handler function implementing the get_jira_transitions tool logic. It uses the JiraV3APIClient to fetch transitions and converts them to JiraTransitionResult models.
    async def get_jira_transitions(self, issue_key: str) -> List[JiraTransitionResult]:
        """Get available transitions for an issue using v3 REST API"""
        logger.info("Starting get_jira_transitions...")
    
        try:
            # Use v3 API client
            v3_client = self._get_v3_api_client()
            response_data = await v3_client.get_transitions(issue_id_or_key=issue_key)
    
            # Extract transitions from response
            transitions = response_data.get("transitions", [])
    
            # Convert to JiraTransitionResult objects maintaining compatibility
            results = [
                JiraTransitionResult(id=transition["id"], name=transition["name"])
                for transition in transitions
            ]
    
            logger.info(f"Found {len(results)} transitions for issue {issue_key}")
            return results
    
        except Exception as e:
            error_msg = f"Failed to get transitions for {issue_key}: {type(e).__name__}: {str(e)}"
            logger.error(error_msg, exc_info=True)
            print(error_msg)
            raise ValueError(error_msg)
  • Registration of the tool handler in the MCP server's call_tool method. This match statement dispatches calls to 'get_jira_transitions' to the JiraServer.get_jira_transitions method.
    case JiraTools.GET_TRANSITIONS.value:
        logger.info("About to AWAIT jira_server.get_jira_transitions...")
        issue_key = arguments.get("issue_key")
        if not issue_key:
            raise ValueError("Missing required argument: issue_key")
        result = await jira_server.get_jira_transitions(issue_key)
        logger.info("COMPLETED await jira_server.get_jira_transitions.")
  • The input schema definition for the get_jira_transitions tool, registered in the server's list_tools method.
    Tool(
        name=JiraTools.GET_TRANSITIONS.value,
        description="Get available workflow transitions for a Jira issue",
        inputSchema={
            "type": "object",
            "properties": {
                "issue_key": {
                    "type": "string",
                    "description": "The issue key (e.g., PROJECT-123)",
                }
            },
            "required": ["issue_key"],
        },
  • Supporting helper method in JiraV3APIClient that performs the actual HTTP request to Jira's /rest/api/3/issue/{issue}/transitions endpoint to retrieve available transitions.
    async def get_transitions(
        self,
        issue_id_or_key: str,
        expand: Optional[str] = None,
        transition_id: Optional[str] = None,
        skip_remote_only_condition: Optional[bool] = None,
        include_unavailable_transitions: Optional[bool] = None,
        sort_by_ops_bar_and_status: Optional[bool] = None,
    ) -> Dict[str, Any]:
        """
        Get available transitions for an issue using the v3 REST API.
    
        Returns either all transitions or a transition that can be performed by the user
        on an issue, based on the issue's status.
    
        Args:
            issue_id_or_key: Issue ID or key (required)
            expand: Expand additional transition fields in response
            transition_id: Get only the transition matching this ID
            skip_remote_only_condition: Skip remote-only conditions check
            include_unavailable_transitions: Include transitions that can't be performed
            sort_by_ops_bar_and_status: Sort transitions by operations bar and status
    
        Returns:
            Dictionary containing the transitions response with transition details
    
        Raises:
            ValueError: If the API request fails
        """
        if not issue_id_or_key:
            raise ValueError("issue_id_or_key is required")
    
        params = {
            "expand": expand,
            "transitionId": transition_id,
            "skipRemoteOnlyCondition": skip_remote_only_condition,
            "includeUnavailableTransitions": include_unavailable_transitions,
            "sortByOpsBarAndStatus": sort_by_ops_bar_and_status,
        }
    
        params = {k: v for k, v in params.items() if v is not None}
    
        endpoint = f"/issue/{issue_id_or_key}/transitions"
        logger.debug(
            f"Fetching transitions with v3 API endpoint: {endpoint} with params: {params}"
        )
        response_data = await self._make_v3_api_request("GET", endpoint, params=params)
        logger.debug(f"Transitions API response: {json.dumps(response_data, indent=2)}")
        return response_data
  • Pydantic model used for output validation and serialization of individual transition results (id and name).
    class JiraTransitionResult(BaseModel):
        id: str
        name: str

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/InfinitIQ-Tech/mcp-jira'

If you have feedback or need assistance with the MCP directory API, please join our Discord server