mcp-bitbucket
mcp-bitbucket
Bitbucket Server para agentes de IA y los humanos que están a su lado. Lee pull requests y sus diffs sin clonar, redacta una revisión y publícala con un veredicto, publica tareas bloqueantes, explora código y commits, abre, fusiona o rechaza pull requests — desde un cliente MCP, desde una shell, o desde tu propio TypeScript.
Solo Bitbucket Server / Data Center. Bitbucket Cloud no es compatible.
Paquetes
Paquete | Qué es | Bin |
Cliente de Bitbucket, operaciones, formateadores — todo lo demás es un adaptador fino sobre él | — | |
Servidor MCP, 29 herramientas sobre stdio o Streamable HTTP |
| |
Cliente de shell para las mismas operaciones, infiere el repositorio desde tu remote de git |
| |
Habilidad de Claude Code que enseña a un agente el CLI | — |
Uso de herramientas de Claude Code / Claude Desktop → mcp. Terminal, scripts, CI, agentes que ejecutan comandos → cli. Si construyes algo más → core. Leen las mismas credenciales y se instalan lado a lado.
Related MCP server: Atlassian Bitbucket MCP Server
Requisitos previos
Node.js 18+, pnpm 10+ (
corepack enable)Un token de acceso personal de Bitbucket Server — perfil → Manage Account → HTTP Access Tokens, con lectura de repositorio y escritura de pull requests
Solo para
bb login(llavero del sistema):sudo apt install -y libsecret-1-0 gnome-keyring. Todos los comandos también funcionan conBITBUCKET_TOKEN.
Instalación
pnpm install
pnpm build # core first, then mcp and cliPuntos de entrada: packages/mcp/dist/index.js, packages/cli/dist/index.js.
Inicio rápido
Servidor MCP
claude mcp add mcp-bitbucket \
-e BITBUCKET_URL=https://bitbucket.example.com \
-e BITBUCKET_TOKEN=your-personal-access-token \
-- node /absolute/path/to/mcp-bitbucket/packages/mcp/dist/index.jsO en .mcp.json (${VAR} es expandido por Claude Code, así que no se compromete ningún secreto):
{
"mcpServers": {
"mcp-bitbucket": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mcp-bitbucket/packages/mcp/dist/index.js"],
"env": {
"BITBUCKET_URL": "${BITBUCKET_URL}",
"BITBUCKET_TOKEN": "${BITBUCKET_TOKEN}"
}
}
}
}Transporte HTTP en lugar de stdio: node packages/mcp/dist/index.js --http (puerto 3000) o MCP_HTTP_PORT=8080 node …. Rutas: POST /mcp, GET /mcp (SSE), DELETE /mcp.
CLI bb
pnpm --filter @mcp-bitbucket/cli link --global
bb login # or export BITBUCKET_URL / BITBUCKET_TOKEN
bb whoami # proves authentication — `bb ping` only proves reachability
bb pr get 42 # repository comes from the git origin remoteSuperficie de comandos: packages/cli/README.md o bb --help.
Habilidad de Claude Code
bash packages/skill/scripts/install.sh # ~/.claude/skills/bitbucket-review
bash packages/skill/scripts/install.sh ./.claude # project scopeNecesita bb en PATH y una credencial resoluble.
Configuración
Variables de entorno, .env en la raíz del repositorio se carga automáticamente (cp .env.example .env). El servidor MCP las valida al inicio; el CLI también acepta --url / --token, que tienen prioridad sobre todo.
Variable | Predeterminado | Efecto |
| — | URL base de la instancia. Requerida para el servidor MCP. |
| — | Token de acceso personal. Requerido para el servidor MCP. |
|
| Qué verbos expone el servidor MCP — ver Permisos. |
| sin definir (todos) | Lista blanca de repositorios — ver Permisos. |
| sin definir | Habilita el transporte HTTP en este puerto en lugar de stdio. |
|
|
|
|
| Módulo y versión de REST. |
| resuelto | Slug de usuario que usan las herramientas de revisión, cuando un proxy elimina |
| sin definir | Solo CLI: valor predeterminado para |
Límites
Cada tope numérico vive en packages/core/src/operations/caps.ts y se puede sobrescribir con variables de entorno: BITBUCKET_DIFF_MAX_CHARS (60000), BITBUCKET_DIFF_HEAD_RATIO (0.6), BITBUCKET_DIFF_CONTEXT_LINES (3), BITBUCKET_DIFF_FETCH_MAX_CHARS (12000000), BITBUCKET_DIFF_CACHE_ENTRIES (4), BITBUCKET_CHANGED_FILES_MAX_ITEMS (1000), BITBUCKET_CHANGED_FILES_STATS_MAX_FILES (500). La truncación nunca es silenciosa: la nota nombra el parámetro y la variable que elevan el tope, y lista cada encabezado de hunk omitido.
Permisos
Dos guardas independientes.
MCP_PERMISSION_MODE — solo servidor MCP. Cada herramienta se clasifica como read, write o destructive en packages/mcp/src/permissions.ts; una herramienta prohibida se oculta de ListTools y se rechaza cuando se llama por nombre.
Modo | Herramientas |
sin definir / | 29 |
| 26 — sin |
| 17 |
cualquier otro | 0 — un error tipográfico falla de forma segura, con una advertencia en stderr |
El CLI no lo lee. Una implementación readonly no detiene bb review merge.
Lista blanca de repositorios — ambos puntos de entrada. BITBUCKET_ALLOWED_PROJECTS / BITBUCKET_ALLOWED_REPOS aceptan patrones separados por comas, punto y coma o espacios: PROJ, PROJ/*, PROJ/repo-a. La comprobación se ejecuta dentro del cliente compartido antes de que se abra cualquier socket, por lo que todas las herramientas y todos los comandos bb la heredan. Sin definir significa todos los repositorios. No distingue mayúsculas; los repositorios personales son el proyecto ~username. Un patrón malformado se descarta, nunca se amplía — un valor compuesto solo de patrones malformados no permite nada.
Herramientas
29 herramientas MCP: 17 de lectura, 9 de escritura, 3 destructivas. Parámetros completos en docs/tools.md.
Grupo | Herramientas |
Diagnóstico |
|
Repositorio |
|
Pull request |
|
Comentario |
|
Contexto |
|
Diff |
|
Commit |
|
Explorar |
|
Búsqueda |
|
Revisión |
|
Valores predeterminados notables
La discusión resuelta está oculta.
get_pull_request_comments/bb comment lsnecesitanincludeResolved(--include-resolved) para mostrar hilos y tareas resueltos; la respuesta indica cuántos ocultó. Un filtrostateexplícito anula el valor predeterminado.Las revisiones se redactan, no se publican.
add_pr_draft_comment/bb review draftalmacenan un comentario invisible;submit_pr_reviewpublica todos los comentarios pendientes con un veredicto como una sola notificación.pending: false(--no-pending) publica inmediatamente;discard_pr_draft_reviewdescarta el borrador.bb ping≠ autenticación./application-propertiesresponde 200 de forma anónima en muchas instancias.bb whoamies la comprobación de autenticación.
Desarrollo
pnpm build | typecheck | test | lint | format | clean
pnpm dev:mcp # MCP server from source (tsx)
pnpm cli pr ls # bb from source
pnpm --filter @mcp-bitbucket/core testLa regla de capas que evita que los adaptadores se desvíen:
core no sabe nada de MCP ni del CLI — sin SDK de MCP, sin yargs, sin stdout. Las operaciones toman un cliente más parámetros y devuelven datos estructurados o lanzan una excepción.
Los adaptadores son dueños de la validación de entrada y la forma de salida — zod más la forma de resultado de MCP en
mcp, yargs más texto/--jsonencli. Ninguno se filtra a core.Los mensajes de error se escriben una vez, en core, con marcadores de posición estilo
{projects}/{login}que cada adaptador renderiza en su propio vocabulario — el mismo fallo dice "usalist_projects" a un modelo y "usabb project ls" a ti.Una nueva capacidad es una operación más un formateador en core, luego un adaptador fino en cada uno de
mcpycli.
Docker
La imagen lleva solo el servidor MCP.
docker build -t mcp-bitbucket .
docker run -i --rm -e BITBUCKET_URL=… -e BITBUCKET_TOKEN=… mcp-bitbucket
docker run --rm -p 3000:3000 -e BITBUCKET_URL=… -e BITBUCKET_TOKEN=… -e MCP_HTTP_PORT=3000 mcp-bitbucketSolución de problemas
docs/troubleshooting.md. Los tres más comunes: una herramienta que falta en la lista del cliente significa que MCP_PERMISSION_MODE la ocultó (un valor no reconocido oculta las 29); Refused: … outside the configured repository allowlist significa que la lista blanca no cubre ese repositorio; menos comentarios que en la interfaz web significa que los hilos resueltos están ocultos.
Limitaciones
Solo Bitbucket Server; sin Bitbucket Cloud, sin OAuth/SSO ni contraseñas de aplicación.
bb loginalmacena credenciales solo en el llavero del sistema — sin almacenamiento en texto plano, sin--password.Sin webhooks ni modo dirigido por eventos; el servidor responde a llamadas de herramientas.
Los diffs son texto de diff unificado renderizado por el servidor; los comentarios en línea anclados al diff no se exponen.
search_codenecesita el índice de código de la instancia: rama predeterminada, palabras completas, sin expresiones regulares.MCP_PERMISSION_MODEcontrola solo el servidor MCP; la lista blanca controla ambos.
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 Servers
- AlicenseAqualityBmaintenanceFacilitates interaction with Bitbucket Server for pull request management using the MCP protocol, supporting operations such as creating, merging, commenting, and reviewing pull requests.1566Apache 2.0
- 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
- AlicenseBqualityCmaintenanceEnables LLMs to interact with Bitbucket repositories to manage pull requests, branches, and commits through the Model Context Protocol. It supports repository operations such as searching code, accessing file contents, and comparing branches using natural language.165,033MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI systems to interact with Atlassian Bitbucket Server/Data Center for accessing projects, repositories, branches, files, and managing pull requests.MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server exposing the Backtest360 engine API as tools for AI agents.
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/cuonghuunguyen/bitbucket-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server