Skip to main content
Glama
QuynhChristou67177

.gitignore not found. The repository may be empty or the README is at the root only. Below is README.md raw content for analysis. Use it to propose GitHub recommendations, bugs, awesomeness, and a detailed report. Also, fix README.md formatting issues (like '## Overview' and '## Installation' headers missing line breaks). Provide a complete corrected README.md. Ensure no destructive operations, only safe recommendations and fixes. Include a safety note about no delete operations. Use the repo name 'bitbucket-mcp' in recommendations. Reference official npm package and CodeQL. Keep code blocks intact. Provide final JSON with name and description as requested. The name must be the MCP server name, not a person/maintainer/org. The description must say what the server enables and not restate the name. Max 2 sentences. Also, the README has a duplicate 'Pagination controls' line and truncated text at end. Mention in bugs. Also, missing 'createPullRequest' reviewers optional list, draft optional boolean. Ensure tool descriptions match. Also, the README says no DELETE operations but lists BITBUCKET_ENABLE_DANGEROUS for deletions, which contradicts 'no DELETE operations are used'. Flag as bug/inconsistency. Also, 'Checkout out' typo. Also, environment variables table: BITBUCKET_USERNAME and PASSWORD are 'Yes*' but token alternative. Clarify. Also, '1.' repeated numbering in troubleshooting. Also, 'Atlassian API Key' section says put API key in BITBUCKET_PASSWORD, not BITBUCKET_TOKEN, and use email as username. Good. Also, README says 'This is a safe and responsible package — no DELETE operations are used' but then BITBUCKET_ENABLE_DANGEROUS enables dangerous tools (e.g., deletions). Contradiction. Fix safety statement to reflect default safe mode and optional dangerous tools. Provide corrected README. Also, the repo URL in README badges points to MatanYemini/bitbucket-mcp, not QuynhChristou67177. Flag as bug: README references different GitHub repository. Also, npm badge and package name 'bitbucket-mcp'. Good. Also, the README's 'Available Tools' section is truncated at 'Pagination controls desc'. Need to complete or note truncation. Provide complete corrected README with all sections, no truncation. Also, ensure no DELETE operations by default; dangerous tools disabled by default. Provide safe recommendations. Provide awesomeness: good safety focus, CodeQL, NPX, Cursor integration, pagination. Provide GitHub recommendations: add .gitignore, LICENSE, CONTRIBUTING, issue templates, CI, tests, security policy, dependabot, release workflow, npm publish automation, README badges, correct repo links, add examples, add tool schema docs, add changelog, add support for Bitbucket Server APIs (README says Cloud and Server but only Cloud examples). Add server support details. Add rate limiting/retry. Add logging config docs. Add token alternative docs. Add Docker. Add tests. Add mcp inspector. Add versioning. Add semantic release. Add code of conduct. Add FAQ. Add troubleshooting for 403, 404, rate limits. Add sample Cursor config for token auth. Add environment variable validation. Add health check. Add graceful shutdown. Add telemetry opt-in? No. Add security note about app passwords least privilege. Add note about no DELETE by default. Add note about CodeQL. Add note about npm provenance. Add note about package integrity. Add note about pinning versions. Add note about npx -y risk. Add note about supply chain. Add note about audit. Add note about license MIT. Add note about contributing. Add note about issues. Add note about discussions. Add note about roadmap. Add note about supported Bitbucket versions. Add note about Server API differences. Add note about authentication for Server (PAT vs app password). Add note about SSL verification. Add note about proxy. Add note about custom CA. Add note about timeouts. Add note about pagination cap 1000. Add note about all=true safety cap. Add note about limit deprecated. Add note about pagelen cap 100. Add note about page 1-based. Add note about listRepositories name filter partial match. Add note about getPullRequests state enum. Add note about createPullRequest reviewers usernames, draft boolean. Add note about getPullRequest pagination controls (probably copy-paste error; getPullRequest shouldn't have pagination). Flag as bug: getPullRequest includes pagination controls, likely copy-paste from list tools. Also duplicate line. Also truncated. Provide corrected README with getPullRequest without pagination. Also, README says 'Pagination controls described in [Pagination](#pagination)' twice for getPullRequest. Remove. Also, the README is truncated at 'Pagination controls desc'. Complete the Available Tools section with remaining tools? The README only shows listRepositories, getRepository, getPullRequests, createPullRequest, getPullRequest. The overview says 'And more...' but no more listed. Mention incomplete tool list. Provide corrected README with a note that more tools may exist in code, but README should list all. Since we only have README, we can't invent tools. Provide a placeholder 'Additional tools may be documented in the source code' or 'See source for full list'. But better to keep only documented tools and note incomplete. Provide corrected README with complete sections up to getPullRequest, remove duplicate/truncated lines, and add a note that the list is incomplete and should be updated. Also, fix 'Checkout out' to 'Check out'. Fix '1.' numbering in troubleshooting to use proper ordered list. Fix 'Yes*' clarify. Fix safety statement. Fix repo links to QuynhChristou67177? But README badges point to MatanYemini. Since the user says GitHub names the repository 'bitbucket-mcp' and describes it as..., but the README references MatanYemini. The name must be the MCP server name, not a person/maintainer/org. The MCP server name is 'bitbucket-mcp' or 'Bitbucket MCP'. The description must say what the server enables. So final JSON: name: 'Bitbucket MCP'? The repository publishes 'bitbucket-mcp' npm package. The README title '# Bitbucket MCP'. The name must name the MCP server the repository publishes. The npm package is 'bitbucket-mcp'. The MCP server name could be 'Bitbucket MCP' or 'bitbucket-mcp'. The user says 'Respond with a name and no more than 2 sentences long description of the MCP server. The name must name the MCP server the repository publishes – never a person, maintainer, or organization the README credits.' The README credits MatanYemini in badges. So don't use MatanYemini. Use 'Bitbucket MCP' or 'bitbucket-mcp'. The repository name is 'bitbucket-mcp'. The npm package is 'bitbucket-mcp'. The MCP server name likely 'bitbucket-mcp'. But the title is 'Bitbucket MCP'. The user asks 'Evaluate the first 10,000 characters of README.md... Respond with a name and no more than 2 sentences long description of the MCP server.' So final JSON should have name and description. Name: 'Bitbucket MCP' (the server) or 'bitbucket-mcp' (package). The description: 'Enables AI assistants to interact with Bitbucket Cloud and Server APIs for listing and retrieving repositories, fetching and creating pull requests, and managing Bitbucket resources through the Model Context Protocol.' That's one sentence. Must not restate the name. Good. But the description must say what the server enables. Yes. Max 2 sentences. Good. Also, the user asked to 'Evaluate' and 'Respond with a name and no more than 2 sentences long description' and 'Reply with a JSON object that has properties name and description'. So final answer should be only JSON? The user says 'Reply with a JSON object that has properties

