Skip to main content
Glama

resolve_review_discussion

Resolve or reopen discussion threads in GitLab merge request reviews to track feedback status and progress.

Instructions

Resolve or unresolve a 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 resolve/unresolve
resolvedNoWhether to resolve (true) or unresolve (false) the discussion

Implementation Reference

  • The handler function that implements the core logic for resolving or unresolving GitLab merge request discussions. It extracts parameters, calls the GitLab API via resolve_merge_request_discussion, handles success/error responses, and returns formatted TextContent.
    async def resolve_review_discussion(gitlab_url, project_id, access_token, args): """Resolve or unresolve a discussion thread in a merge request review""" logging.info(f"resolve_review_discussion called with args: {args}") mr_iid = args["merge_request_iid"] discussion_id = args["discussion_id"] resolved = args.get("resolved", True) try: status, response_data, error_text = await resolve_merge_request_discussion( gitlab_url, project_id, access_token, mr_iid, discussion_id, resolved ) if status == 200: action = "resolved" if resolved else "reopened" result = f"βœ… **Discussion {action}!**\n\n" result += f"**Merge Request**: !{mr_iid}\n" result += f"**Discussion ID**: `{discussion_id}`\n" result += f"**Status**: {'βœ… Resolved' if resolved else 'πŸ”„ Reopened'}\n" return [TextContent(type="text", text=result)] else: error_msg = f"❌ **Error {action} discussion**\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 resolve_review_discussion: {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)]
  • Input schema definition for the resolve_review_discussion tool, specifying required parameters merge_request_iid and discussion_id, optional resolved boolean, with types and descriptions.
    Tool( name="resolve_review_discussion", description=("Resolve or unresolve a 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 " "resolve/unresolve"), }, "resolved": { "type": "boolean", "default": True, "description": ("Whether to resolve (true) or unresolve " "(false) the discussion"), }, }, "required": ["merge_request_iid", "discussion_id"], "additionalProperties": False, },
  • main.py:340-343 (registration)
    Tool registration in the MCP call_tool handler dispatcher, which routes calls to the resolve_review_discussion function with config parameters.
    elif name == "resolve_review_discussion": return await resolve_review_discussion( 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