list_commits
Retrieve commit history from a Bitbucket repository with optional filtering by branch, file path, or result limit to track code changes.
Instructions
List commits in a repository.
Args:
repo_slug: Repository slug
branch: Filter by branch name (optional)
path: Filter by file path - only commits that modified this path (optional)
limit: Maximum number of results (default: 20)
Returns:
List of commits with hash, message, author, and date
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| repo_slug | Yes | ||
| branch | No | ||
| path | No | ||
| limit | No |
Implementation Reference
- src/server.py:748-773 (handler)MCP tool handler: lists commits via BitbucketClient.list_commits and formats output using CommitSummary pydantic models.@mcp.tool() @handle_bitbucket_error @formatted def list_commits( repo_slug: str, branch: Optional[str] = None, path: Optional[str] = None, limit: int = 20, ) -> dict: """List commits in a repository. Args: repo_slug: Repository slug branch: Filter by branch name (optional) path: Filter by file path - only commits that modified this path (optional) limit: Maximum number of results (default: 20) Returns: List of commits with hash, message, author, and date """ client = get_client() commits = client.list_commits(repo_slug, branch=branch, path=path, limit=validate_limit(limit)) return { "commits": [CommitSummary.from_api(c).model_dump() for c in commits], }
- src/bitbucket_client.py:825-849 (helper)BitbucketClient helper method implementing the API call to list commits using _paginated_list on the commits endpoint.def list_commits( self, repo_slug: str, branch: Optional[str] = None, path: Optional[str] = None, limit: int = 20, ) -> list[dict[str, Any]]: """List commits in a repository. Args: repo_slug: Repository slug branch: Filter by branch (optional) path: Filter by file path (optional) limit: Maximum results to return Returns: List of commit info dicts """ return self._paginated_list( self._repo_path(repo_slug, "commits"), limit=limit, include=branch, path=path, )
- src/models.py:157-188 (schema)Pydantic model CommitSummary used to format and validate commit data in the list_commits tool response.class CommitSummary(BaseModel): """Commit info for list responses.""" hash: str message: str author: str = "" date: Optional[str] = None @field_validator("hash", mode="before") @classmethod def truncate_hash(cls, v: Any) -> str: return (v or "")[:12] @field_validator("message", mode="before") @classmethod def first_line(cls, v: Any) -> str: return (v or "").split("\n")[0] @field_validator("date", mode="before") @classmethod def truncate_ts(cls, v: Any) -> Optional[str]: return truncate_timestamp(v) @classmethod def from_api(cls, data: dict) -> "CommitSummary": return cls( hash=data.get("hash", ""), message=data.get("message"), author=(data.get("author") or {}).get("raw", ""), date=data.get("date"), )
- src/server.py:748-748 (registration)@mcp.tool() decorator registers the list_commits function as an MCP tool.@mcp.tool()