Skip to main content
Glama

getIssues

Retrieve JIRA issue details and attachments by providing an issue key to access project information and related files.

Instructions

获取JIRA问题及其附件

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
issue_keyYes

Implementation Reference

  • The @mcp.tool decorator registers the getIssues handler function, which retrieves and formats a JIRA issue including attachments.
    @mcp.tool( description="获取JIRA问题及其附件", ) def getIssues( issue_key: str, ) -> Dict[str, Any]: """获取JIRA问题及其附件信息. Args: issue_key: JIRA问题键 Returns: Dict[str, Any]: 问题详情及附件信息 """ logger.info(f"获取问题及附件: {issue_key}") try: client = get_jira_client() issue = client.issue(issue_key) # 使用format_issue函数来获取JSON可序列化的问题数据 issue_data = format_issue(issue) # 确保附件列表为JSON可序列化对象 return issue_data except Exception as e: logger.error(f"获取问题 {issue_key} 及附件失败: {str(e)}") return {"error": str(e)}
  • Helper function format_issue used by getIssues to convert JIRA issue object to a dictionary including attachments and other 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 to get or initialize the JIRA client instance, called within getIssues.
    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