CHANGELOG.mdโข10.6 kB
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.5.0] - 2025-11-27
### ๐ Added (PR #2 by @dirtydiesel46)
- **Merge Request Diffs & Changes**
- `get_merge_request_diffs` - Get complete changes/diffs of a merge request with optional view mode (inline/parallel)
- `list_merge_request_diffs` - List MR diffs with pagination support and unidiff option (GitLab 16.5+)
- `get_branch_diffs` - Compare changes between two branches or commits
- **Commit Operations**
- `get_commit` - Get detailed information about a specific commit, including optional stats
- `get_commit_diff` - Get changes/diffs introduced by a specific commit
- **Discussion Note Management**
- `update_mr_discussion_note` - Modify an existing note in a merge request discussion
- `create_mr_discussion_note` - Add a new note to an existing discussion thread
- `delete_mr_discussion_note` - Delete a note from a merge request discussion
- **Enhanced Merge Request Lookup**
- `get_merge_request` now supports `source_branch` parameter as alternative to `merge_request_iid`
- `update_merge_request` now supports `source_branch` parameter for flexible MR identification
- `get_merge_request_diffs` and `list_merge_request_diffs` support both IID and source_branch
- **Enhanced Commit Filtering** (`get_project_commits`)
- Added `path` filter for file-specific history
- Added `all` option to retrieve all commits
- Added `with_stats` for addition/deletion counts
- Added `first_parent` for merge commit traversal
- Added `order` option (default/topo)
- Added `trailers` for Git trailer parsing
- Added `page` for pagination support
### ๐ Preserved from v1.4.1
- `unresolved_only` filter for `list_mr_discussions`
- `page` parameter for pagination on notes/discussions
- `getWithHeaders` client method for pagination support
### ๐งช Testing
- Added **26 new tests** for all new functionality
- New test files:
- `merge-requests-diffs.test.ts` - MR diff operations
- `merge-requests-discussion-notes.test.ts` - Discussion note operations
- `repository-commits.test.ts` - Commit operations
- **130+ total tests** across 15 test files
### ๐ Backward Compatibility
- **No Breaking Changes**: All existing functionality preserved
- **8 New Tools**: Added without affecting existing tools
- **Enhanced Existing Tools**: `get_merge_request`, `update_merge_request`, `get_project_commits` now support additional parameters
---
## [1.4.1] - 2025-11-26
### ๐ Added
- **Pagination Support**: Added `page` parameter to `list_mr_notes` and `list_mr_discussions` for navigating large comment threads
- **Unresolved Filter**: Added `unresolved_only` parameter to `list_mr_discussions`
- Fetches all discussions server-side and filters to only unresolved ones
- Returns metadata with `total_fetched`, `unresolved_count`, and `filtered` status
- Significantly reduces tokens sent to LLM by excluding resolved discussions
- **Client Enhancement**: Added `getWithHeaders` method to GitLab client for pagination header access
### ๐งช Testing
- Added 4 new tests for pagination and unresolved filtering
- **108 tests** across 12 test files
---
## [1.4.0] - 2025-11-26
### ๐ Added
- **Merge Request Comments & Discussions**: Full support for MR review workflows
- `list_mr_notes` - List all comments on a merge request
- `list_mr_discussions` - List threaded discussions
- `create_mr_note` - Add top-level comments
- `create_mr_discussion` - Create new discussion threads with optional inline code positioning
- `reply_to_mr_discussion` - Reply to existing discussion threads
- `resolve_mr_discussion` - Mark discussions as resolved
- `unresolve_mr_discussion` - Mark discussions as unresolved
- **Merge Request Draft Status Management**
- `mark_mr_as_draft` - Mark MR as draft (adds "Draft:" prefix)
- `mark_mr_as_ready` - Mark MR as ready for review (removes "Draft:" or "WIP:" prefix)
- **Merge Request Templates**
- `list_mr_templates` - List available MR templates in a project
- `get_mr_template` - Get template content for use in MR descriptions
- **Enhanced Merge Request Filtering**
- Added `reviewer_id` filter to `list_merge_requests`
- Added `reviewer_username` filter to `list_merge_requests`
- Filter MRs where you're assigned as reviewer
### ๐งช Testing
- **Modular Test Structure**: Refactored MR tests into focused test files
- `merge-requests.test.ts` - Core MR operations (list, get, create, update)
- `merge-requests-notes.test.ts` - Notes and discussions functionality
- `merge-requests-draft.test.ts` - Draft/ready status management
- `merge-requests-templates.test.ts` - Template operations
- **104 tests** across 12 test files with comprehensive coverage
### ๐ Documentation
- Updated README with new MR review workflow features
- Updated tools.md with all 11 new tools and enhanced parameters
- Added usage examples for comment and review workflows
### ๐ Backward Compatibility
- **No Breaking Changes**: All existing functionality preserved
- **11 New Tools**: Added without affecting existing tools
- **Enhanced Existing Tool**: `list_merge_requests` now supports reviewer filtering
---
## [1.3.1] - 2025-07-12
### ๐ง Bug Fixes
- **Package Distribution**: Fixed npm package to include all required files (86 files vs 10)
- **Binary Execution**: Made CLI executable with proper file permissions
- **Test Compatibility**: Updated test expectations for v1.3.x releases
### ๐ฆ Package Improvements
- Complete modular file structure now included in npm distribution
- Binary `gitlab-mcp-server` command now works correctly via npx
- Increased package size to 141.9 kB to include all handlers and tools
---
## [1.3.0] - 2025-07-12
### ๐ Added
- **Merge Request Updates**: New `update_merge_request` tool for comprehensive merge request management
- Update title, description, assignees, reviewers, labels
- Change state (close/reopen merge requests)
- Modify target branch, milestone, and collaboration settings
- Support for squash, remove source branch, and merge-when-pipeline-succeeds options
- **Token Usage Optimization**: `list_projects` now uses `simple=true` by default, reducing response size from 40k+ tokens to much smaller payloads
- **Modular Architecture**: Complete refactoring into clean, maintainable modules:
- `src/client.ts` - GitLab API client wrapper
- `src/server.ts` - Main MCP server implementation
- `src/handlers/` - Domain-specific handler modules (projects, issues, merge requests, etc.)
- **Comprehensive Test Suite**: 75+ tests with 35%+ code coverage
- Unit tests for all handlers with mocked dependencies
- Integration tests for server initialization
- Configuration loading and validation tests
- Error handling scenarios
- **Enhanced Documentation**: Modular documentation structure in `docs/` folder
- Installation guide with multiple setup options
- Complete tool reference with examples
- TypeScript usage guide
- Development guide for contributors
- Real-world usage examples
### โก Performance
- **90%+ Token Reduction**: Project listing now returns minimal essential data by default
- **Faster API Responses**: Reduced payload sizes improve response times
- **Smart Data Loading**: Use `simple=false` only when full project details are needed
### ๐ง Technical Improvements
- **Modular Codebase**: Broke down 705-line monolithic file into focused modules
- **Better Separation of Concerns**: Clear boundaries between API client, handlers, and server setup
- **Enhanced Type Safety**: Comprehensive TypeScript coverage with strict typing
- **Professional Code Structure**: Follows industry best practices for maintainability
### ๐ Documentation
- **Streamlined README**: Reduced from 503 to 84 lines, focused on quick start
- **Modular Docs**: Organized documentation by topic in dedicated `docs/` folder
- **Usage Examples**: Real-world scenarios and workflow examples
- **Configuration Guide**: Complete setup options and customization
### ๐งช Testing
- **Professional Test Suite**: From 0% to 35%+ code coverage
- **Handler Tests**: Individual testing of all domain handlers
- **Configuration Tests**: Comprehensive config loading and validation
- **Error Handling**: Tests for edge cases and failure scenarios
### ๐ Backward Compatibility
- **No Breaking Changes**: All existing functionality preserved
- **New Features**: Added `update_merge_request` tool without affecting existing tools
- **Opt-in Optimizations**: Default behavior improved, but original behavior available via `simple=false`
- **Seamless Migration**: Existing users benefit from optimizations without code changes
### ๐ฆ Development
- **Better Build Process**: Improved TypeScript compilation and module resolution
- **Enhanced Testing**: Comprehensive test coverage with vitest
- **Code Quality**: ESLint configuration and consistent code style
---
## [1.2.0] - Previous Release
### Added
- Enhanced job trace functionality with partial logs and pagination support
- Complete TypeScript support with comprehensive type definitions
- Development setup with Vitest, ESLint, and comprehensive testing
### Fixed
- Node modules and build artifacts properly excluded from git tracking
---
## [1.1.0] - Previous Release
### Added
- Basic GitLab MCP server functionality
- Project, issue, merge request, and pipeline management
- Initial TypeScript support
---
## How to Update
### For npm users:
```bash
npm update @alosies/gitlab-mcp-server
```
### For npx users (Claude Desktop):
No action needed - npx automatically uses the latest version.
### For global installations:
```bash
npm install -g @alosies/gitlab-mcp-server@latest
```
## Migration Notes
### v1.2.0 โ v1.3.0
- **โ
No breaking changes** - all existing functionality works unchanged
- **๐ Automatic optimization** - `list_projects` now returns minimal data by default for better performance
- **๐ง Enhanced features** - access to new modular architecture and comprehensive testing
- **๐ Better docs** - improved documentation structure for easier reference
If you need the old verbose project listing behavior, you can:
1. Ask Claude to "list projects with full details"
2. The LLM will automatically use `simple=false` parameter
All other tools and functionality remain identical.