Skip to main content
Glama

get_work_item_comments

Retrieve all comments for a specific Azure DevOps work item to review discussion history, see team feedback, and understand task evolution.

Instructions

Retrieves all comments associated with a specific work item. Use this tool when you need to: - Review discussion history about a work item - See feedback or notes left by team members - Check if specific questions have been answered - Understand the context and evolution of a work item Args: id: The work item ID project: Optional project name. If not provided, will be determined from the work item. Returns: Formatted string containing all comments on the work item, including author names, timestamps, and content, organized chronologically and formatted as markdown

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
projectNo

Implementation Reference

  • MCP tool handler 'get_work_item_comments' that orchestrates comment retrieval by getting the client and calling the implementation helper, with error handling.
    @mcp.tool() def get_work_item_comments( id: int, project: Optional[str] = None ) -> str: """ Retrieves all comments associated with a specific work item. Use this tool when you need to: - Review discussion history about a work item - See feedback or notes left by team members - Check if specific questions have been answered - Understand the context and evolution of a work item Args: id: The work item ID project: Optional project name. If not provided, will be determined from the work item. Returns: Formatted string containing all comments on the work item, including author names, timestamps, and content, organized chronologically and formatted as markdown """ try: wit_client = get_work_item_client() return _get_work_item_comments_impl(id, wit_client, project) except AzureDevOpsClientError as e: return f"Error: {str(e)}"
  • Core helper function '_get_work_item_comments_impl' that implements the logic to fetch comments from the Azure DevOps WIT client, auto-detect project if needed, and format them for output.
    def _get_work_item_comments_impl( item_id: int, wit_client: WorkItemTrackingClient, project: Optional[str] = None ) -> str: """ Implementation of work item comments retrieval. Args: item_id: The work item ID wit_client: Work item tracking client project: Optional project name Returns: Formatted string containing work item comments """ # If project is not provided, try to get it from the work item if not project: project = _get_project_for_work_item(item_id, wit_client) if not project: return f"Error retrieving work item {item_id} to determine project" # Get comments using the project if available comments = wit_client.get_comments(project=project, work_item_id=item_id) # Format the comments formatted_comments = [ _format_comment(comment) for comment in comments.comments ] if not formatted_comments: return "No comments found for this work item." return "\n\n".join(formatted_comments)
  • Helper function to format individual comment objects into readable markdown strings with author, date, and text.
    def _format_comment(comment) -> str: """ Format a work item comment for display. Args: comment: Comment object to format Returns: Formatted string representation of the comment """ # Format the date if available created_date = "" if hasattr(comment, 'created_date') and comment.created_date: created_date = f" on {comment.created_date}" # Format the author if available author = "Unknown" if hasattr(comment, 'created_by') and comment.created_by: if (hasattr(comment.created_by, 'display_name') and comment.created_by.display_name): author = comment.created_by.display_name # Format the comment text text = "No text" if hasattr(comment, 'text') and comment.text: text = comment.text return f"## Comment by {author}{created_date}:\n{text}"
  • Helper function to retrieve the project name from a work item, used when project is not provided.
    def _get_project_for_work_item( item_id: int, wit_client: WorkItemTrackingClient ) -> Optional[str]: """ Get the project name for a work item. Args: item_id: The work item ID wit_client: Work item tracking client Returns: Project name or None if not found """ try: work_item = wit_client.get_work_item(item_id) if work_item and work_item.fields: return work_item.fields.get("System.TeamProject") except Exception: pass return None
  • Registration point where comments.register_tools(mcp) is called, which in turn defines and registers the get_work_item_comments tool.
    def register_tools(mcp) -> None: """ Register all work item tools with the MCP server. Args: mcp: The FastMCP server instance """ query.register_tools(mcp) read.register_tools(mcp) comments.register_tools(mcp) create.register_tools(mcp) types.register_tools(mcp) templates.register_tools(mcp) process.register_tools(mcp)

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/Vortiago/mcp-azure-devops'

If you have feedback or need assistance with the MCP directory API, please join our Discord server