Skip to main content
Glama

search_issues

Search JIRA issues using JQL queries to find specific work items, filter results, and retrieve detailed information for project management.

Instructions

搜索JIRA问题列表

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
jqlYes
max_resultsNo
start_atNo

Implementation Reference

  • The primary handler for the 'search_issues' MCP tool. Registered via @mcp.tool decorator with description. Takes JQL query, max_results, and start_at parameters. Uses JIRA client to search issues, formats them with format_issue helper, and returns a dictionary with total count and list of issues.
    @mcp.tool( description="搜索JIRA问题列表", ) def search_issues( jql: str, max_results: int = 50, start_at: int = 0 ) -> Dict[str, Any]: """搜索JIRA问题. Args: jql: JQL查询字符串 max_results: 最大返回结果数 start_at: 起始索引 Returns: Dict[str, Any]: 搜索结果 """ logger.info(f"搜索问题: JQL={jql}, max_results={max_results}, start_at={start_at}") try: client = get_jira_client() issues = client.search_issues(jql_str=jql, maxResults=max_results, startAt=start_at) return { "total": issues.total, "issues": [format_issue(issue) for issue in issues], "start_at": start_at, "max_results": max_results, } except Exception as e: logger.error(f"搜索问题失败: {str(e)}") return {"error": str(e)}
  • Helper function used by search_issues to convert raw JIRA issue objects into structured JSON-friendly dictionaries, including fields like summary, status, project, assignee, attachments, and custom fields.
    def format_issue(issue) -> Dict[str, Any]: """格式化JIRA问题为JSON友好格式.""" fields = issue.fields result = { "id": issue.id, "key": issue.key, "self": issue.self, "summary": fields.summary, "description": fields.description or "", "status": { "id": fields.status.id, "name": fields.status.name, "description": fields.status.description, }, "project": { "id": fields.project.id, "key": fields.project.key, "name": fields.project.name, }, "created": fields.created, "updated": fields.updated, } # 添加可选字段 if hasattr(fields, "assignee") and fields.assignee: result["assignee"] = { "name": fields.assignee.name, "display_name": fields.assignee.displayName, "email": getattr(fields.assignee, "emailAddress", ""), } if hasattr(fields, "reporter") and fields.reporter: result["reporter"] = { "name": fields.reporter.name, "display_name": fields.reporter.displayName, "email": getattr(fields.reporter, "emailAddress", ""), } if hasattr(fields, "issuetype") and fields.issuetype: result["issue_type"] = { "id": fields.issuetype.id, "name": fields.issuetype.name, "description": fields.issuetype.description, } if hasattr(fields, "priority") and fields.priority: result["priority"] = { "id": fields.priority.id, "name": fields.priority.name, } if hasattr(fields, "components") and fields.components: result["components"] = [ {"id": c.id, "name": c.name} for c in fields.components ] if hasattr(fields, "labels") and fields.labels: result["labels"] = fields.labels # 处理附件 - JIRA API 使用 "attachment" 字段 if hasattr(fields, "attachment") and fields.attachment: result["attachments"] = [ { "id": attachment.id, "filename": attachment.filename, "size": attachment.size, "content_type": attachment.mimeType, "created": attachment.created, "url": attachment.content } for attachment in fields.attachment ] # 获取自定义字段 for field_name in dir(fields): if field_name.startswith("customfield_"): value = getattr(fields, field_name) if value is not None: result[field_name] = value return result
  • Helper function for lazy initialization and retrieval of the global JIRA client instance, used by search_issues to perform the actual API calls.
    def get_jira_client() -> JIRA: """获取JIRA客户端实例.""" global jira_client if jira_client is None: auth = get_jira_auth() jira_client = JIRA(server=jira_settings.server_url, basic_auth=auth) return jira_client

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/yuezheng2006/mcp-server-jira'

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