Skip to main content
Glama

reply_to_review_comment

Add a response to a specific discussion thread in a GitLab merge request review to address feedback or provide clarification.

Instructions

Reply to a specific discussion thread in a merge request review

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
merge_request_iidYesInternal ID of the merge request
discussion_idYesID of the discussion thread to reply to
bodyYesContent of the reply comment

Implementation Reference

  • The main handler function that executes the tool logic: extracts arguments, calls the GitLab API to reply to a merge request discussion, formats success/error responses as TextContent.
    async def reply_to_review_comment(gitlab_url, project_id, access_token, args):
        """Reply to a specific discussion thread in a merge request review"""
        logging.info(f"reply_to_review_comment called with args: {args}")
    
        mr_iid = args["merge_request_iid"]
        discussion_id = args["discussion_id"]
        reply_body = args["body"]
    
        try:
            status, response_data, error_text = await reply_to_merge_request_discussion(
                gitlab_url, project_id, access_token, mr_iid, discussion_id, reply_body
            )
    
            if status == 201:
                author_name = response_data.get("author", {}).get("name", "Unknown")
                note_id = response_data.get("id", "unknown")
    
                result = "✅ **Reply posted successfully!**\n\n"
                result += f"**Merge Request**: !{mr_iid}\n"
                result += f"**Discussion ID**: `{discussion_id}`\n"
                result += f"**Note ID**: `{note_id}`\n"
                result += f"**Author**: {author_name}\n"
                reply_preview = reply_body[:100] + ("..." if len(reply_body) > 100 else "")
                result += f"**Reply**: {reply_preview}\n"
    
                return [TextContent(type="text", text=result)]
            else:
                error_msg = "❌ **Error posting reply**\n\n"
                error_msg += f"**Status**: {status}\n"
                error_msg += f"**Error**: {error_text}\n"
                error_msg += f"**MR**: !{mr_iid}\n"
                error_msg += f"**Discussion**: {discussion_id}\n"
    
                return [TextContent(type="text", text=error_msg)]
    
        except Exception as e:
            logging.error(f"Unexpected error in reply_to_review_comment: {e}")
            error_result = "❌ **Unexpected error**\n\n"
            error_result += f"**Error**: {str(e)}\n"
            error_result += f"**MR**: !{mr_iid}\n"
            error_result += f"**Discussion**: {discussion_id}\n"
    
            return [TextContent(type="text", text=error_result)]
  • Defines the tool schema including input parameters (merge_request_iid, discussion_id, body) for validation in the MCP server list_tools handler.
    Tool(
        name="reply_to_review_comment",
        description=("Reply to a specific discussion thread in a " "merge request review"),
        inputSchema={
            "type": "object",
            "properties": {
                "merge_request_iid": {
                    "type": "integer",
                    "minimum": 1,
                    "description": ("Internal ID of the merge request"),
                },
                "discussion_id": {
                    "type": "string",
                    "description": ("ID of the discussion thread to reply to"),
                },
                "body": {"type": "string", "description": "Content of the reply comment"},
            },
            "required": ["merge_request_iid", "discussion_id", "body"],
            "additionalProperties": False,
        },
    ),
  • main.py:332-335 (registration)
    Registers the tool dispatch in the MCP server's call_tool method, mapping the tool name to the handler function call with config injected.
    elif name == "reply_to_review_comment":
        return await reply_to_review_comment(
            self.config["gitlab_url"], self.config["project_id"], self.config["access_token"], arguments
        )

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/amirsina-mandegari/gitlab-mcp-server'

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