Skip to main content
Glama

create_issue

Create and manage JIRA issues with specified project key, summary, description, issue type, priority, assignee, and labels using the Personal JIRA MCP server.

Instructions

创建JIRA问题

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
assigneeNo
descriptionNo
issue_typeNoTask
labelsNo
priorityNo
project_keyYes
summaryYes

Implementation Reference

  • The 'create_issue' tool handler: decorated with @mcp.tool for registration, handles input parameters to build Jira issue fields, calls Jira client to create issue, formats and returns the result or error.
    @mcp.tool( description="创建JIRA问题", ) def create_issue( project_key: str, summary: str, description: str = "", issue_type: str = "Task", priority: Optional[str] = None, assignee: Optional[str] = None, labels: Optional[List[str]] = None, ) -> Dict[str, Any]: """创建JIRA问题. Args: project_key: 项目键 summary: 问题概要 description: 问题描述 issue_type: 问题类型 priority: 优先级 assignee: 经办人 labels: 标签列表 Returns: Dict[str, Any]: 创建的问题详情 """ logger.info(f"创建问题: project={project_key}, summary={summary}") try: # 构建问题字段 fields = { "project": {"key": project_key}, "summary": summary, "issuetype": {"name": issue_type}, } if description: fields["description"] = description if priority: fields["priority"] = {"name": priority} if assignee: fields["assignee"] = {"name": assignee} if labels: fields["labels"] = labels # 创建问题 client = get_jira_client() issue = client.create_issue(fields=fields) return format_issue(issue) except Exception as e: logger.error(f"创建问题失败: {str(e)}") return {"error": str(e)}
  • Helper function format_issue used by create_issue to format the returned Jira issue into a JSON-friendly dictionary.
    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, used in create_issue.
    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

Other Tools

Related Tools

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