update_issue
Modify Redmine issue details like subject, description, status, priority, assignee, or add comments to track progress.
Instructions
Updates an issue.
Args:
issue_id: Issue number
subject: New subject
description: New description
status_id: New status ID
priority_id: New priority ID
assigned_to_id: New assignee ID
notes: CommentInput Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes | ||
| subject | No | ||
| description | No | ||
| status_id | No | ||
| priority_id | No | ||
| assigned_to_id | No | ||
| notes | No |
Implementation Reference
- redmine_mcp_server.py:108-141 (handler)The actual logic that performs the issue update using the redminelib client.
def update_issue( self, issue_id: int, subject: Optional[str] = None, description: Optional[str] = None, status_id: Optional[int] = None, priority_id: Optional[int] = None, assigned_to_id: Optional[int] = None, notes: Optional[str] = None, ) -> Dict[str, Any]: try: kwargs: Dict[str, Any] = {} if subject is not None: kwargs["subject"] = subject if description is not None: kwargs["description"] = description if status_id is not None: kwargs["status_id"] = status_id if priority_id is not None: kwargs["priority_id"] = priority_id if assigned_to_id is not None: kwargs["assigned_to_id"] = assigned_to_id if notes is not None: kwargs["notes"] = notes self._redmine.issue.update(issue_id, **kwargs) return self.get_issue(issue_id) except RedmineError: raise except ResourceNotFoundError: raise RedmineError(f"Issue not found: #{issue_id}") except (AuthError, ForbiddenError) as e: raise RedmineError(f"Authentication failed: {e}") from e except Exception as e: raise RedmineError(f"update_issue failed: {e}") from e - redmine_mcp_interface.py:206-240 (registration)Tool registration and wrapper function for update_issue in the MCP interface.
@mcp.tool() def update_issue( issue_id: int, subject: Optional[str] = None, description: Optional[str] = None, status_id: Optional[int] = None, priority_id: Optional[int] = None, assigned_to_id: Optional[int] = None, notes: Optional[str] = None, ) -> Dict[str, Any]: """Updates an issue. Args: issue_id: Issue number subject: New subject description: New description status_id: New status ID priority_id: New priority ID assigned_to_id: New assignee ID notes: Comment """ logger.info(f"tool=update_issue issue_id={issue_id}") try: return _client().update_issue( issue_id=issue_id, subject=subject, description=description, status_id=status_id, priority_id=priority_id, assigned_to_id=assigned_to_id, notes=notes, ) except RedmineError as e: logger.error(f"update_issue error: {e}") raise