README.md
# Bitbucket MCP

A Model Context Protocol (MCP) server for integrating with Bitbucket Cloud and Server APIs. This MCP server enables AI assistants like Cursor to interact with your Bitbucket repositories, pull requests, and other resources.

## Safety First

This is a safe and responsible package — no DELETE operations are used, so there's no risk of data loss.
Every pull request is analyzed with CodeQL to ensure the code remains secure.

[![CodeQL](https://github.com/MatanYemini/bitbucket-mcp/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/MatanYemini/bitbucket-mcp/actions/workflows/github-code-scanning/codeql)
[![GitHub Repository](https://img.shields.io/badge/GitHub-Repository-blue.svg)](https://github.com/MatanYemini/bitbucket-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![npm version](https://badge.fury.io/js/bitbucket-mcp.svg)](https://www.npmjs.com/package/bitbucket-mcp)

## Overview

Checkout out the [official npm package](https://www.npmjs.com/package/bitbucket-mcp)
This server implements the Model Context Protocol standard to provide AI assistants with access to Bitbucket data and operations. It includes tools for:

- Listing and retrieving repositories
- Getting repository details
- Fetching pull requests
- And more...

## Installation

-- Since it has been asked, in many cases we have seen - "BITBUCKET_USERNAME" is usually your email

### Using NPX (Recommended)

The easiest way to use this MCP server is via NPX, which allows you to run it without installing it globally:

```bash
# Option A (recommended): API URL + explicit workspace
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx -y bitbucket-mcp@latest

# Option B (legacy-compatible): web URL only; workspace is auto-extracted
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx -y bitbucket-mcp@latest
```

### Manual Installation

Alternatively, you can install it globally or as part of your project:

```bash
# Install globally
npm install -g bitbucket-mcp

# Or install in your project
npm install bitbucket-mcp
```

Then run it with:

```bash
# If installed globally (Option A)
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
bitbucket-mcp

# If installed globally (Option B - legacy-compatible)
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
bitbucket-mcp

# If installed in your project (Option A)
BITBUCKET_URL="https://api.bitbucket.org/2.0" \
BITBUCKET_WORKSPACE="your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx bitbucket-mcp

# If installed in your project (Option B - legacy-compatible)
BITBUCKET_URL="https://bitbucket.org/your-workspace" \
BITBUCKET_USERNAME="your-username" \
BITBUCKET_PASSWORD="your-app-password" \
npx bitbucket-mcp
```

## Configuration

### Environment Variables

Configure the server using the following environment variables:

| Variable                     | Description                                                                    | Required |
| ---------------------------- | ------------------------------------------------------------------------------ | -------- |
| `BITBUCKET_URL`              | Bitbucket API base URL. Defaults to `https://api.bitbucket.org/2.0`            | No       |
| `BITBUCKET_USERNAME`         | Your Bitbucket username                                                        | Yes\*    |
| `BITBUCKET_PASSWORD`         | Your Bitbucket app password                                                    | Yes\*    |
| `BITBUCKET_TOKEN`            | Your Bitbucket access token (alternative to username/password)                 | No       |
| `BITBUCKET_WORKSPACE`        | Default workspace to use. If omitted and `BITBUCKET_URL` contains it, auto-set | No       |
| `BITBUCKET_ENABLE_DANGEROUS` | Set to `true` to enable dangerous tools (e.g., deletions). Default: disabled   | No       |
| `BITBUCKET_LOG_DISABLE`      | Disable file logging when set to `true`/`1`                                    | No       |
| `BITBUCKET_LOG_FILE`         | Absolute path to a specific log file                                           | No       |
| `BITBUCKET_LOG_DIR`          | Directory to store logs (defaults to OS-specific app log dir)                  | No       |
| `BITBUCKET_LOG_PER_CWD`      | When `true`, nest logs under a per-working-directory subfolder                 | No       |

Either `BITBUCKET_TOKEN` or both `BITBUCKET_USERNAME` and `BITBUCKET_PASSWORD` must be provided.

### Creating a Bitbucket App Password

1. Log in to your Bitbucket account
2. Go to Personal Settings > App Passwords
3. Create a new app password with the following permissions:
   - Repositories: Read
   - Pull requests: Read, Write
   - Pipelines: Read (required for pipeline operations)
4. Copy the generated password and use it as the `BITBUCKET_PASSWORD` environment variable

## Troubleshooting

### 401 Authentication Errors

If you're getting 401 authentication errors, check the following:

1. **Verify your app password**: Make sure you're using an App Password, not your regular Bitbucket password
1. **Verify app password permissions**: Your app password needs at least "Repositories: Read" permission
1. **Try the API URL format**: If you're still getting 401 errors, try using the direct API URL format:

```bash
BITBUCKET_URL="https://api.bitbucket.org/2.0"
```

1. **Test API access**: Verify your credentials work by testing the Bitbucket API directly:

```bash
# Test with curl (replace with your actual values)
curl -u "your-username:your-app-password" \
  "https://api.bitbucket.org/2.0/repositories/your-workspace"
```

### Atlassian API Key 

1. Put the Atlassian API Key in the `BITBUCKET_PASSWORD` variable, not `BITBUCKET_TOKEN`
2. Use your Bitbucket email as `BITBUCKET_USERNAME` instead of your regular username

For reference you can check the [API token documentation](https://support.atlassian.com/bitbucket-cloud/docs/using-api-tokens/)

### Getting Help

If you encounter issues:

1. Check the [Bitbucket REST API documentation](https://developer.atlassian.com/cloud/bitbucket/rest/intro/) for API details
2. Review the [Bitbucket Cloud documentation](https://support.atlassian.com/bitbucket-cloud/) for general help

## Integration with Cursor

To integrate this MCP server with Cursor:

1. Open Cursor
2. Go to Settings > Extensions
3. Click on "Model Context Protocol"
4. Add a new MCP configuration:

```json
"bitbucket": {
  "command": "npx",
  "env": {
    "BITBUCKET_URL": "https://api.bitbucket.org/2.0",
    "BITBUCKET_WORKSPACE": "your-workspace",
    "BITBUCKET_USERNAME": "your-username",
    "BITBUCKET_PASSWORD": "your-app-password"
  },
  "args": ["-y", "bitbucket-mcp@latest"]
}
```

1. Save the configuration
2. Use the "/bitbucket" command in Cursor to access Bitbucket repositories and pull requests

### Using a Local Build with Cursor

If you're developing locally and want to test your changes:

```json
"bitbucket-local": {
  "command": "node",
  "env": {
    "BITBUCKET_URL": "https://api.bitbucket.org/2.0",
    "BITBUCKET_WORKSPACE": "your-workspace",
    "BITBUCKET_USERNAME": "your-username",
    "BITBUCKET_PASSWORD": "your-app-password"
  },
  "args": ["/path/to/your/local/bitbucket-mcp/dist/index.js"]
}
```

## Available Tools

This MCP server provides tools for interacting with Bitbucket repositories and pull requests. Below is a comprehensive list of the available operations:

### Pagination

Unless noted otherwise, listing tools accept the following optional parameters:

- `pagelen`: Number of items per page (Bitbucket `pagelen`). Defaults to 10 and is capped at 100.
- `page`: 1-based Bitbucket page number to fetch. When omitted, the first page is returned.
- `all`: When `true` (and `page` is not provided), the server automatically follows Bitbucket `next` links until all items are fetched or a safety cap of 1,000 entries is reached.
- `limit`: Deprecated alias for `pagelen` kept for backward compatibility.

Use these knobs to page through large collections without hitting CLI truncation.

### Repository Operations

#### `listRepositories`

Lists repositories in a workspace.

**Parameters:**

- `workspace` (optional): Bitbucket workspace name
- `name` (optional): Filter repositories by partial name match
- Pagination controls described in [Pagination](#pagination)

#### `getRepository`

Gets details for a specific repository.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug

### Pull Request Operations

#### `getPullRequests`

Gets pull requests for a repository.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `state` (optional): Pull request state (`OPEN`, `MERGED`, `DECLINED`, `SUPERSEDED`)
- Pagination controls described in [Pagination](#pagination)

#### `createPullRequest`

Creates a new pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `title`: Pull request title
- `description`: Pull request description
- `sourceBranch`: Source branch name
- `targetBranch`: Target branch name
- `reviewers` (optional): List of reviewer usernames
- `draft` (optional): Whether to create the pull request as a draft

#### `getPullRequest`

Gets details for a specific pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- Pagination controls described in [Pagination](#pagination)
- Pagination controls described in [Pagination](#pagination)
- Pagination controls described in [Pagination](#pagination)
- Pagination controls described in [Pagination](#pagination)

#### `updatePullRequest`

Updates a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- Pagination controls described in [Pagination](#pagination)
- Pagination controls described in [Pagination](#pagination)
- Various optional update parameters (title, description, etc.)

#### `getPullRequestActivity`

Gets the activity log for a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `approvePullRequest`

Approves a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `unapprovePullRequest`

Removes an approval from a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `declinePullRequest`

Declines a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `message` (optional): Reason for declining

#### `mergePullRequest`

Merges a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `message` (optional): Merge commit message
- `strategy` (optional): Merge strategy (`merge-commit`, `squash`, `fast-forward`)

#### `requestChanges`

Requests changes on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `removeChangeRequest`

Removes a change request from a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `createDraftPullRequest`

Creates a new draft pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `title`: Pull request title
- `description`: Pull request description
- `sourceBranch`: Source branch name
- `targetBranch`: Target branch name
- `reviewers` (optional): List of reviewer usernames

**Note:** This is equivalent to calling `createPullRequest` with `draft: true`.

#### `publishDraftPullRequest`

Publishes a draft pull request to make it ready for review.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `convertTodraft`

Converts a regular pull request to draft status.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

### Pull Request Comment Operations

#### `getPullRequestComments`

Lists comments on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `addPullRequestComment`

Creates a comment on a pull request (general or inline).

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `content`: Comment content in markdown format
- `inline` (optional): Inline comment information for commenting on specific lines

**Inline Comment Format:**

The `inline` parameter allows you to create comments on specific lines of code in the pull request diff:

```json
{
  "path": "src/file.ts",
  "to": 15, // Line number in NEW version (for added/modified lines)
  "from": 10 // Line number in OLD version (for deleted/modified lines)
}
```

**Examples:**

- **General comment**: Omit the `inline` parameter for a general pull request comment
- **Comment on new line**: Use only `to` parameter
- **Comment on deleted line**: Use only `from` parameter
- **Comment on modified line**: Use both `from` and `to` parameters

**Usage:**

```javascript
// General comment
addPullRequestComment(workspace, repo, pr_id, "Great work!");

// Inline comment on new line 25
addPullRequestComment(workspace, repo, pr_id, "Consider error handling here", {
  path: "src/service.ts",
  to: 25,
});
```

#### `getPullRequestComment`

Gets a specific comment on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `comment_id`: Comment ID

#### `updatePullRequestComment`

Updates a comment on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `comment_id`: Comment ID
- `content`: Updated comment content

#### `deletePullRequestComment`

Deletes a comment on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `comment_id`: Comment ID

#### `resolveComment`

Resolves a comment thread on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `comment_id`: Comment ID

#### `reopenComment`

Reopens a resolved comment thread on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `comment_id`: Comment ID

### Pull Request Diff Operations

#### `getPullRequestDiff`

Gets the diff for a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `getPullRequestDiffStat`

Gets the diff statistics for a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `getPullRequestPatch`

Gets the patch for a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

### Pull Request Task Operations

#### `getPullRequestTasks`

Lists tasks on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `createPullRequestTask`

Creates a task on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `content`: Task content
- `comment` (optional): Comment ID to associate with the task
- `pending` (optional): Whether the task is pending

#### `getPullRequestTask`

Gets a specific task on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `task_id`: Task ID

#### `updatePullRequestTask`

Updates a task on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `task_id`: Task ID
- `content` (optional): Updated task content
- `state` (optional): Updated task state

#### `deletePullRequestTask`

Deletes a task on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID
- `task_id`: Task ID

### Other Pull Request Operations

#### `getPullRequestCommits`

Lists commits on a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

#### `getPullRequestStatuses`

Lists commit statuses for a pull request.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pull_request_id`: Pull request ID

### Pipeline Operations

#### `listPipelineRuns`

Lists pipeline runs for a repository.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- Pagination controls described in [Pagination](#pagination)
- `status` (optional): Filter pipelines by status (`PENDING`, `IN_PROGRESS`, `SUCCESSFUL`, `FAILED`, `ERROR`, `STOPPED`)
- `target_branch` (optional): Filter pipelines by target branch
- `trigger_type` (optional): Filter pipelines by trigger type (`manual`, `push`, `pullrequest`, `schedule`)

#### `getPipelineRun`

Gets details for a specific pipeline run.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pipeline_uuid`: Pipeline UUID
- Pagination controls described in [Pagination](#pagination)

#### `runPipeline`

Triggers a new pipeline run.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `target`: Pipeline target configuration (object with `ref_type`, `ref_name`, and optional `commit_hash`, `selector_type`, `selector_pattern`)
- `variables` (optional): Array of pipeline variables (objects with `key`, `value`, and optional `secured` fields)

#### `stopPipeline`

Stops a running pipeline.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pipeline_uuid`: Pipeline UUID

#### `getPipelineSteps`

Lists steps for a pipeline run.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pipeline_uuid`: Pipeline UUID

#### `getPipelineStep`

Gets details for a specific pipeline step.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pipeline_uuid`: Pipeline UUID
- `step_uuid`: Step UUID

#### `getPipelineStepLogs`

Gets logs for a specific pipeline step.

**Parameters:**

- `workspace`: Bitbucket workspace name
- `repo_slug`: Repository slug
- `pipeline_uuid`: Pipeline UUID
- `step_uuid`: Step UUID

## Development

### Prerequisites

- Node.js 18 or higher
- npm or yarn

### Setup

```bash
# Clone the repository
git clone https://github.com/MatanYemini/bitbucket-mcp.git
cd bitbucket-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run dev
```

## Publishing to