Skip to main content
Glama

MCP Atlassian

by ArconixForge
search.py3.04 kB
""" Jira search result models. This module provides Pydantic models for Jira search (JQL) results. """ import logging from typing import Any from pydantic import Field, model_validator from ..base import ApiModel from .issue import JiraIssue logger = logging.getLogger(__name__) class JiraSearchResult(ApiModel): """ Model representing a Jira search (JQL) result. """ total: int = 0 start_at: int = 0 max_results: int = 0 issues: list[JiraIssue] = Field(default_factory=list) @classmethod def from_api_response( cls, data: dict[str, Any], **kwargs: Any ) -> "JiraSearchResult": """ Create a JiraSearchResult from a Jira API response. Args: data: The search result data from the Jira API **kwargs: Additional arguments to pass to the constructor Returns: A JiraSearchResult instance """ if not data: return cls() if not isinstance(data, dict): logger.debug("Received non-dictionary data, returning default instance") return cls() issues = [] issues_data = data.get("issues", []) if isinstance(issues_data, list): for issue_data in issues_data: if issue_data: requested_fields = kwargs.get("requested_fields") issues.append( JiraIssue.from_api_response( issue_data, requested_fields=requested_fields ) ) raw_total = data.get("total") raw_start_at = data.get("startAt") raw_max_results = data.get("maxResults") try: total = int(raw_total) if raw_total is not None else -1 except (ValueError, TypeError): total = -1 try: start_at = int(raw_start_at) if raw_start_at is not None else -1 except (ValueError, TypeError): start_at = -1 try: max_results = int(raw_max_results) if raw_max_results is not None else -1 except (ValueError, TypeError): max_results = -1 return cls( total=total, start_at=start_at, max_results=max_results, issues=issues, ) @model_validator(mode="after") def validate_search_result(self) -> "JiraSearchResult": """ Validate the search result. This validator ensures that pagination values are sensible and consistent with the number of issues returned. Returns: The validated JiraSearchResult instance """ return self def to_simplified_dict(self) -> dict[str, Any]: """Convert to simplified dictionary for API response.""" return { "total": self.total, "start_at": self.start_at, "max_results": self.max_results, "issues": [issue.to_simplified_dict() for issue in self.issues], }

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/ArconixForge/mcp-atlassian'

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