Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_changes | View unstaged git changes with line-level selection numbers for partial staging. PREFER THIS OVER Key features:
Handling truncated files:
When a file shows Use cases:
After viewing changes, use apply_changes with the line numbers to stage selected changes. Args: paths: Optional list of file paths to filter (default: all files) page_token: Opaque pagination token from previous response page_size_files: Max files per page - safety limit (default: PAGE_SIZE_FILES_DEFAULT) page_size_bytes: Max bytes per page - primary limit (default: PAGE_SIZE_BYTES_DEFAULT) unified: Context lines around changes (default: UNIFIED_LIST_DEFAULT) Returns: JSON string with format: {page_token_next, files: [{path, binary, lines}], stats} |
| diff | View complete diff for a single file without truncation. This tool is designed for viewing the full diff of a single file, regardless of size. Unlike list_changes, this tool will NEVER truncate the output, making it suitable for reviewing large files like lock files or generated code. Use this when you need to:
Args: path: File path to view diff for (required) unified: Context lines around changes (default: UNIFIED_LIST_DEFAULT) Returns: JSON string with format: {path, binary, status, lines, size_bytes} |
| apply_changes | Stage selected lines to git index for partial commits (alternative to After using list_changes to view numbered changes, use this tool to selectively stage specific lines or ranges to the git index. This enables creating multiple logical commits from a single file with intermixed changes. Unlike Number format examples:
The tool updates the git index directly and reports remaining unstaged changes, allowing iterative staging for multiple commits from the same file. Args: path: File path to apply changes to numbers: Change numbers in format: NNNN,MMMM,PPPP-QQQQ Returns: JSON string with format: {applied: [{file, applied_count, after_applying: {diff, unstaged_lines}}], skipped, stats} |
| auto_commit | Start a guided session to organize and commit all unstaged changes with appropriate granularity. This tool helps you organize your changes and create multiple focused commits by:
This tool uses progressive disclosure: it shows only statistics (additions/deletions per file) to avoid token limits. Use list_changes or diff tools to view detailed changes for specific files. Use this when you have multiple logical changes mixed together and want to organize them into separate, well-structured commits. Returns: JSON with recent commits, file statistics, and next steps for the agent |
| unstack | Unstack linear commits into parallel branches for separate PRs. This tool transforms a linear commit history (A -> B -> C -> D) into parallel branches (A -> B, A -> C, A -> D) where each branch contains specific commits cherry-picked from the original history. Use this when you've made multiple changes in sequence but want to create separate PRs for different logical changes. Each branch can be independently reviewed and merged. Example scenario: You have commits: fix-bug -> add-feature -> update-docs You want separate PRs, so you create:
This creates two branches from origin/main:
Args: branches: Dictionary mapping branch names to lists of commit references. Commits can be specified as SHA, branch names, or symbolic refs (e.g., HEAD~2). Commits are cherry-picked in the order specified. parent: Base commit to branch from (default: "origin/main"). All branches will start from this commit. Returns: JSON string with format: { created_branches: [{name, commits_applied, head_sha}], errors: [{branch, commit, error}], stats: {total_branches, successful_branches, failed_branches} } Note: - Existing branches with the same name will cause an error - The current branch is not changed by this operation - Uses low-level git commands (commit-tree, update-ref) to avoid changing working directory |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| auto-commit | Organize and commit changes using git-polite tools. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |