Skip to main content
Glama
marcusyoda

bitbucket-mcp

by marcusyoda

bitbucket-mcp

MCP-сервер для Bitbucket Cloud. Пул-реквесты, ревью кода, ветки, исходники, пайплайны, вебхуки и переменные, представленные в виде контролируемого набора инструментов вместо сырых REST-вызовов.

CI npm version npm downloads node license MCP


Зачем это нужно

Официальный MCP от Atlassian покрывает только Jira и Confluence. Bitbucket остаётся без внимания, поэтому каждая операция с репозиторием сводится к написанным вручную REST-вызовам: громоздкие полезные нагрузки, отсутствие защитных механизмов и токен, который может получить доступ ко всему, что разрешает область действия.

Этот сервер закрывает этот пробел по трём направлениям:

  • Урезанные полезные нагрузки. Ответы нормализуются до полей, которые вы действительно используете, поэтому ревью PR обходится в долю контекста по сравнению с сырым REST-ответом.

  • Защитные механизмы на сервере, а не в промпте. Защищённые ветки, confirm для разрушительных действий и режим только для чтения применяются до отправки HTTP-запроса.

  • Один инструмент на одно намерение. 55 инструментов, покрывающих рабочие процессы ревью, веток, пайплайнов и вебхуков, вместо одного универсального HTTP-запасного выхода.

flowchart LR
  A["MCP client<br/>(Claude Code, Inspector)"] -->|stdio| B["bitbucket-mcp"]
  B --> C{"Guards"}
  C -->|"read only, confirm,<br/>protected branch,<br/>workspace lock"| D["Bitbucket Cloud<br/>REST API"]
  C -.->|refused before<br/>the HTTP call| A
  B --> E["git over SSH<br/>or HTTPS"]
  E --> F["Repository"]
  D -->|normalized,<br/>trimmed response| A

Related MCP server: Bitbucket MCP

Установка

Пакет опубликован на npm как @marcusyoda/bitbucket-mcp.

Требования

  • Node >= 20

  • API-токен Atlassian с ограниченными правами (см. Аутентификация)

  • SSH-ключ, зарегистрированный в Bitbucket, для инструментов git_* по SSH. Необязательно, если вы используете варианты HTTPS.

Вариант 1: npx, ничего устанавливать не нужно

Самый быстрый путь. Укажите вашему MCP-клиенту на пакет и позвольте npx разрешить его:

npx -y @marcusyoda/bitbucket-mcp

Вариант 2: глобальная установка

npm install -g @marcusyoda/bitbucket-mcp
# or: pnpm add -g @marcusyoda/bitbucket-mcp
bitbucket-mcp

Вариант 3: из исходников

git clone https://github.com/marcusyoda/bitbucket-mcp.git
cd bitbucket-mcp
pnpm install
pnpm build          # dist/index.js

Регистрация в вашем MCP-клиенте

Claude Code, через CLI

claude mcp add bitbucket \
  --env BITBUCKET_EMAIL=you@example.com \
  --env BITBUCKET_API_TOKEN=your-token \
  --env BITBUCKET_WORKSPACE=your-workspace \
  -- npx -y @marcusyoda/bitbucket-mcp

Любой клиент, через .mcp.json

{
  "mcpServers": {
    "bitbucket": {
      "command": "npx",
      "args": ["-y", "@marcusyoda/bitbucket-mcp"],
      "env": {
        "BITBUCKET_EMAIL": "you@example.com",
        "BITBUCKET_API_TOKEN": "your-token",
        "BITBUCKET_WORKSPACE": "your-workspace",
        "BITBUCKET_DEFAULT_REPO": "your-repo-optional"
      }
    }
  }
}

Запускаете из исходников? Замените команду на собранную точку входа:

{ "command": "node", "args": ["/abs/path/to/bitbucket-mcp/dist/index.js"] }

Проверьте подключение, вызвав get_current_user: он прогоняет токен по кругу и возвращает вашу учётную запись Bitbucket.


Аутентификация

Аутентификация выполняется через HTTP Basic с email:api_token. Создайте API-токен с ограниченными правами на id.atlassian.com > Manage account > Security > API tokens.

Области действия токена (детальный выбор, создавайте только то, что используете):

Возможность

Области действия

Проверка аутентификации и личности

read:account

Чтение исходников, веток, репозитория

read:repository:bitbucket

Создание веток и репозиториев через API

write:repository:bitbucket

Ревью, одобрение, отклонение, слияние PR и комментариев

read:pullrequest:bitbucket, write:pullrequest:bitbucket

Пайплайны (чтение, запуск, остановка)

read:pipeline:bitbucket, write:pipeline:bitbucket

Вебхуки

read:webhook:bitbucket, write:webhook:bitbucket

Опционально: чтение переменных пайплайнов и деплоя

admin:repository:bitbucket

Инструменты для работы с переменными (*_variable*, list_deployment_*) требуют admin:repository:bitbucket. Пропустить эту область можно: эти инструменты вернут 403, а всё остальное продолжит работать.

Обоснование и полный реестр решений по правам доступа находятся в PERMISSIONS.md.

Переменные окружения

Скопируйте .env.example в .env для локальных запусков. Никогда не коммитьте его.

Переменная окружения

Назначение

BITBUCKET_EMAIL

Email учётной записи Atlassian, используется REST API

BITBUCKET_API_TOKEN

API-токен с ограниченными правами

BITBUCKET_WORKSPACE

slug рабочего пространства (обязательно)

BITBUCKET_USERNAME

Имя пользователя Bitbucket, не email. Только для HTTPS-инструментов git

