Atlassian Bitbucket
Interaja com o Atlassian Bitbucket Cloud para gerenciar repositórios, pull requests, workspaces e código.
Documentação
Servidor MCP Atlassian Bitbucket
Um servidor Node.js/TypeScript Model Context Protocol (MCP) para Atlassian Bitbucket Cloud. Permite que sistemas de IA (ex.: LLMs como Claude ou Cursor AI) interajam com segurança com seus repositórios, pull requests, workspaces e código em tempo real.
Por que usar este servidor?
- Entrada mínima, saída máxima: Identificadores simples fornecem detalhes abrangentes sem exigir flags extras.
- Visualização rica de código: Obtenha insights detalhados sobre mudanças de código com estatísticas de arquivos, visualizações de diff e contexto inteligente.
- Autenticação local segura: Execute localmente com suas credenciais, nunca armazenando tokens em servidores remotos.
- Respostas Markdown intuitivas: Formatação Markdown bem estruturada e consistente para todas as saídas.
- Integração completa com Bitbucket: Acesse workspaces, repositórios, pull requests, comentários, busca de código e muito mais.
O que é MCP?
Model Context Protocol (MCP) é um padrão aberto para conectar com segurança sistemas de IA a ferramentas externas e fontes de dados. Este servidor implementa MCP para Bitbucket Cloud, permitindo que assistentes de IA interajam com seus dados do Bitbucket programaticamente.
Pré-requisitos
- Node.js (>=18.x): Download
- Conta Bitbucket Cloud
Configuração
Passo 1: Autenticar
Escolha um dos seguintes métodos de autenticação:
Opção A: Senha de aplicativo Bitbucket (recomendado)
Gere uma em Bitbucket App Passwords. Permissões mínimas:
- Workspaces: Leitura
- Repositórios: Leitura
- Pull Requests: Leitura
Você também pode definir BITBUCKET_DEFAULT_WORKSPACE para especificar um workspace padrão quando não for fornecido explicitamente.
Opção B: Token da API Atlassian
Gere um em Atlassian API Tokens.
Nota: Senhas de aplicativo Bitbucket são fortemente recomendadas, pois fornecem permissões mais granulares e específicas do Bitbucket.
Passo 2: Configurar credenciais
Opção A: Arquivo de configuração MCP (recomendado)
Edite ou crie ~/.mcp/configs.json:
Usando senha de aplicativo Bitbucket:
{
"bitbucket": {
"environments": {
"ATLASSIAN_BITBUCKET_USERNAME": "<your_username>",
"ATLASSIAN_BITBUCKET_APP_PASSWORD": "<your_app_password>"
}
}
}
Usando token da API Atlassian:
{
"bitbucket": {
"environments": {
"ATLASSIAN_SITE_NAME": "bitbucket",
"ATLASSIAN_USER_EMAIL": "<your_email>",
"ATLASSIAN_API_TOKEN": "<your_api_token>"
}
}
}
Opção B: Variáveis de ambiente
export ATLASSIAN_BITBUCKET_USERNAME="<your_username>"
export ATLASSIAN_BITBUCKET_APP_PASSWORD="<your_app_password>"
Passo 3: Instalar e executar
Início rápido com npx
npx -y @aashari/mcp-server-atlassian-bitbucket ls-workspaces
Instalação global
npm install -g @aashari/mcp-server-atlassian-bitbucket
mcp-atlassian-bitbucket ls-workspaces
Passo 4: Conectar ao assistente de IA
Configure seu cliente compatível com MCP (ex.: Claude, Cursor AI):
{
"mcpServers": {
"bitbucket": {
"command": "npx",
"args": ["-y", "@aashari/mcp-server-atlassian-bitbucket"]
}
}
}
Ferramentas MCP
As ferramentas MCP usam nomes snake_case, parâmetros camelCase e retornam respostas formatadas em Markdown.
- bb_ls_workspaces: Lista workspaces disponíveis (
query: str opcional). Uso: Visualizar workspaces acessíveis. - bb_get_workspace: Obtém detalhes do workspace (
workspaceSlug: str obrigatório). Uso: Visualizar informações do workspace. - bb_ls_repos: Lista repositórios (
workspaceSlug: str opcional,projectKey: str opcional,query: str opcional,role: str opcional). Uso: Encontrar repositórios. - bb_get_repo: Obtém detalhes do repositório (
workspaceSlug: str obrigatório,repoSlug: str obrigatório). Uso: Acessar informações do repositório. - bb_search: Pesquisa conteúdo do Bitbucket (
workspaceSlug: str obrigatório,query: str obrigatório,scope: str opcional,language: str opcional,extension: str opcional). Uso: Encontrar código ou PRs. - bb_ls_prs: Lista pull requests (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,state: str opcional). Uso: Visualizar PRs abertos ou mesclados. - bb_get_pr: Obtém detalhes do PR (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,prId: str obrigatório). Uso: Visualizar detalhes do PR com diffs. - bb_ls_pr_comments: Lista comentários do PR (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,prId: str obrigatório). Uso: Visualizar discussões do PR. - bb_add_pr_comment: Adiciona comentário ao PR (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,prId: str obrigatório,content: str obrigatório,inline: obj opcional). Uso: Adicionar feedback aos PRs. - bb_add_pr: Cria um PR (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,title: str obrigatório,sourceBranch: str obrigatório,targetBranch: str opcional). Uso: Criar novos PRs. - bb_add_branch: Cria uma branch (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,newBranchName: str obrigatório,sourceBranchOrCommit: str opcional). Uso: Criar uma branch de feature. - bb_clone_repo: Clona um repositório (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,targetPath: str obrigatório). Uso: Clonar código localmente. - bb_get_commit_history: Obtém histórico de commits (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,revision: str opcional,path: str opcional). Uso: Visualizar histórico de código. - bb_get_file: Obtém conteúdo do arquivo (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,filePath: str obrigatório,revision: str opcional). Uso: Visualizar arquivo específico. - bb_diff_branches: Mostra diff entre branches (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,sourceBranch: str obrigatório,targetBranch: str obrigatório). Uso: Comparar branches. - bb_diff_commits: Mostra diff entre commits (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,sourceCommit: str obrigatório,targetCommit: str obrigatório). Uso: Comparar commits. - bb_list_branches: Lista branches (
workspaceSlug: str obrigatório,repoSlug: str obrigatório,query: str opcional,sort: str opcional). Uso: Visualizar todas as branches.
Exemplos de ferramentas MCP (clique para expandir)
bb_ls_workspaces
Listar todos os workspaces:
{}
Pesquisar workspaces:
{ "query": "devteam" }
bb_get_workspace
Obter detalhes do workspace:
{ "workspaceSlug": "acme-corp" }
bb_ls_repos
Listar repositórios no workspace:
{ "workspaceSlug": "acme-corp", "projectKey": "PROJ" }
Listar repositórios usando workspace padrão:
{ "projectKey": "PROJ" }
bb_get_repo
Obter detalhes do repositório:
{ "workspaceSlug": "acme-corp", "repoSlug": "backend-api" }
bb_search
Pesquisar código:
{
"workspaceSlug": "acme-corp",
"query": "Logger",
"scope": "code",
"language": "typescript"
}
bb_ls_prs
Listar PRs abertos:
{ "workspaceSlug": "acme-corp", "repoSlug": "frontend-app", "state": "OPEN" }
bb_get_pr
Obter detalhes do PR:
{ "workspaceSlug": "acme-corp", "repoSlug": "frontend-app", "prId": "42" }
bb_ls_pr_comments
Listar comentários do PR:
{ "workspaceSlug": "acme-corp", "repoSlug": "frontend-app", "prId": "42" }
bb_add_pr_comment
Adicionar comentário geral:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app",
"prId": "42",
"content": "Looks good."
}
Adicionar comentário inline:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app",
"prId": "42",
"content": "Consider refactoring.",
"inline": { "path": "src/utils.js", "line": 42 }
}
bb_add_pr
Criar pull request:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app",
"title": "Add login screen",
"sourceBranch": "feature/login"
}
bb_add_branch
Criar nova branch:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app",
"newBranchName": "feature/new-feature",
"sourceBranchOrCommit": "main"
}
bb_clone_repo
Clonar repositório:
{
"workspaceSlug": "acme-corp",
"repoSlug": "backend-api",
"targetPath": "/Users/me/projects"
}
bb_get_commit_history
Visualizar histórico de commits:
{
"workspaceSlug": "acme-corp",
"repoSlug": "backend-api"
}
Histórico de commits filtrado:
{
"workspaceSlug": "acme-corp",
"repoSlug": "backend-api",
"revision": "develop",
"path": "src/main/java/com/acme/service/UserService.java"
}
bb_get_file
Obter conteúdo do arquivo:
{
"workspaceSlug": "acme-corp",
"repoSlug": "backend-api",
"filePath": "src/main/java/com/acme/service/Application.java",
"revision": "main"
}
bb_diff_branches
Comparar branches:
{
"workspaceSlug": "acme-corp",
"repoSlug": "web-app",
"sourceBranch": "develop",
"targetBranch": "main"
}
bb_diff_commits
Comparar commits:
{
"workspaceSlug": "acme-corp",
"repoSlug": "web-app",
"sourceCommit": "a1b2c3d",
"targetCommit": "e4f5g6h"
}
bb_list_branches
Listar todas as branches:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app"
}
Branches filtradas:
{
"workspaceSlug": "acme-corp",
"repoSlug": "frontend-app",
"query": "feature/",
"sort": "name"
}
Comandos CLI
Os comandos CLI usam kebab-case. Execute --help para detalhes (ex.: mcp-atlassian-bitbucket ls-workspaces --help).
- ls-workspaces: Lista workspaces (
--query). Ex.:mcp-atlassian-bitbucket ls-workspaces. - get-workspace: Obtém detalhes do workspace (
--workspace-slug). Ex.:mcp-atlassian-bitbucket get-workspace --workspace-slug acme-corp. - ls-repos: Lista repositórios (
--workspace-slug,--project-key,--query). Ex.:mcp-atlassian-bitbucket ls-repos --workspace-slug acme-corp. - get-repo: Obtém detalhes do repositório (
--workspace-slug,--repo-slug). Ex.:mcp-atlassian-bitbucket get-repo --workspace-slug acme-corp --repo-slug backend-api. - search: Pesquisa código (
--workspace-slug,--query,--scope,--language). Ex.:mcp-atlassian-bitbucket search --workspace-slug acme-corp --query "auth". - ls-prs: Lista PRs (
--workspace-slug,--repo-slug,--state). Ex.:mcp-atlassian-bitbucket ls-prs --workspace-slug acme-corp --repo-slug backend-api. - get-pr: Obtém detalhes do PR (
--workspace-slug,--repo-slug,--pr-id). Ex.:mcp-atlassian-bitbucket get-pr --workspace-slug acme-corp --repo-slug backend-api --pr-id 42. - ls-pr-comments: Lista comentários do PR (
--workspace-slug,--repo-slug,--pr-id). Ex.:mcp-atlassian-bitbucket ls-pr-comments --workspace-slug acme-corp --repo-slug backend-api --pr-id 42. - add-pr-comment: Adiciona comentário ao PR (
--workspace-slug,--repo-slug,--pr-id,--content). Ex.:mcp-atlassian-bitbucket add-pr-comment --workspace-slug acme-corp --repo-slug backend-api --pr-id 42 --content "Looks good". - add-pr: Cria PR (
--workspace-slug,--repo-slug,--title,--source-branch). Ex.:mcp-atlassian-bitbucket add-pr --workspace-slug acme-corp --repo-slug backend-api --title "New feature" --source-branch feature/login. - get-file: Obtém conteúdo do arquivo (
--workspace-slug,--repo-slug,--file-path). Ex.:mcp-atlassian-bitbucket get-file --workspace-slug acme-corp --repo-slug backend-api --file-path src/main.js. - add-branch: Cria branch (
--workspace-slug,--repo-slug,--new-branch-name). Ex.:mcp-atlassian-bitbucket add-branch --workspace-slug acme-corp --repo-slug backend-api --new-branch-name feature/new.
Exemplos de comandos CLI (clique para expandir)
Listar e visualizar workspaces/repositórios
# List all workspaces
mcp-atlassian-bitbucket ls-workspaces
# Get details of a specific workspace
mcp-atlassian-bitbucket get-workspace --workspace-slug acme-corp
# List repositories in a workspace
mcp-atlassian-bitbucket ls-repos --workspace-slug acme-corp --project-key PROJ
# Get details of a specific repository
mcp-atlassian-bitbucket get-repo --workspace-slug acme-corp --repo-slug backend-api
Trabalhando com pull requests
# List open pull requests in a repository
mcp-atlassian-bitbucket ls-prs --workspace-slug acme-corp --repo-slug frontend-app --state OPEN
# Get details of a specific pull request with code changes
mcp-atlassian-bitbucket get-pr --workspace-slug acme-corp --repo-slug frontend-app --pr-id 42
# List comments on a pull request
mcp-atlassian-bitbucket ls-pr-comments --workspace-slug acme-corp --repo-slug frontend-app --pr-id 42
# Add a comment to a pull request
mcp-atlassian-bitbucket add-pr-comment --workspace-slug acme-corp --repo-slug frontend-app --pr-id 42 --content "Looks good to merge."
# Create a new pull request
mcp-atlassian-bitbucket add-pr --workspace-slug acme-corp --repo-slug frontend-app --title "Add login screen" --source-branch feature/login
Código e commits
# Search for code
mcp-atlassian-bitbucket search --workspace-slug acme-corp --query "Logger" --scope code --language typescript
# View commit history
mcp-atlassian-bitbucket get-commit-history --workspace-slug acme-corp --repo-slug backend-api --revision develop
# Get file content
mcp-atlassian-bitbucket get-file --workspace-slug acme-corp --repo-slug backend-api --file-path "src/Application.java" --revision main
# Compare branches
mcp-atlassian-bitbucket diff-branches --workspace-slug acme-corp --repo-slug web-app --source-branch develop --target-branch main
# Compare commits
mcp-atlassian-bitbucket diff-commits --workspace-slug acme-corp --repo-slug web-app --source-commit a1b2c3d --target-commit e4f5g6h
Gerenciamento de branches
# List branches
mcp-atlassian-bitbucket list-branches --workspace-slug acme-corp --repo-slug frontend-app --query "feature/" --sort name
# Create a new branch
mcp-atlassian-bitbucket add-branch --workspace-slug acme-corp --repo-slug frontend-app --new-branch-name feature/new-feature --source-branch-or-commit main
# Clone a repository
mcp-atlassian-bitbucket clone --workspace-slug acme-corp --repo-slug backend-api --target-path ./cloned-projects
Formato de resposta
Todas as respostas são formatadas em Markdown, incluindo:
- Título: Operação realizada ou entidade visualizada.
- Contexto: Informações do workspace, repositório, pull request ou branch.
- Conteúdo: Dados principais, como conteúdo de arquivo, detalhes do PR ou resultados de pesquisa.
- Metadados: Carimbos de data/hora, autores e estatísticas.
- Diffs: Mudanças de código com realce de sintaxe para diffs entre branches/commits.
Exemplos de formato de resposta (clique para expandir)
Detalhes do repositório
# Repository: backend-api
**Workspace:** acme-corp
**Full Name:** acme-corp/backend-api
**Language:** Java
**Created:** 2024-01-15 by John Smith
**Updated:** 2025-05-10 (2 days ago)
## Overview
Spring Boot backend API for the ACME product suite.
## Statistics
- **Default Branch:** main
- **Size:** 24.5 MB
- **Commits:** 358
- **Open PRs:** 4
- **Forks:** 3
## Recent Activity
- PR #42: "Add OAuth2 support" by Jane Doe (Open)
- PR #41: "Fix pagination bug" by Alex Kim (Merged)
- PR #40: "Update dependencies" by John Smith (Merged)
*Repository URL: https://bitbucket.org/acme-corp/backend-api*
Revisão de pull request
# Pull Request #42: Add OAuth2 support
**Repository:** acme-corp/backend-api
**Author:** Jane Doe
**State:** OPEN
**Created:** 2025-05-15 (4 days ago)
**Updated:** 2025-05-18 (yesterday)
## Description
Implements OAuth2 authentication flow with support for:
- Authorization code grant
- Refresh tokens
- Token caching
## Changes
- **Files changed:** 7
- **Additions:** 245 lines
- **Deletions:** 32 lines
## Diff for src/auth/OAuthService.java
@@ -10,6 +10,25 @@ public class OAuthService {
private final TokenRepository tokenRepository;
private final HttpClient httpClient;
+ @Autowired
+ public OAuthService(
+ TokenRepository tokenRepository,
+ HttpClient httpClient) {
+ this.tokenRepository = tokenRepository;
+ this.httpClient = httpClient;
+ }
+
+ public TokenResponse refreshToken(String refreshToken) {
+ // Validate refresh token
+ if (StringUtils.isEmpty(refreshToken)) {
+ throw new InvalidTokenException("Refresh token cannot be empty");
+ }
+
+ // Call OAuth server for new access token
+ return httpClient.post("/oauth/token")
+ .body(Map.of("grant_type", "refresh_token", "refresh_token", refreshToken))
+ .execute()
+ .as(TokenResponse.class);
+ }
## Comments (3)
1. **John Smith** (2 days ago):
> Please add unit tests for the refresh token flow
2. **Jane Doe** (yesterday):
> Added tests in the latest commit
3. **Approval by:** Alex Kim (yesterday)
*Pull Request URL: https://bitbucket.org/acme-corp/backend-api/pull-requests/42*
Desenvolvimento
# Clone repository
git clone https://github.com/aashari/mcp-server-atlassian-bitbucket.git
cd mcp-server-atlassian-bitbucket
# Install dependencies
npm install
# Run in development mode
npm run dev:server
# Run tests
npm test
Contribuindo
Contribuições são bem-vindas! Por favor:
- Faça um fork do repositório.
- Crie uma branch de feature (
git checkout -b feature/xyz). - Faça commit das alterações (
git commit -m "Add xyz feature"). - Envie para a branch (
git push origin feature/xyz). - Abra um pull request.
Consulte CONTRIBUTING.md para detalhes.