A hardened MCP server that exposes Bitbucket Data Center operations to AI coding assistants
12 tools with consistent naming (verb_noun pattern) and basic descriptions. All tools have input schemas with required fields. However, parameter descriptions are sparse or missing entirely, most params lack guidance on format, constraints, or valid values. Output schemas are not documented. Error handling is minimal. Tool descriptions are adequate (50-150 chars) but lack context on when to use each tool vs. alternatives. No tool annotations (readOnlyHint/destructiveHint) despite clear READ/WRITE semantics. Composition is sound (each tool has one responsibility), but parameter documentation falls short of production baseline (100% of A+ tools have param descriptions; this server ~30%).
[WRITE] Clone a Bitbucket Data Center repository into the local workspace. If already cloned, fetches and updates the default branch. Returns the local path.
[WRITE] Stage all changes and create a commit.
[WRITE] Create a new branch in a locally cloned repo.
[WRITE] Open a pull request via REST API. Returns the PR URL.
[READ] Read the raw content of a file from a repository without cloning it.
[READ] Get full details of a pull request by ID, including title, state, author, branches, reviewers, approval count, and description.
Parameter descriptions missing or minimal. Most params (repo_slug, branch_name, commit_message, etc.) lack guidance on format, constraints, or valid values. Baseline: 100% of A+ tools have param descriptions; this server ~20-30%.
Output schemas not documented. Tools return results but LLMs cannot see what fields to expect (e.g., bitbucket_list_branches returns first 100 branches, but no schema shows field names, types, or pagination info).
No tool annotations despite clear READ/WRITE semantics. Descriptions include [READ] and [WRITE] tags, but tools lack readOnlyHint/destructiveHint annotations in schema. LLMs cannot programmatically detect side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
[READ] Get the unified diff of a pull request.
[READ] Retrieve repository metadata.
[READ] List branches of a repository (first 100).
[READ] List files in a repository (or in a subdirectory) at a given branch, without cloning. Useful to explore the structure of a repo.
[READ] List pull requests of a repository, optionally filtered by state (OPEN, DECLINED, MERGED, ALL). Default: OPEN.
[WRITE] Push the current branch to origin.
Minimal error handling guidance. No recovery hints in tool descriptions (e.g., 'If repo not found, try bitbucket_list_repos first'). Errors likely return raw HTTP status codes without actionable next steps.
Parameter naming inconsistency: 'project_key' is optional in some tools (default provided) but required in others. Descriptions do not clarify when it defaults vs. when it is required, forcing LLMs to guess.