create-jira-issue
Create a new Jira issue by specifying project key, summary, and issue type, with optional description and assignee.
Instructions
Create a new Jira issue
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_key | Yes | ||
| summary | Yes | ||
| issue_type | Yes | ||
| description | No | ||
| assignee | No |
Implementation Reference
- src/mcp_jira_confluence/server.py:601-616 (registration)The tool 'create-jira-issue' is registered in the handle_list_tools() function with its name, description, and JSON Schema input schema. Required arguments: project_key, summary, issue_type. Optional arguments: description, assignee.
return [ types.Tool( name="create-jira-issue", description="Create a new Jira issue", inputSchema={ "type": "object", "properties": { "project_key": {"type": "string"}, "summary": {"type": "string"}, "issue_type": {"type": "string"}, "description": {"type": "string"}, "assignee": {"type": "string"}, }, "required": ["project_key", "summary", "issue_type"], }, ), - The handler for 'create-jira-issue' in handle_call_tool(). It extracts arguments (project_key, summary, issue_type, description, assignee), calls jira_client.create_issue(), and returns a TextContent + EmbeddedResource response with the created issue key.
if name == "create-jira-issue": project_key = arguments.get("project_key") summary = arguments.get("summary") issue_type = arguments.get("issue_type") description = arguments.get("description") assignee = arguments.get("assignee") if not project_key or not summary or not issue_type: raise ValueError("Missing required arguments: project_key, summary, and issue_type") result = await jira_client.create_issue( project_key=project_key, summary=summary, issue_type=issue_type, description=description, assignee=assignee ) issue_key = result.get("key") if not issue_key: raise ValueError("Failed to create Jira issue, no issue key returned") return [ types.TextContent( type="text", text=f"Created Jira issue {issue_key}", ), types.EmbeddedResource( type="resource", resource=types.TextResourceContents( uri=AnyUrl(build_jira_uri(issue_key)), text=f"Created Jira issue: {issue_key}", mimeType="text/markdown" ) ) ] - The jira_client.create_issue() method in JiraClient. It constructs the Jira API payload with project, summary, issue type, optional description, and optional assignee fields, then POSTs to the Jira API 'issue' endpoint.
async def create_issue(self, project_key: str, summary: str, issue_type: str, description: Optional[str] = None, assignee: Optional[str] = None) -> Dict[str, Any]: """Create a new issue.""" data = { "fields": { "project": {"key": project_key}, "summary": summary, "issuetype": {"name": issue_type}, } } if description: data["fields"]["description"] = description if assignee: data["fields"]["assignee"] = {"name": assignee} return await self.post("issue", data)