Skip to main content
Glama
garc33

Bitbucket Server MCP

by garc33

add_comment

Add comments to Bitbucket pull requests for code review, feedback, questions, or threaded discussions. Supports Markdown formatting for clear communication.

Instructions

Add a comment to a pull request for code review, feedback, questions, or discussion. Use this to provide review feedback, ask questions about specific changes, suggest improvements, or participate in code review discussions. Supports threaded conversations.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectNoBitbucket project key. If omitted, uses BITBUCKET_DEFAULT_PROJECT environment variable.
repositoryYesRepository slug containing the pull request.
prIdYesPull request ID to comment on.
textYesComment text content. Supports Markdown formatting for code blocks, links, and emphasis.
parentIdNoID of parent comment to reply to. Omit for top-level comments.

Implementation Reference

  • The core handler function that executes the 'add_comment' tool logic by making a POST request to the Bitbucket API to add a comment to a pull request.
    private async addComment(params: PullRequestParams, options: CommentOptions) {
      const { project, repository, prId } = params;
      
      if (!project || !repository || !prId) {
        throw new McpError(
          ErrorCode.InvalidParams,
          'Project, repository, and prId are required'
        );
      }
      
      const { text, parentId } = options;
      
      const response = await this.api.post(
        `/projects/${project}/repos/${repository}/pull-requests/${prId}/comments`,
        {
          text,
          parent: parentId ? { id: parentId } : undefined
        }
      );
    
      return {
        content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }]
      };
    }
  • The input schema and metadata definition for the 'add_comment' tool.
    {
      name: 'add_comment',
      description: 'Add a comment to a pull request for code review, feedback, questions, or discussion. Use this to provide review feedback, ask questions about specific changes, suggest improvements, or participate in code review discussions. Supports threaded conversations.',
      inputSchema: {
        type: 'object',
        properties: {
          project: { type: 'string', description: 'Bitbucket project key. If omitted, uses BITBUCKET_DEFAULT_PROJECT environment variable.' },
          repository: { type: 'string', description: 'Repository slug containing the pull request.' },
          prId: { type: 'number', description: 'Pull request ID to comment on.' },
          text: { type: 'string', description: 'Comment text content. Supports Markdown formatting for code blocks, links, and emphasis.' },
          parentId: { type: 'number', description: 'ID of parent comment to reply to. Omit for top-level comments.' }
        },
        required: ['repository', 'prId', 'text']
      }
    },
  • src/index.ts:480-490 (registration)
    The switch case in the CallToolRequestSchema handler that routes 'add_comment' calls to the addComment method.
    case 'add_comment': {
      const commentPrParams: PullRequestParams = {
        project: getProject(args.project as string),
        repository: args.repository as string,
        prId: args.prId as number
      };
      return await this.addComment(commentPrParams, {
        text: args.text as string,
        parentId: args.parentId as number
      });
    }
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool supports 'threaded conversations' (via parentId) and Markdown formatting, which is useful behavioral context. However, it lacks details on permissions, rate limits, or response format that would be important for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by specific use cases and a key feature ('Supports threaded conversations'). Every sentence adds value with zero waste, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is moderately complete for a mutation tool. It covers the purpose and usage well but lacks details on behavioral aspects like authentication needs, error handling, or what the tool returns, which are gaps for a tool that modifies data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as explaining how 'parentId' enables threading or formatting details for 'text'. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Add a comment') and resource ('to a pull request'), with explicit purposes like 'code review, feedback, questions, or discussion'. It distinguishes from sibling tools like 'get_comments' (which retrieves) and 'add_comment_inline' (which likely adds inline comments).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('provide review feedback, ask questions about specific changes, suggest improvements, or participate in code review discussions'), but does not explicitly state when not to use it or name alternatives like 'add_comment_inline' for comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/garc33/bitbucket-server-mcp-server'

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