bitbucket-mcp
bitbucket-mcp
Servidor MCP para Bitbucket Cloud. Pull requests, revisión de código, ramas, código fuente, pipelines, webhooks y variables, expuestos como una superficie de herramientas controlada en lugar de llamadas REST en crudo.
Por qué existe
El MCP oficial de Atlassian solo cubre Jira y Confluence. Bitbucket queda fuera, así que cada operación de repositorio termina recurriendo a llamadas REST escritas a mano: payloads verbosos, sin salvaguardas, y un token que puede alcanzar cualquier cosa que el alcance permita.
Este servidor cierra esa brecha en tres frentes:
Payloads recortados. Las respuestas se normalizan hasta quedarse con los campos que realmente usas, de modo que revisar una PR cuesta una fracción del contexto que consumiría una respuesta REST cruda.
Salvaguardas en el servidor, no en el prompt. Las ramas protegidas, el
confirmen acciones destructivas y un modo de solo lectura se aplican antes de que la llamada HTTP salga.Una herramienta por intención. 55 herramientas que cubren los flujos de revisión, ramas, pipelines y webhooks, en lugar de una vía de escape HTTP genérica.
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| ARelated MCP server: Bitbucket MCP
Instalación
El paquete se publica en npm como
@marcusyoda/bitbucket-mcp.
Requisitos
Node >= 20
Un token de API de Atlassian con ámbito (consulta Autenticación)
Una clave SSH registrada en Bitbucket, para las herramientas
git_*por SSH. Opcional si usas las variantes HTTPS en su lugar.
Opción 1: npx, sin instalar nada
La vía más rápida. Apunta tu cliente MCP al paquete y deja que npx lo resuelva:
npx -y @marcusyoda/bitbucket-mcpOpción 2: instalación global
npm install -g @marcusyoda/bitbucket-mcp
# or: pnpm add -g @marcusyoda/bitbucket-mcp
bitbucket-mcpOpción 3: desde el código fuente
git clone https://github.com/marcusyoda/bitbucket-mcp.git
cd bitbucket-mcp
pnpm install
pnpm build # dist/index.jsRegistro en tu cliente MCP
Claude Code, mediante 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-mcpCualquier cliente, mediante .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"
}
}
}
}¿Ejecutas desde el código fuente? Sustituye el comando por el punto de entrada compilado:
{ "command": "node", "args": ["/abs/path/to/bitbucket-mcp/dist/index.js"] }Verifica la conexión llamando a get_current_user: hace un viaje de ida y vuelta con el token y
devuelve tu identidad de Bitbucket.
Autenticación
La autenticación es HTTP Basic con email:api_token. Crea un token de API con ámbito en
id.atlassian.com > Manage account > Security > API tokens.
Ámbitos del token (selector granular, crea solo lo que uses):
Capacidad | Ámbitos |
Verificar autenticación e identidad |
|
Leer código fuente, ramas y repositorio |
|
Crear ramas y repositorios mediante la API |
|
Revisar, aprobar, rechazar, fusionar PRs y comentarios |
|
Pipelines (leer, lanzar, detener) |
|
Webhooks |
|
Opcional: leer variables de pipeline y de despliegue |
|
Las herramientas de variables (*_variable*, list_deployment_*) necesitan admin:repository:bitbucket.
Omitir ese ámbito no es problema: esas herramientas devuelven un 403 y todo lo demás sigue funcionando.
La justificación y el registro completo de decisiones sobre permisos están en PERMISSIONS.md.
Entorno
Copia .env.example a .env para ejecuciones locales. Nunca lo incluyas en un commit.
Variable de entorno | Propósito |
| Correo de la cuenta de Atlassian, usado por la API REST |
| Token de API con ámbito |
| Slug del workspace (obligatorio) |
| Nombre de usuario de la cuenta de Bitbucket, no el correo. Solo para las herramientas git por HTTPS |
| Opcional. Sin definir, |
|
|
| Separadas por comas, por defecto |
|
|
El .env del paquete se carga solo cuando BITBUCKET_API_TOKEN no está presente en el
entorno. De ese modo, un lanzador que inyecte credenciales por proyecto siempre prevalece, y un
.env suelto de otro workspace nunca puede sobrescribir el token inyectado.
Modelo de seguridad
BITBUCKET_READ_ONLY=truebloquea toda herramienta de escritura o destructiva antes de que llegue a la API.Las herramientas destructivas (
merge,decline,delete_*,stop_pipeline,git_commit,git_push, comentarios inline en PR) requierenconfirm: true.Crear una variable
securedtambién requiereconfirm: true.Los valores de las variables
securedson de solo escritura en la API y nunca se devuelven ni se registran.Ramas protegidas (
BITBUCKET_PROTECTED_BRANCHES, por defectomain,dev) están bloqueadas por completo contra la mutación directa:git_push,git_rebase(cuando está activa),delete_branchycreate_branchse niegan a apuntar a ellas, incluso conconfirm. Introduce los cambios allí mediante una PR:merge_pull_requestsobre una rama protegida está permitido conconfirm: true.Bloqueo de workspace. Con
BITBUCKET_LOCK_WORKSPACE=true, se rechaza cualquier llamada que nombre un workspace distinto. Pensado para máquinas que atienden a varios clientes desde una sola instalación.
Herramientas
Todas las herramientas aceptan workspace y repo opcionales para sobrescribir los valores por defecto del entorno.
Repositorio y metadatos: get_current_user, list_repositories, get_repository,
create_repository
Pull requests: 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
Comentarios: list_pr_comments, add_pr_comment (inline requiere confirm),
reply_pr_comment, update_pr_comment, delete_pr_comment (confirm),
resolve_comment, react_pr_comment (experimental)
Ramas, código fuente y 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). Todas las herramientas de push y de ramas rechazan las ramas protegidas.
Pipelines: list_pipelines, get_pipeline, get_pipeline_steps,
get_pipeline_step_log, trigger_pipeline, stop_pipeline (confirm)
Variables: 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)
Webhooks: list_webhooks, get_webhook, create_webhook, update_webhook,
delete_webhook (confirm)
SSH o HTTPS para git
clone_repo, git_commit, git_rebase y git_push usan tu clave SSH, no el
token. Cuando SSH no es una opción, clone_repo_https y git_push_https autentican
con username:token y necesitan BITBUCKET_USERNAME. La salvaguarda de ramas protegidas se aplica
a ambos transportes.
Limitaciones conocidas
react_pr_commentes experimental. Las reacciones con emojis en los comentarios de PR están documentadas para Bitbucket Data Center, no para Cloud. La herramienta apunta a un endpoint de mejor esfuerzo y puede devolver un error si tu workspace no lo admite.resolve_commentdepende de que la resolución de hilos de comentarios esté disponible para el repositorio.No existe un endpoint que liste qué variables espera un pipeline personalizado. Esa información viene de
bitbucket-pipelines.yml, léela conget_file_source.Volver a leer los valores almacenados de las variables requiere el ámbito de administrador.
Desarrollo
pnpm install
pnpm dev # tsx watch
pnpm typecheck
pnpm build # tsup, ESM
pnpm inspect # build and open the MCP InspectorLas reglas y convenciones del proyecto están en CLAUDE.md. Las contribuciones siguen el
flujo de trabajo "issue primero": cada commit enlaza un issue en su cabecera, con el formato type(scope): subject [#N].
Úsalo
Con licencia MIT, y esto es literal: úsalo en el trabajo, úsalo comercialmente, hazle fork, incorpóralo a tus propias herramientas, renómbralo. No hay que pedir permiso y no hay ningún ritual de atribución más allá de conservar el aviso de licencia. Si te ahorra una tarde escribiendo llamadas REST a mano, ya se ha pagado por sí mismo.
¿Te falta alguna herramienta o has encontrado un endpoint de Bitbucket que no cubre?
Abre un issue. Las pull requests son
bienvenidas: la única regla de la casa es que cada commit enlace un issue en su cabecera, con
el formato type(scope): subject [#N].
Consulta LICENSE.
This server cannot be installed
Maintenance
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
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
The Buildkite MCP server exposes Buildkite product data (pipelines, builds, jobs, and test data) to AI tools, editors, and agents through the Model Context Protocol. It provides capabilities including pipeline creation and management, build monitoring with specialized tools like 'wait_for_build', efficient log querying using Apache Parquet conversion and caching, and OAuth-based authentication for both read-write and read-only access to Buildkite's REST API.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Bitbucket Cloud repositories, allowing users to manage pull requests, comments, tasks, and branches through natural language commands.5,0331MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Bitbucket Cloud repositories, pull requests, branches, commits, pipelines, issues, and webhooks through the Model Context Protocol.81,058MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Bitbucket Cloud and self-hosted instances for pull request reviews, code search, repository operations, and managing PR comments and approvals.19GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically manage Bitbucket Cloud resources, including pull requests, repositories, and branches, automating code review workflows.189MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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