BITBUCKET_DEFAULT_REPO

Опционально. Если не задано, repo обязателен в каждом вызове

BITBUCKET_READ_ONLY

true блокирует все записывающие и разрушительные инструменты

BITBUCKET_PROTECTED_BRANCHES

Через запятую, по умолчанию main,dev

BITBUCKET_LOCK_WORKSPACE

true привязывает сессию к BITBUCKET_WORKSPACE

.env пакета загружается только когда BITBUCKET_API_TOKEN отсутствует в окружении. Так лаунчер, внедряющий учётные данные для каждого проекта, всегда побеждает, а случайный .env из другого рабочего пространства никогда не сможет переопределить внедрённый токен.


Модель безопасности

  • BITBUCKET_READ_ONLY=true блокирует все записывающие и разрушительные инструменты до обращения к API.

  • Разрушительные инструменты (merge, decline, delete_*, stop_pipeline, git_commit, git_push, инлайновые комментарии к PR) требуют confirm: true.

  • Создание переменной secured также требует confirm: true.

  • Значения защищённых переменных доступны в API только на запись и никогда не возвращаются и не логируются.

  • Защищённые ветки (BITBUCKET_PROTECTED_BRANCHES, по умолчанию main,dev) жёстко заблокированы от прямого изменения: git_push, git_rebase (когда ветка извлечена), delete_branch и create_branch отказываются работать с ними, даже с confirm. Вносите изменения туда через PR: merge_pull_request в защищённую ветку разрешён с confirm: true.

  • Блокировка рабочего пространства. С BITBUCKET_LOCK_WORKSPACE=true любой вызов, указывающий другое рабочее пространство, отклоняется. Создано для машин, обслуживающих несколько клиентов из одной установки.


Инструменты

Каждый инструмент принимает необязательные workspace и repo для переопределения значений по умолчанию из окружения.

Репозиторий и мета: get_current_user, list_repositories, get_repository, create_repository

Пул-реквесты: list_pull_requests, get_pull_request, get_pull_request_diff, get_pull_request_activity, create_pull_request, update_pull_request, approve_pull_request, unapprove_pull_request, request_changes_pull_request, decline_pull_request (confirm), merge_pull_request (confirm), list_pr_commits, get_diff

Комментарии: list_pr_comments, add_pr_comment (инлайн требует confirm), reply_pr_comment, update_pr_comment, delete_pr_comment (confirm), resolve_comment, react_pr_comment (экспериментально)

Ветки, исходники и git: list_branches, get_branch, create_branch, delete_branch (confirm), get_file_source, list_directory, clone_repo, clone_repo_https, git_commit (confirm), git_rebase, git_push (confirm), git_push_https (confirm). Все инструменты push и работы с ветками отклоняют защищённые ветки.

Пайплайны: list_pipelines, get_pipeline, get_pipeline_steps, get_pipeline_step_log, trigger_pipeline, stop_pipeline (confirm)

Переменные: list_repo_pipeline_variables, upsert_repo_pipeline_variable, delete_repo_pipeline_variable (confirm), list_workspace_variables, list_deployment_environments, list_deployment_variables, upsert_deployment_variable, delete_deployment_variable (confirm)

Вебхуки: list_webhooks, get_webhook, create_webhook, update_webhook, delete_webhook (confirm)

SSH или HTTPS для git

clone_repo, git_commit, git_rebase и git_push используют ваш SSH-ключ, а не токен. Если SSH недоступен, clone_repo_https и git_push_https аутентифицируются с помощью username:token и требуют BITBUCKET_USERNAME. Ограничение для защищённых веток применяется к обоим транспортам.


Известные ограничения

  • react_pr_comment экспериментален. Эмодзи-реакции на комментарии к PR документированы для Bitbucket Data Center, а не Cloud. Инструмент нацелен на endpoint best effort и может вернуть ошибку, если ваше рабочее пространство его не поддерживает.

  • resolve_comment зависит от того, доступно ли разрешение веток обсуждения для репозитория.

  • Не существует endpoint, который перечисляет, какие переменные ожидает пользовательский пайплайн. Эта информация берётся из bitbucket-pipelines.yml; прочитайте его с помощью get_file_source.

  • Для чтения сохранённых значений переменных требуется область администратора.


Разработка

pnpm install
pnpm dev         # tsx watch
pnpm typecheck
pnpm build       # tsup, ESM
pnpm inspect     # build and open the MCP Inspector

Правила проекта и соглашения находятся в CLAUDE.md. Вклад следует рабочему процессу «сначала issue»: каждый коммит ссылается на issue в заголовке в формате type(scope): subject [#N].


Использование

Лицензия MIT, и это буквально так: используйте его на работе, используйте в коммерческих целях, форкайте, встраивайте в свои инструменты, переименовывайте. Не нужно спрашивать разрешения и выполнять ритуалы с указанием авторства, кроме сохранения уведомления о лицензии. Если он сэкономит вам полдня ручного написания REST-вызовов, он уже окупился.

Не хватает инструмента или наткнулись на endpoint Bitbucket, который не покрыт? Откройте issue. Пул-реквесты приветствуются: единственное внутреннее правило — каждый коммит ссылается на issue в заголовке в формате type(scope): subject [#N].

См. LICENSE.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to interact with Bitbucket Cloud repositories, allowing users to manage pull requests, comments, tasks, and branches through natural language commands.
    5,033
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to programmatically manage Bitbucket Cloud resources, including pull requests, repositories, and branches, automating code review workflows.
    189
    MIT

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

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