create_issue
Enables users to create a new issue in a Taiga project by specifying session details, project ID, subject, priority, status, severity, and type. Simplifies issue tracking and management.
Instructions
Creates a new issue within a project.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kwargs | Yes | ||
| priority_id | Yes | ||
| project_id | Yes | ||
| session_id | Yes | ||
| severity_id | Yes | ||
| status_id | Yes | ||
| subject | Yes | ||
| type_id | Yes |
Implementation Reference
- src/server.py:625-657 (handler)The handler function for the 'create_issue' tool. It authenticates the session, validates inputs, and calls the Taiga API via pytaigaclient to create an issue in the specified project.@mcp.tool("create_issue", description="Creates a new issue within a project.") def create_issue(session_id: str, project_id: int, subject: str, priority_id: int, status_id: int, severity_id: int, type_id: int, **kwargs) -> Dict[str, Any]: """Creates an issue. Requires project_id, subject, priority_id, status_id, severity_id, type_id. Optional fields (description, assigned_to_id, etc.) via kwargs.""" logger.info( f"Executing create_issue '{subject}' in project {project_id}, session {session_id[:8]}...") taiga_client_wrapper = _get_authenticated_client(session_id) # Use wrapper variable name if not subject: raise ValueError("Issue subject cannot be empty.") try: # Use pytaigaclient syntax: client.resource.create(...) # Assuming pytaigaclient expects _id suffix for relational fields in create, but 'project' for project itself issue = taiga_client_wrapper.api.issues.create( project=project_id, # Changed project_id to project subject=subject, priority_id=priority_id, # Assume _id suffix status_id=status_id, # Assume _id suffix type_id=type_id, # Assume _id suffix severity_id=severity_id, # Assume _id suffix **kwargs ) logger.info( f"Issue '{subject}' created successfully (ID: {issue.get('id', 'N/A')}).") # return issue.to_dict() # Remove .to_dict() return issue # Return directly except TaigaException as e: logger.error( f"Taiga API error creating issue '{subject}': {e}", exc_info=False) raise e except Exception as e: logger.error( f"Unexpected error creating issue '{subject}': {e}", exc_info=True) raise RuntimeError(f"Server error creating issue: {e}")