MCP server for Atlassian Bitbucket Server (Enterprise) REST API
Server has 27 tools with consistent naming (verb_noun pattern) and complete input schemas. Descriptions are present but generic, most are 50-100 chars, below the 194-char baseline for A+ tools. Parameter descriptions are minimal (10-30 chars), lacking format/constraint details. No output schemas documented. Error handling is absent, no recovery guidance, no actionable error messages. Dangerous/destructive tools lack confirmation patterns. Missing tool annotations (readOnlyHint, destructiveHint). Composition is sound (single responsibility per tool), but descriptions don't guide LLM selection between similar tools (e.g., list_commits vs get_commit_diff).
Browse the file tree of a repository at a given path and revision.
Create a new branch in a repository.
Permanently delete an attachment from a repository. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Delete the metadata associated with an attachment. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Delete a branch from a repository. This action is irreversible. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Permanently delete a project and all its repositories. WARNING: This action is irreversible and will destroy all repositories, pull requests, and data within the project. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1 AND BITBUCKET_ALLOW_DESTRUCTIVE_DELETE=1.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and risking broken tool chains.
Descriptions are generic and under 100 chars (baseline 194 chars). They lack WHEN to use the tool, prerequisites, or how it differs from similar tools. E.g., 'Get details of a specific project by its key' doesn't explain when to call this vs list_projects.
Dangerous/destructive delete tools (delete_branch, delete_pull_request, delete_project, delete_repository) lack confirmation or dry-run patterns. Agents can irreversibly destroy data without a safety gate.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Permanently delete a pull request and all its comments, tasks, and activity. This action is irreversible. The version parameter is required for optimistic locking. Get it from get_pull_request. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Delete a comment on a pull request. This action is irreversible. The version parameter is required for optimistic locking. Get it from get_pull_request_comment. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Delete a task on a pull request. This action is irreversible. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Permanently delete a repository and all its contents. WARNING: This action is irreversible and will destroy all branches, pull requests, commits, and data within the repository. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1 AND BITBUCKET_ALLOW_DESTRUCTIVE_DELETE=1.
Delete a tag from a repository. This action is irreversible. Requires BITBUCKET_ALLOW_DANGEROUS_DELETE=1.
Download an attachment from a repository by its numeric ID. Returns content for text files or a size summary for binary files.
Retrieve the metadata (JSON) associated with an attachment.
Get details of a specific commit.
Get the list of files changed in a commit (paginated).
Get the diff for a specific commit.
Get the default branch of a repository.
Get the raw content of a file from a repository.
Get details of a specific project by its key.
List branches in a repository (paginated).
List commits in a repository (paginated), optionally filtered by branch or path.
List pull requests visible to the authenticated user across all repositories (paginated). Returns PRs from all projects/repos where the user has access, filtered by state and role.
List file paths in a repository directory (paginated).
List pull requests in the authenticated user's inbox (PRs needing review action). The inbox contains PRs where the user has been added as a reviewer and has not yet completed their review.
List all projects visible to the current user (paginated).
List tags in a repository (paginated).
Create or update metadata for an attachment. The metadata field must be valid JSON.
No error handling guidance. Tools do not return actionable error messages (e.g., 'Invalid project_key: must be 2-10 uppercase letters'). LLMs receive raw API errors with no recovery path.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint metadata. LLMs cannot distinguish safe reads from irreversible writes without parsing descriptions.