feat: add cookie-based authentication support for GitLab instances 🍪#100
feat: add cookie-based authentication support for GitLab instances 🍪#100mattweg wants to merge 5 commits intozereight:mainfrom
Conversation
mattweg
commented
Jun 12, 2025
- Add GITLAB_AUTH_COOKIE_PATH environment variable support
- Handle #HttpOnly_ prefix in cookie files properly
- Enable redirect following when cookies are present
- Maintain compatibility with existing token-based auth
- Add GITLAB_AUTH_COOKIE_PATH environment variable support - Handle #HttpOnly_ prefix in cookie files properly - Enable redirect following when cookies are present - Maintain compatibility with existing token-based auth
- Update package name to @mattweg/gitlab-mcp - Bump version to 1.0.63-fork.1 - Add attribution to original author zereight - Add deprecation notice referencing upstream PR zereight#100 - Add repository and homepage URLs for fork
- removed the duplicate GITLAB_AUTH_COOKIE_PATH from README.md
index.ts
Outdated
| // Only add redirect following if we have a cookie | ||
| if (authCookie) { | ||
| DEFAULT_FETCH_CONFIG.redirect = 'follow'; | ||
| } | ||
|
|
There was a problem hiding this comment.
It's neat code. However, I am concerned that it seems to be becoming a code that harms the immutability of constants.
I think we need to refactor it for clean code quality as a whole.
If you have a better direction, please suggest it. If not, we will distribute it after the end of the work.
Thank you
There was a problem hiding this comment.
Great feedback. I'll re-approach it with immutability in mind.
There was a problem hiding this comment.
@mattweg thanks so much for your enthusiastic improvement.
There was a problem hiding this comment.
I was thinking about how to solve this immutably.
Option 1
// Create fetch config based on authentication method
const createFetchConfig = (authCookie) => {
return {
...DEFAULT_FETCH_CONFIG,
// Only add redirect following if we have a cookie
...(authCookie ? { redirect: 'follow' } : {})
};
};
// Then use this function when creating the fetch configuration
const fetchConfig = createFetchConfig(authCookie);Option 2
const DEFAULT_FETCH_CONFIG = {
headers: {},
redirect: 'follow' // Always follow redirects
};I don't have a strong preference. The follow setting won't really hurt anything, but it's not needed for anything other than this type of auth.
…support - Move cookie header setting outside if/else block to ensure it applies to both old (Private-Token) and new (Bearer) GitLab authentication - Fixes issue where cookies were only set for Bearer token auth - Maintains backward compatibility with existing authentication methods - Enables cookie-based authentication for all GitLab instance types Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH with GitLab instances that require cookie-based authentication.
- Add fallback parsing for macOS cookie format - Handle cookie files with different structure than standard Netscape format - Maintain compatibility with existing Linux cookie parsing - Extract cookie name and value from space-separated format Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH on macOS systems.
677833a to
8f4b42d
Compare
- Replace static cookie string with fetch-cookie + tough-cookie - Add proper Netscape cookie format parsing with domain context - Enable automatic cookie handling during OAuth2 redirects - Fixes authentication issues on macOS with enterprise SSO
|
Sorry. The fully functional solution is too complex to be included for this edge case. |
…ookies instead of count This PR fixes the cookie authentication issue by checking for specific session cookies (_gitlab_session or remember_user_token) instead of just counting the number of cookies. This ensures proper authentication with GitLab instances that use cookie-based auth. Closes zereight#100
…ookies instead of count This PR fixes the cookie authentication issue by checking for specific session cookies (_gitlab_session or remember_user_token) instead of just counting the number of cookies. This ensures proper authentication with GitLab instances that use cookie-based auth. Closes zereight#100
- Move session establishment to the beginning of each request handler - Only attempt cookie authentication if GITLAB_AUTH_COOKIE_PATH is set - Use dynamic base URL from GITLAB_API_URL instead of hardcoded URL - Remove redundant session establishment calls Closes zereight#100
…101) * feat: add cookie-based authentication support for GitLab instances 🍪 - Add GITLAB_AUTH_COOKIE_PATH environment variable support - Handle #HttpOnly_ prefix in cookie files properly - Enable redirect following when cookies are present - Maintain compatibility with existing token-based auth * chore: prepare fork for npm publishing as @mattweg/gitlab-mcp - Update package name to @mattweg/gitlab-mcp - Bump version to 1.0.63-fork.1 - Add attribution to original author zereight - Add deprecation notice referencing upstream PR #100 - Add repository and homepage URLs for fork * fix: remove duplicate documentation line - removed the duplicate GITLAB_AUTH_COOKIE_PATH from README.md * fix: move cookie header outside conditional block for universal auth support - Move cookie header setting outside if/else block to ensure it applies to both old (Private-Token) and new (Bearer) GitLab authentication - Fixes issue where cookies were only set for Bearer token auth - Maintains backward compatibility with existing authentication methods - Enables cookie-based authentication for all GitLab instance types Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH with GitLab instances that require cookie-based authentication. * 1.0.63 * fix: add support for macOS cookie format in auth cookie parsing 🍪 - Add fallback parsing for macOS cookie format - Handle cookie files with different structure than standard Netscape format - Maintain compatibility with existing Linux cookie parsing - Extract cookie name and value from space-separated format Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH on macOS systems. * 1.0.64 * chore: update version to 1.0.63-fork.3 * fix: implement proper cookie jar authentication for macOS - Replace static cookie string with fetch-cookie + tough-cookie - Add proper Netscape cookie format parsing with domain context - Enable automatic cookie handling during OAuth2 redirects - Fixes authentication issues on macOS with enterprise SSO * chore: update version to 1.0.63-fork.4 * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * chore: update to fork version 1.0.63-fork.5 with cookie auth support * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * feat: implement robust cookie-based authentication with hybrid parsing - Add support for Netscape cookie file format with #HttpOnly_ prefix handling - Implement hybrid approach using tough-cookie's parse() for robust cookie parsing - Add automatic session establishment for enterprise GitLab authentication - Support cookie file path via GITLAB_AUTH_COOKIE_PATH environment variable - Integrate with fetch-cookie for automatic redirect handling and session persistence - Ensure compatibility with Midway enterprise authentication flow This enables seamless authentication with enterprise GitLab instances that require cookie-based authentication while maintaining clean, maintainable code using widely-supported packages (tough-cookie + fetch-cookie). * chore: bump version to 1.0.63-fork.6 with ultra-clean cookie auth * fix: correct package name to @mattweg/gitlab-mcp for proper npx dependency resolution - Fix package name mismatch that prevented npx from installing dependencies - Bump version to 1.0.63-fork.7 - This resolves cookie authentication issues by ensuring fetch-cookie and tough-cookie are properly installed * Improve cookie authentication with robust session establishment * feat: add cookie-based authentication support This feature adds support for cookie-based authentication with GitLab instances by: - Adding a new GITLAB_AUTH_COOKIE_PATH environment variable to specify the path to a Netscape-format cookie file - Implementing a cookie jar parser that handles standard Netscape cookie format - Adding session establishment logic that checks for GitLab session cookies - Ensuring all API requests use the authenticated session This allows the MCP server to authenticate with GitLab instances that use cookie-based authentication, which is particularly useful for instances that require SSO or other authentication methods that don't support personal access tokens. --------- Co-authored-by: Moon (mattweg's AI assistant) <[email protected]> Co-authored-by: Matt Weg <[email protected]>
…101) * feat: add cookie-based authentication support for GitLab instances 🍪 - Add GITLAB_AUTH_COOKIE_PATH environment variable support - Handle #HttpOnly_ prefix in cookie files properly - Enable redirect following when cookies are present - Maintain compatibility with existing token-based auth * chore: prepare fork for npm publishing as @mattweg/gitlab-mcp - Update package name to @mattweg/gitlab-mcp - Bump version to 1.0.63-fork.1 - Add attribution to original author zereight - Add deprecation notice referencing upstream PR #100 - Add repository and homepage URLs for fork * fix: remove duplicate documentation line - removed the duplicate GITLAB_AUTH_COOKIE_PATH from README.md * fix: move cookie header outside conditional block for universal auth support - Move cookie header setting outside if/else block to ensure it applies to both old (Private-Token) and new (Bearer) GitLab authentication - Fixes issue where cookies were only set for Bearer token auth - Maintains backward compatibility with existing authentication methods - Enables cookie-based authentication for all GitLab instance types Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH with GitLab instances that require cookie-based authentication. * 1.0.63 * fix: add support for macOS cookie format in auth cookie parsing 🍪 - Add fallback parsing for macOS cookie format - Handle cookie files with different structure than standard Netscape format - Maintain compatibility with existing Linux cookie parsing - Extract cookie name and value from space-separated format Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH on macOS systems. * 1.0.64 * chore: update version to 1.0.63-fork.3 * fix: implement proper cookie jar authentication for macOS - Replace static cookie string with fetch-cookie + tough-cookie - Add proper Netscape cookie format parsing with domain context - Enable automatic cookie handling during OAuth2 redirects - Fixes authentication issues on macOS with enterprise SSO * chore: update version to 1.0.63-fork.4 * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * chore: update to fork version 1.0.63-fork.5 with cookie auth support * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * feat: implement robust cookie-based authentication with hybrid parsing - Add support for Netscape cookie file format with #HttpOnly_ prefix handling - Implement hybrid approach using tough-cookie's parse() for robust cookie parsing - Add automatic session establishment for enterprise GitLab authentication - Support cookie file path via GITLAB_AUTH_COOKIE_PATH environment variable - Integrate with fetch-cookie for automatic redirect handling and session persistence - Ensure compatibility with Midway enterprise authentication flow This enables seamless authentication with enterprise GitLab instances that require cookie-based authentication while maintaining clean, maintainable code using widely-supported packages (tough-cookie + fetch-cookie). * chore: bump version to 1.0.63-fork.6 with ultra-clean cookie auth * fix: correct package name to @mattweg/gitlab-mcp for proper npx dependency resolution - Fix package name mismatch that prevented npx from installing dependencies - Bump version to 1.0.63-fork.7 - This resolves cookie authentication issues by ensuring fetch-cookie and tough-cookie are properly installed * Improve cookie authentication with robust session establishment * feat: add cookie-based authentication support This feature adds support for cookie-based authentication with GitLab instances by: - Adding a new GITLAB_AUTH_COOKIE_PATH environment variable to specify the path to a Netscape-format cookie file - Implementing a cookie jar parser that handles standard Netscape cookie format - Adding session establishment logic that checks for GitLab session cookies - Ensuring all API requests use the authenticated session This allows the MCP server to authenticate with GitLab instances that use cookie-based authentication, which is particularly useful for instances that require SSO or other authentication methods that don't support personal access tokens. --------- Co-authored-by: Moon (mattweg's AI assistant) <[email protected]> Co-authored-by: Matt Weg <[email protected]>
…101) * feat: add cookie-based authentication support for GitLab instances 🍪 - Add GITLAB_AUTH_COOKIE_PATH environment variable support - Handle #HttpOnly_ prefix in cookie files properly - Enable redirect following when cookies are present - Maintain compatibility with existing token-based auth * chore: prepare fork for npm publishing as @mattweg/gitlab-mcp - Update package name to @mattweg/gitlab-mcp - Bump version to 1.0.63-fork.1 - Add attribution to original author zereight - Add deprecation notice referencing upstream PR #100 - Add repository and homepage URLs for fork * fix: remove duplicate documentation line - removed the duplicate GITLAB_AUTH_COOKIE_PATH from README.md * fix: move cookie header outside conditional block for universal auth support - Move cookie header setting outside if/else block to ensure it applies to both old (Private-Token) and new (Bearer) GitLab authentication - Fixes issue where cookies were only set for Bearer token auth - Maintains backward compatibility with existing authentication methods - Enables cookie-based authentication for all GitLab instance types Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH with GitLab instances that require cookie-based authentication. * 1.0.63 * fix: add support for macOS cookie format in auth cookie parsing 🍪 - Add fallback parsing for macOS cookie format - Handle cookie files with different structure than standard Netscape format - Maintain compatibility with existing Linux cookie parsing - Extract cookie name and value from space-separated format Resolves authentication failures when using GITLAB_AUTH_COOKIE_PATH on macOS systems. * 1.0.64 * chore: update version to 1.0.63-fork.3 * fix: implement proper cookie jar authentication for macOS - Replace static cookie string with fetch-cookie + tough-cookie - Add proper Netscape cookie format parsing with domain context - Enable automatic cookie handling during OAuth2 redirects - Fixes authentication issues on macOS with enterprise SSO * chore: update version to 1.0.63-fork.4 * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * chore: update to fork version 1.0.63-fork.5 with cookie auth support * feat: add cookie-based authentication support for enterprise GitLab instances Add support for Netscape cookie file authentication to enable access to enterprise GitLab instances that use SSO/OAuth2 redirects. - Add GITLAB_AUTH_COOKIE_PATH environment variable - Implement cookie jar with proper domain handling for redirects - Use conditional fetch assignment: cookie-enabled when path configured - Maintains backward compatibility: no cookies = original behavior - Zero changes to existing fetch() calls throughout codebase Enables authentication flows like: curl -L -b ~/.midway/cookie Useful for enterprise environments with federated authentication. * feat: implement robust cookie-based authentication with hybrid parsing - Add support for Netscape cookie file format with #HttpOnly_ prefix handling - Implement hybrid approach using tough-cookie's parse() for robust cookie parsing - Add automatic session establishment for enterprise GitLab authentication - Support cookie file path via GITLAB_AUTH_COOKIE_PATH environment variable - Integrate with fetch-cookie for automatic redirect handling and session persistence - Ensure compatibility with Midway enterprise authentication flow This enables seamless authentication with enterprise GitLab instances that require cookie-based authentication while maintaining clean, maintainable code using widely-supported packages (tough-cookie + fetch-cookie). * chore: bump version to 1.0.63-fork.6 with ultra-clean cookie auth * fix: correct package name to @mattweg/gitlab-mcp for proper npx dependency resolution - Fix package name mismatch that prevented npx from installing dependencies - Bump version to 1.0.63-fork.7 - This resolves cookie authentication issues by ensuring fetch-cookie and tough-cookie are properly installed * Improve cookie authentication with robust session establishment * feat: add cookie-based authentication support This feature adds support for cookie-based authentication with GitLab instances by: - Adding a new GITLAB_AUTH_COOKIE_PATH environment variable to specify the path to a Netscape-format cookie file - Implementing a cookie jar parser that handles standard Netscape cookie format - Adding session establishment logic that checks for GitLab session cookies - Ensuring all API requests use the authenticated session This allows the MCP server to authenticate with GitLab instances that use cookie-based authentication, which is particularly useful for instances that require SSO or other authentication methods that don't support personal access tokens. --------- Co-authored-by: Moon (mattweg's AI assistant) <[email protected]> Co-authored-by: Matt Weg <[email protected]>
# 1.0.0 (2025-09-15) ### Bug Fixes * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([5024a2a](5024a2a)) * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([d99c483](d99c483)) * add missing @eslint/js dependency ([cd85a8d](cd85a8d)) * add package-lock.json to .gitignore ([067586c](067586c)) * add package-lock.json to .gitignore ([e7e49f0](e7e49f0)) * avoid error caused by line_range: null in discussion ([d50b7fd](d50b7fd)) * avoid error caused by line_range: null in discussion ([ac2cee2](ac2cee2)) * Correct formatting of GITLAB_API_URL environment variable in README ([06598d7](06598d7)) * Correct formatting of GITLAB_API_URL environment variable in README ([83f395d](83f395d)) * Fix build errors and optimize Docker build ([ee60995](ee60995)) * fix README ([f4b265b](f4b265b)) * fix README ([7323405](7323405)) * GitHub Actions workflow syntax errors ([6d6110c](6d6110c)) * GitHub Actions workflow syntax errors ([55d9a5e](55d9a5e)) * improve error handling for GitLab API rate limit exceeded ([11685d7](11685d7)) * improve error handling for GitLab API rate limit exceeded ([1a30d2c](1a30d2c)) * **list_issues:** add hint for scope all ([478df19](478df19)) * **list_issues:** add hint for scope all ([aa3b2ab](aa3b2ab)) * **list_issues:** make project_id optional ([b242522](b242522)) * **list_issues:** make project_id optional ([7cd4731](7cd4731)) * merge_requests_template can be null ([#79](#79)) ([cd8f0e5](cd8f0e5)) * merge_requests_template can be null ([#79](#79)) ([73fdd8f](73fdd8f)) * Remove deprecated create_issue tool and update ESLint configuration ([b9737ef](b9737ef)) * remove duplicate entry for get_branch_diffs in tools list ([6bc1379](6bc1379)) * remove duplicate entry for get_branch_diffs in tools list ([8398109](8398109)) * rename to source branch ([7b8cbc0](7b8cbc0)) * rename to source branch ([5baa2d1](5baa2d1)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([ab571d2](ab571d2)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([3f630ca](3f630ca)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([40e39d7](40e39d7)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([87efa04](87efa04)) * temporarily disable lint in CI to fix release process ([d552d06](d552d06)) * Update Docker image repository name in workflow ([b97b264](b97b264)) * Update Docker image repository name in workflow ([29ac699](29ac699)) * Update README title and remove duplicate star history chart ([92a3e95](92a3e95)) * Update README title and remove duplicate star history chart ([126fa8c](126fa8c)) ### Features * add branch comparison functionality and update related schemas ([c834ebc](c834ebc)) * add branch comparison functionality and update related schemas ([af81bd4](af81bd4)) * add configuration files and scripts for project setup ✨ ([5b35bc1](5b35bc1)) * add configuration files and scripts for project setup ✨ ([4aac7f5](4aac7f5)) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([402f068](402f068)), closes [#100](#100) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([17b8574](17b8574)), closes [#100](#100) * Add create_merge_request_thread tool for diff notes ([026dd58](026dd58)) * Add create_merge_request_thread tool for diff notes ([23b0348](23b0348)) * Add createDraftNote api support, useful for bulk code review ([5f08153](5f08153)) * Add createDraftNote api support, useful for bulk code review ([73f0c48](73f0c48)) * add docker image and push to dockerhub ([6f78969](6f78969)) * add docker image and push to dockerhub ([4fd7124](4fd7124)) * add GITLAB_LOCK_PROJECT environment variable ([c899a7d](c899a7d)) * add GITLAB_LOCK_PROJECT environment variable ([a102e94](a102e94)) * add issue discussions support ([4c57c37](4c57c37)) * add issue discussions support ([3d06892](3d06892)) * add milestone management commands to README ([5762b32](5762b32)) * add milestone management commands to README ([bd75140](bd75140)) * add my_issues and list_project_members tools ([a519a56](a519a56)) * add my_issues and list_project_members tools ([f33f330](f33f330)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([7e985af](7e985af)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([5a4d416](5a4d416)) * add pagination support for CI job logs to prevent context window flooding ([2905f30](2905f30)) * add pagination support for CI job logs to prevent context window flooding ([f05d8bf](f05d8bf)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([7be17b7](7be17b7)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([916a65a](916a65a)) * add support for creating and updating issue notes ([dc6cc59](dc6cc59)) * add support for creating and updating issue notes ([96d5e49](96d5e49)) * add support for ignoring files in branch diff results using regex patterns ([75fd5e8](75fd5e8)) * add support for ignoring files in branch diff results using regex patterns ([946c49a](946c49a)) * add tools for milestones ([fd1c8b9](fd1c8b9)) * add tools for milestones ([bb0da0a](bb0da0a)) * add user retrieval functions and schemas for GitLab API integration ([005b46a](005b46a)) * add user retrieval functions and schemas for GitLab API integration ([440921a](440921a)) * bump version to 1.0.61 🎉 ([ed032ba](ed032ba)) * bump version to 1.0.61 🎉 ([9a2bc5e](9a2bc5e)) * Decode project_id for GitLab API calls ([08ab135](08ab135)) * Decode project_id for GitLab API calls ([95ad321](95ad321)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([bf369a4](bf369a4)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([e692ddc](e692ddc)) * get merge request default description template on project retrieval ([808c34d](808c34d)) * get merge request default description template on project retrieval ([886faf5](886faf5)) * Gitlab list repository tree tool ([bccd5f2](bccd5f2)) * Gitlab list repository tree tool ([58f51a4](58f51a4)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([3f2b355](3f2b355)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([5f9aecd](5f9aecd)) * implement list_merge_requests functionality ([cc84777](cc84777)) * implement list_merge_requests functionality ([6acecd2](6acecd2)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([7c2578f](7c2578f)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([94b206f](94b206f)) * major release v2.1.0 with comprehensive improvements ([0fabf17](0fabf17)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([56a53b3](56a53b3)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([0006e67](0006e67)) * **release:** 1.0.44 adds pipeline jobs tool ([ea06c21](ea06c21)) * **release:** 1.0.44 adds pipeline jobs tool ([4e4eb46](4e4eb46)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([fef3606](fef3606)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([159da36](159da36)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([009ad97](009ad97)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([6a77b04](6a77b04)) * support resolving merge request notes ([bde83c0](bde83c0)) * support resolving merge request notes ([4c349a3](4c349a3)) * support search by branch for get_merge_request ([20f6275](20f6275)) * support search by branch for get_merge_request ([eaadf24](eaadf24)) * trigger workflow after fix ([435c8f1](435c8f1)) * trigger workflow after fix ([40e2a5d](40e2a5d)) * trigger workflow after jq fix ([5c67d68](5c67d68)) * trigger workflow after jq fix ([116d1f4](116d1f4)) * trigger workflow run ([7acdff9](7acdff9)) * trigger workflow run ([c047571](c047571)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([e967bb5](e967bb5)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([ebec8b1](ebec8b1))
# 1.0.0 (2025-09-19) ### Bug Fixes * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([5024a2a](5024a2a)) * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([d99c483](d99c483)) * add package-lock.json to .gitignore ([067586c](067586c)) * add package-lock.json to .gitignore ([e7e49f0](e7e49f0)) * avoid error caused by line_range: null in discussion ([d50b7fd](d50b7fd)) * avoid error caused by line_range: null in discussion ([ac2cee2](ac2cee2)) * Correct formatting of GITLAB_API_URL environment variable in README ([06598d7](06598d7)) * Correct formatting of GITLAB_API_URL environment variable in README ([83f395d](83f395d)) * fix README ([f4b265b](f4b265b)) * fix README ([7323405](7323405)) * GitHub Actions workflow syntax errors ([6d6110c](6d6110c)) * GitHub Actions workflow syntax errors ([55d9a5e](55d9a5e)) * improve error handling for GitLab API rate limit exceeded ([11685d7](11685d7)) * improve error handling for GitLab API rate limit exceeded ([1a30d2c](1a30d2c)) * **list_issues:** add hint for scope all ([478df19](478df19)) * **list_issues:** add hint for scope all ([aa3b2ab](aa3b2ab)) * **list_issues:** make project_id optional ([b242522](b242522)) * **list_issues:** make project_id optional ([7cd4731](7cd4731)) * merge_requests_template can be null ([#79](#79)) ([cd8f0e5](cd8f0e5)) * merge_requests_template can be null ([#79](#79)) ([73fdd8f](73fdd8f)) * remove duplicate entry for get_branch_diffs in tools list ([6bc1379](6bc1379)) * remove duplicate entry for get_branch_diffs in tools list ([8398109](8398109)) * rename to source branch ([7b8cbc0](7b8cbc0)) * rename to source branch ([5baa2d1](5baa2d1)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([ab571d2](ab571d2)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([3f630ca](3f630ca)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([40e39d7](40e39d7)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([87efa04](87efa04)) * Update Docker image repository name in workflow ([b97b264](b97b264)) * Update Docker image repository name in workflow ([29ac699](29ac699)) * Update README title and remove duplicate star history chart ([92a3e95](92a3e95)) * Update README title and remove duplicate star history chart ([126fa8c](126fa8c)) ### Features * add branch comparison functionality and update related schemas ([c834ebc](c834ebc)) * add branch comparison functionality and update related schemas ([af81bd4](af81bd4)) * add configuration files and scripts for project setup ✨ ([5b35bc1](5b35bc1)) * add configuration files and scripts for project setup ✨ ([4aac7f5](4aac7f5)) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([402f068](402f068)), closes [#100](#100) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([17b8574](17b8574)), closes [#100](#100) * Add create_merge_request_thread tool for diff notes ([026dd58](026dd58)) * Add create_merge_request_thread tool for diff notes ([23b0348](23b0348)) * Add createDraftNote api support, useful for bulk code review ([5f08153](5f08153)) * Add createDraftNote api support, useful for bulk code review ([73f0c48](73f0c48)) * add docker image and push to dockerhub ([6f78969](6f78969)) * add docker image and push to dockerhub ([4fd7124](4fd7124)) * add GITLAB_LOCK_PROJECT environment variable ([c899a7d](c899a7d)) * add GITLAB_LOCK_PROJECT environment variable ([a102e94](a102e94)) * add issue discussions support ([4c57c37](4c57c37)) * add issue discussions support ([3d06892](3d06892)) * add milestone management commands to README ([5762b32](5762b32)) * add milestone management commands to README ([bd75140](bd75140)) * add my_issues and list_project_members tools ([a519a56](a519a56)) * add my_issues and list_project_members tools ([f33f330](f33f330)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([7e985af](7e985af)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([5a4d416](5a4d416)) * add pagination support for CI job logs to prevent context window flooding ([2905f30](2905f30)) * add pagination support for CI job logs to prevent context window flooding ([f05d8bf](f05d8bf)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([7be17b7](7be17b7)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([916a65a](916a65a)) * add support for creating and updating issue notes ([dc6cc59](dc6cc59)) * add support for creating and updating issue notes ([96d5e49](96d5e49)) * add support for ignoring files in branch diff results using regex patterns ([75fd5e8](75fd5e8)) * add support for ignoring files in branch diff results using regex patterns ([946c49a](946c49a)) * add tools for milestones ([fd1c8b9](fd1c8b9)) * add tools for milestones ([bb0da0a](bb0da0a)) * add user retrieval functions and schemas for GitLab API integration ([005b46a](005b46a)) * add user retrieval functions and schemas for GitLab API integration ([440921a](440921a)) * bump version to 1.0.61 🎉 ([ed032ba](ed032ba)) * bump version to 1.0.61 🎉 ([9a2bc5e](9a2bc5e)) * Decode project_id for GitLab API calls ([08ab135](08ab135)) * Decode project_id for GitLab API calls ([95ad321](95ad321)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([bf369a4](bf369a4)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([e692ddc](e692ddc)) * enhance test infrastructure and fix code quality issues ([95b3529](95b3529)) * get merge request default description template on project retrieval ([808c34d](808c34d)) * get merge request default description template on project retrieval ([886faf5](886faf5)) * Gitlab list repository tree tool ([bccd5f2](bccd5f2)) * Gitlab list repository tree tool ([58f51a4](58f51a4)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([3f2b355](3f2b355)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([5f9aecd](5f9aecd)) * implement comprehensive GitLab MCP enhancements v4.4.0 ([60fd9d8](60fd9d8)) * implement list_merge_requests functionality ([cc84777](cc84777)) * implement list_merge_requests functionality ([6acecd2](6acecd2)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([7c2578f](7c2578f)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([94b206f](94b206f)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([56a53b3](56a53b3)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([0006e67](0006e67)) * **release:** 1.0.44 adds pipeline jobs tool ([ea06c21](ea06c21)) * **release:** 1.0.44 adds pipeline jobs tool ([4e4eb46](4e4eb46)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([fef3606](fef3606)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([159da36](159da36)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([009ad97](009ad97)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([6a77b04](6a77b04)) * support resolving merge request notes ([bde83c0](bde83c0)) * support resolving merge request notes ([4c349a3](4c349a3)) * support search by branch for get_merge_request ([20f6275](20f6275)) * support search by branch for get_merge_request ([eaadf24](eaadf24)) * trigger workflow after fix ([435c8f1](435c8f1)) * trigger workflow after fix ([40e2a5d](40e2a5d)) * trigger workflow after jq fix ([5c67d68](5c67d68)) * trigger workflow after jq fix ([116d1f4](116d1f4)) * trigger workflow run ([7acdff9](7acdff9)) * trigger workflow run ([c047571](c047571)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([e967bb5](e967bb5)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([ebec8b1](ebec8b1)) ### BREAKING CHANGES * Major architectural improvements and feature additions - Migrate to Yarn 4 with strict TypeScript configuration - Implement comprehensive GraphQL Work Items API with 1021 tests - Add modular entity architecture (Core, Work Items, MRS, Files, Labels, etc.) - Implement dynamic tool registry with environment-based feature gating - Add comprehensive integration test suite with data lifecycle management - Enhance schema validation with case normalization and error handling - Implement smart user search with transliteration support - Add dual transport mode (stdio/HTTP) with automatic selection - Implement coverage reporting and CI/CD with semantic versioning - Add tool description customization for agentic optimization - Implement label name-to-ID conversion for improved UX - Add comprehensive error handling and logging infrastructure - Migrate from REST to GraphQL for work items operations - Add support for all GitLab Ultimate features and widgets - Implement security enhancements and read-only mode support Version: 4.4.0 (up from upstream 2.0.5) Tests: 1021 comprehensive tests (877 unit + 144 integration) Coverage: 76.69% statement coverage Architecture: Modern TypeScript with strict mode and ESM support
# 1.0.0 (2025-09-19) ### Bug Fixes * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([5024a2a](5024a2a)) * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([d99c483](d99c483)) * add package-lock.json to .gitignore ([067586c](067586c)) * add package-lock.json to .gitignore ([e7e49f0](e7e49f0)) * avoid error caused by line_range: null in discussion ([d50b7fd](d50b7fd)) * avoid error caused by line_range: null in discussion ([ac2cee2](ac2cee2)) * Correct formatting of GITLAB_API_URL environment variable in README ([06598d7](06598d7)) * Correct formatting of GITLAB_API_URL environment variable in README ([83f395d](83f395d)) * fix README ([f4b265b](f4b265b)) * fix README ([7323405](7323405)) * GitHub Actions workflow syntax errors ([6d6110c](6d6110c)) * GitHub Actions workflow syntax errors ([55d9a5e](55d9a5e)) * improve error handling for GitLab API rate limit exceeded ([11685d7](11685d7)) * improve error handling for GitLab API rate limit exceeded ([1a30d2c](1a30d2c)) * **list_issues:** add hint for scope all ([478df19](478df19)) * **list_issues:** add hint for scope all ([aa3b2ab](aa3b2ab)) * **list_issues:** make project_id optional ([b242522](b242522)) * **list_issues:** make project_id optional ([7cd4731](7cd4731)) * merge_requests_template can be null ([#79](#79)) ([cd8f0e5](cd8f0e5)) * merge_requests_template can be null ([#79](#79)) ([73fdd8f](73fdd8f)) * remove duplicate entry for get_branch_diffs in tools list ([6bc1379](6bc1379)) * remove duplicate entry for get_branch_diffs in tools list ([8398109](8398109)) * rename to source branch ([7b8cbc0](7b8cbc0)) * rename to source branch ([5baa2d1](5baa2d1)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([ab571d2](ab571d2)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([3f630ca](3f630ca)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([40e39d7](40e39d7)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([87efa04](87efa04)) * Update Docker image repository name in workflow ([b97b264](b97b264)) * Update Docker image repository name in workflow ([29ac699](29ac699)) * Update README title and remove duplicate star history chart ([92a3e95](92a3e95)) * Update README title and remove duplicate star history chart ([126fa8c](126fa8c)) ### Features * add branch comparison functionality and update related schemas ([c834ebc](c834ebc)) * add branch comparison functionality and update related schemas ([af81bd4](af81bd4)) * add configuration files and scripts for project setup ✨ ([5b35bc1](5b35bc1)) * add configuration files and scripts for project setup ✨ ([4aac7f5](4aac7f5)) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([402f068](402f068)), closes [#100](#100) * add cookie-based authentication support for enterprise GitLab ([#101](#101)) ([17b8574](17b8574)), closes [#100](#100) * Add create_merge_request_thread tool for diff notes ([026dd58](026dd58)) * Add create_merge_request_thread tool for diff notes ([23b0348](23b0348)) * Add createDraftNote api support, useful for bulk code review ([5f08153](5f08153)) * Add createDraftNote api support, useful for bulk code review ([73f0c48](73f0c48)) * add docker image and push to dockerhub ([6f78969](6f78969)) * add docker image and push to dockerhub ([4fd7124](4fd7124)) * add GITLAB_LOCK_PROJECT environment variable ([c899a7d](c899a7d)) * add GITLAB_LOCK_PROJECT environment variable ([a102e94](a102e94)) * add issue discussions support ([4c57c37](4c57c37)) * add issue discussions support ([3d06892](3d06892)) * add milestone management commands to README ([5762b32](5762b32)) * add milestone management commands to README ([bd75140](bd75140)) * add my_issues and list_project_members tools ([a519a56](a519a56)) * add my_issues and list_project_members tools ([f33f330](f33f330)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([7e985af](7e985af)) * Add NPM publish workflow for automated package publishing ([#208](#208)) ([5a4d416](5a4d416)) * add pagination support for CI job logs to prevent context window flooding ([2905f30](2905f30)) * add pagination support for CI job logs to prevent context window flooding ([f05d8bf](f05d8bf)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([7be17b7](7be17b7)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([916a65a](916a65a)) * add support for creating and updating issue notes ([dc6cc59](dc6cc59)) * add support for creating and updating issue notes ([96d5e49](96d5e49)) * add support for ignoring files in branch diff results using regex patterns ([75fd5e8](75fd5e8)) * add support for ignoring files in branch diff results using regex patterns ([946c49a](946c49a)) * add tools for milestones ([fd1c8b9](fd1c8b9)) * add tools for milestones ([bb0da0a](bb0da0a)) * add user retrieval functions and schemas for GitLab API integration ([005b46a](005b46a)) * add user retrieval functions and schemas for GitLab API integration ([440921a](440921a)) * bump version to 1.0.61 🎉 ([ed032ba](ed032ba)) * bump version to 1.0.61 🎉 ([9a2bc5e](9a2bc5e)) * Bump version to 5.0.0 ([9f85a7b](9f85a7b)) * Decode project_id for GitLab API calls ([08ab135](08ab135)) * Decode project_id for GitLab API calls ([95ad321](95ad321)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([bf369a4](bf369a4)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([e692ddc](e692ddc)) * enhance test infrastructure and fix code quality issues ([95b3529](95b3529)) * get merge request default description template on project retrieval ([808c34d](808c34d)) * get merge request default description template on project retrieval ([886faf5](886faf5)) * Gitlab list repository tree tool ([bccd5f2](bccd5f2)) * Gitlab list repository tree tool ([58f51a4](58f51a4)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([3f2b355](3f2b355)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([5f9aecd](5f9aecd)) * implement comprehensive GitLab MCP enhancements v4.4.0 ([60fd9d8](60fd9d8)) * implement list_merge_requests functionality ([cc84777](cc84777)) * implement list_merge_requests functionality ([6acecd2](6acecd2)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([7c2578f](7c2578f)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([94b206f](94b206f)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([56a53b3](56a53b3)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([0006e67](0006e67)) * **release:** 1.0.44 adds pipeline jobs tool ([ea06c21](ea06c21)) * **release:** 1.0.44 adds pipeline jobs tool ([4e4eb46](4e4eb46)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([fef3606](fef3606)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([159da36](159da36)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([009ad97](009ad97)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([6a77b04](6a77b04)) * support resolving merge request notes ([bde83c0](bde83c0)) * support resolving merge request notes ([4c349a3](4c349a3)) * support search by branch for get_merge_request ([20f6275](20f6275)) * support search by branch for get_merge_request ([eaadf24](eaadf24)) * trigger workflow after fix ([435c8f1](435c8f1)) * trigger workflow after fix ([40e2a5d](40e2a5d)) * trigger workflow after jq fix ([5c67d68](5c67d68)) * trigger workflow after jq fix ([116d1f4](116d1f4)) * trigger workflow run ([7acdff9](7acdff9)) * trigger workflow run ([c047571](c047571)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([e967bb5](e967bb5)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([ebec8b1](ebec8b1)) ### BREAKING CHANGES * Major architectural improvements and feature additions - Migrate to Yarn 4 with strict TypeScript configuration - Implement comprehensive GraphQL Work Items API with 1021 tests - Add modular entity architecture (Core, Work Items, MRS, Files, Labels, etc.) - Implement dynamic tool registry with environment-based feature gating - Add comprehensive integration test suite with data lifecycle management - Enhance schema validation with case normalization and error handling - Implement smart user search with transliteration support - Add dual transport mode (stdio/HTTP) with automatic selection - Implement coverage reporting and CI/CD with semantic versioning - Add tool description customization for agentic optimization - Implement label name-to-ID conversion for improved UX - Add comprehensive error handling and logging infrastructure - Migrate from REST to GraphQL for work items operations - Add support for all GitLab Ultimate features and widgets - Implement security enhancements and read-only mode support Version: 4.4.0 (up from upstream 2.0.5) Tests: 1021 comprehensive tests (877 unit + 144 integration) Coverage: 76.69% statement coverage Architecture: Modern TypeScript with strict mode and ESM support
# 1.0.0 (2025-12-24) ### Bug Fixes * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([5024a2a](5024a2a)) * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([d99c483](d99c483)) * add package-lock.json to .gitignore ([067586c](067586c)) * add package-lock.json to .gitignore ([e7e49f0](e7e49f0)) * avoid error caused by line_range: null in discussion ([d50b7fd](d50b7fd)) * avoid error caused by line_range: null in discussion ([ac2cee2](ac2cee2)) * change default HOST from 0.0.0.0 to 127.0.0.1 ([zereight#289](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/289)) ([4225366](4225366)) * **ci:** add Node.js 22 setup for semantic-release ([#13](#13)) ([941a64b](941a64b)) * Correct formatting of GITLAB_API_URL environment variable in README ([06598d7](06598d7)) * Correct formatting of GITLAB_API_URL environment variable in README ([83f395d](83f395d)) * create_or_update_file now properly updates existing files ([#2](#2)) ([6f97958](6f97958)) * fix README ([f4b265b](f4b265b)) * fix README ([7323405](7323405)) * GitHub Actions workflow syntax errors ([6d6110c](6d6110c)) * GitHub Actions workflow syntax errors ([55d9a5e](55d9a5e)) * improve error handling for GitLab API rate limit exceeded ([11685d7](11685d7)) * improve error handling for GitLab API rate limit exceeded ([1a30d2c](1a30d2c)) * **list_issues:** add hint for scope all ([478df19](478df19)) * **list_issues:** add hint for scope all ([aa3b2ab](aa3b2ab)) * **list_issues:** make project_id optional ([b242522](b242522)) * **list_issues:** make project_id optional ([7cd4731](7cd4731)) * merge_requests_template can be null ([zereight#79](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/79)) ([cd8f0e5](cd8f0e5)) * merge_requests_template can be null ([zereight#79](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/79)) ([73fdd8f](73fdd8f)) * pin zod-to-json-schema to 3.24.5 to prevent breakage from v3.25.0 ([zereight#285](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/285)) ([1dfb212](1dfb212)) * remove duplicate entry for get_branch_diffs in tools list ([6bc1379](6bc1379)) * remove duplicate entry for get_branch_diffs in tools list ([8398109](8398109)) * rename to source branch ([7b8cbc0](7b8cbc0)) * rename to source branch ([5baa2d1](5baa2d1)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([ab571d2](ab571d2)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([3f630ca](3f630ca)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([40e39d7](40e39d7)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([87efa04](87efa04)) * Update Docker image repository name in workflow ([b97b264](b97b264)) * Update Docker image repository name in workflow ([29ac699](29ac699)) * Update README title and remove duplicate star history chart ([92a3e95](92a3e95)) * Update README title and remove duplicate star history chart ([126fa8c](126fa8c)) ### Features * add 405 response for GET /mcp endpoint when STREAMABLE_HTTP is enabled. https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#listening-for-messages-from-the-server ([zereight#295](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/295)) ([6a03064](6a03064)) * add branch comparison functionality and update related schemas ([c834ebc](c834ebc)) * add branch comparison functionality and update related schemas ([af81bd4](af81bd4)) * add configuration files and scripts for project setup ✨ ([5b35bc1](5b35bc1)) * add configuration files and scripts for project setup ✨ ([4aac7f5](4aac7f5)) * add cookie-based authentication support for enterprise GitLab ([zereight#101](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/101)) ([402f068](402f068)), closes [zereight#100](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/100) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) * add cookie-based authentication support for enterprise GitLab ([zereight#101](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/101)) ([17b8574](17b8574)), closes [zereight#100](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/100) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) * Add create_merge_request_thread tool for diff notes ([026dd58](026dd58)) * Add create_merge_request_thread tool for diff notes ([23b0348](23b0348)) * Add createDraftNote api support, useful for bulk code review ([5f08153](5f08153)) * Add createDraftNote api support, useful for bulk code review ([73f0c48](73f0c48)) * add docker image and push to dockerhub ([6f78969](6f78969)) * add docker image and push to dockerhub ([4fd7124](4fd7124)) * add GitLab search tools (global, project, group) ([#6](#6)) ([3e2e279](3e2e279)) * add GitLab tool modules with 52 tools and comprehensive tests ([#1](#1)) ([14bc851](14bc851)) * add GITLAB_LOCK_PROJECT environment variable ([c899a7d](c899a7d)) * add GITLAB_LOCK_PROJECT environment variable ([a102e94](a102e94)) * add HTTP transport security features ([#9](#9)) ([0eed0d6](0eed0d6)) * add issue discussions support ([4c57c37](4c57c37)) * add issue discussions support ([3d06892](3d06892)) * add MCP protocol logging for agent observability ([#10](#10)) ([85c4c50](85c4c50)) * add milestone management commands to README ([5762b32](5762b32)) * add milestone management commands to README ([bd75140](bd75140)) * add my_issues and list_project_members tools ([a519a56](a519a56)) * add my_issues and list_project_members tools ([f33f330](f33f330)) * Add NPM publish workflow for automated package publishing ([zereight#208](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/208)) ([7e985af](7e985af)) * Add NPM publish workflow for automated package publishing ([zereight#208](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/208)) ([5a4d416](5a4d416)) * add OAuth2 configuration examples and update documentation for Docker deployments ([1f6f2f8](1f6f2f8)) * add OAuth2 support and update documentation ([52661c4](52661c4)) * add pagination support for CI job logs to prevent context window flooding ([2905f30](2905f30)) * add pagination support for CI job logs to prevent context window flooding ([f05d8bf](f05d8bf)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([7be17b7](7be17b7)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([916a65a](916a65a)) * add support for creating and updating issue notes ([dc6cc59](dc6cc59)) * add support for creating and updating issue notes ([96d5e49](96d5e49)) * add support for ignoring files in branch diff results using regex patterns ([75fd5e8](75fd5e8)) * add support for ignoring files in branch diff results using regex patterns ([946c49a](946c49a)) * add tools for milestones ([fd1c8b9](fd1c8b9)) * add tools for milestones ([bb0da0a](bb0da0a)) * add user retrieval functions and schemas for GitLab API integration ([005b46a](005b46a)) * add user retrieval functions and schemas for GitLab API integration ([440921a](440921a)) * bump version to 1.0.61 🎉 ([ed032ba](ed032ba)) * bump version to 1.0.61 🎉 ([9a2bc5e](9a2bc5e)) * Decode project_id for GitLab API calls ([08ab135](08ab135)) * Decode project_id for GitLab API calls ([95ad321](95ad321)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([bf369a4](bf369a4)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([e692ddc](e692ddc)) * get merge request default description template on project retrieval ([808c34d](808c34d)) * get merge request default description template on project retrieval ([886faf5](886faf5)) * Gitlab list repository tree tool ([bccd5f2](bccd5f2)) * Gitlab list repository tree tool ([58f51a4](58f51a4)) * **gitlab:** GitLab Merge Request Notes and Discussions: Full CRUD + Thread Resolution ([zereight#260](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/260)) ([067cdb6](067cdb6)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([3f2b355](3f2b355)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([5f9aecd](5f9aecd)) * implement gitlab releases endpoint ([zereight#259](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/259)) ([9b5c118](9b5c118)) * implement list_merge_requests functionality ([cc84777](cc84777)) * implement list_merge_requests functionality ([6acecd2](6acecd2)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([7c2578f](7c2578f)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([94b206f](94b206f)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([56a53b3](56a53b3)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([0006e67](0006e67)) * **release:** 1.0.44 adds pipeline jobs tool ([ea06c21](ea06c21)) * **release:** 1.0.44 adds pipeline jobs tool ([4e4eb46](4e4eb46)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([fef3606](fef3606)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([159da36](159da36)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([009ad97](009ad97)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([6a77b04](6a77b04)) * support resolving merge request notes ([bde83c0](bde83c0)) * support resolving merge request notes ([4c349a3](4c349a3)) * support search by branch for get_merge_request ([20f6275](20f6275)) * support search by branch for get_merge_request ([eaadf24](eaadf24)) * trigger workflow after fix ([435c8f1](435c8f1)) * trigger workflow after fix ([40e2a5d](40e2a5d)) * trigger workflow after jq fix ([5c67d68](5c67d68)) * trigger workflow after jq fix ([116d1f4](116d1f4)) * trigger workflow run ([7acdff9](7acdff9)) * trigger workflow run ([c047571](c047571)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([e967bb5](e967bb5)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([ebec8b1](ebec8b1))
# [0.1.0](v0.0.0...v0.1.0) (2025-12-24) ### Bug Fixes * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([5024a2a](5024a2a)) * add `expanded` to `start` and `end` for GitLabDiscussionNoteSchema ([d99c483](d99c483)) * add package-lock.json to .gitignore ([067586c](067586c)) * add package-lock.json to .gitignore ([e7e49f0](e7e49f0)) * avoid error caused by line_range: null in discussion ([d50b7fd](d50b7fd)) * avoid error caused by line_range: null in discussion ([ac2cee2](ac2cee2)) * change default HOST from 0.0.0.0 to 127.0.0.1 ([zereight#289](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/289)) ([4225366](4225366)) * **ci:** add Node.js 22 setup for semantic-release ([#13](#13)) ([941a64b](941a64b)) * Correct formatting of GITLAB_API_URL environment variable in README ([06598d7](06598d7)) * Correct formatting of GITLAB_API_URL environment variable in README ([83f395d](83f395d)) * create_or_update_file now properly updates existing files ([#2](#2)) ([6f97958](6f97958)) * fix README ([f4b265b](f4b265b)) * fix README ([7323405](7323405)) * GitHub Actions workflow syntax errors ([6d6110c](6d6110c)) * GitHub Actions workflow syntax errors ([55d9a5e](55d9a5e)) * improve error handling for GitLab API rate limit exceeded ([11685d7](11685d7)) * improve error handling for GitLab API rate limit exceeded ([1a30d2c](1a30d2c)) * **list_issues:** add hint for scope all ([478df19](478df19)) * **list_issues:** add hint for scope all ([aa3b2ab](aa3b2ab)) * **list_issues:** make project_id optional ([b242522](b242522)) * **list_issues:** make project_id optional ([7cd4731](7cd4731)) * merge_requests_template can be null ([zereight#79](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/79)) ([cd8f0e5](cd8f0e5)) * merge_requests_template can be null ([zereight#79](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/79)) ([73fdd8f](73fdd8f)) * pin zod-to-json-schema to 3.24.5 to prevent breakage from v3.25.0 ([zereight#285](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/285)) ([1dfb212](1dfb212)) * remove duplicate entry for get_branch_diffs in tools list ([6bc1379](6bc1379)) * remove duplicate entry for get_branch_diffs in tools list ([8398109](8398109)) * rename to source branch ([7b8cbc0](7b8cbc0)) * rename to source branch ([5baa2d1](5baa2d1)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([ab571d2](ab571d2)) * **schemas:** make avatar_url nullable in GitLabUserSchema ([3f630ca](3f630ca)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([40e39d7](40e39d7)) * **schemas:** make illustration nullable in GitLabPipelineSchema ([87efa04](87efa04)) * Update Docker image repository name in workflow ([b97b264](b97b264)) * Update Docker image repository name in workflow ([29ac699](29ac699)) * Update README title and remove duplicate star history chart ([92a3e95](92a3e95)) * Update README title and remove duplicate star history chart ([126fa8c](126fa8c)) ### Features * add 405 response for GET /mcp endpoint when STREAMABLE_HTTP is enabled. https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#listening-for-messages-from-the-server ([zereight#295](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/295)) ([6a03064](6a03064)) * add branch comparison functionality and update related schemas ([c834ebc](c834ebc)) * add branch comparison functionality and update related schemas ([af81bd4](af81bd4)) * add configuration files and scripts for project setup ✨ ([5b35bc1](5b35bc1)) * add configuration files and scripts for project setup ✨ ([4aac7f5](4aac7f5)) * add cookie-based authentication support for enterprise GitLab ([zereight#101](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/101)) ([402f068](402f068)), closes [zereight#100](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/100) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) * add cookie-based authentication support for enterprise GitLab ([zereight#101](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/101)) ([17b8574](17b8574)), closes [zereight#100](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/100) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) [tou#cookie](https://github.com/tou/issues/cookie) * Add create_merge_request_thread tool for diff notes ([026dd58](026dd58)) * Add create_merge_request_thread tool for diff notes ([23b0348](23b0348)) * Add createDraftNote api support, useful for bulk code review ([5f08153](5f08153)) * Add createDraftNote api support, useful for bulk code review ([73f0c48](73f0c48)) * add docker image and push to dockerhub ([6f78969](6f78969)) * add docker image and push to dockerhub ([4fd7124](4fd7124)) * add GitLab search tools (global, project, group) ([#6](#6)) ([3e2e279](3e2e279)) * add GitLab tool modules with 52 tools and comprehensive tests ([#1](#1)) ([14bc851](14bc851)) * add GITLAB_LOCK_PROJECT environment variable ([c899a7d](c899a7d)) * add GITLAB_LOCK_PROJECT environment variable ([a102e94](a102e94)) * add HTTP transport security features ([#9](#9)) ([0eed0d6](0eed0d6)) * add issue discussions support ([4c57c37](4c57c37)) * add issue discussions support ([3d06892](3d06892)) * add MCP protocol logging for agent observability ([#10](#10)) ([85c4c50](85c4c50)) * add milestone management commands to README ([5762b32](5762b32)) * add milestone management commands to README ([bd75140](bd75140)) * add my_issues and list_project_members tools ([a519a56](a519a56)) * add my_issues and list_project_members tools ([f33f330](f33f330)) * Add NPM publish workflow for automated package publishing ([zereight#208](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/208)) ([7e985af](7e985af)) * Add NPM publish workflow for automated package publishing ([zereight#208](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/208)) ([5a4d416](5a4d416)) * add OAuth2 configuration examples and update documentation for Docker deployments ([1f6f2f8](1f6f2f8)) * add OAuth2 support and update documentation ([52661c4](52661c4)) * add pagination support for CI job logs to prevent context window flooding ([2905f30](2905f30)) * add pagination support for CI job logs to prevent context window flooding ([f05d8bf](f05d8bf)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([7be17b7](7be17b7)) * add read-only mode support via GITLAB_READ_ONLY_MODE environment variable ([916a65a](916a65a)) * add support for creating and updating issue notes ([dc6cc59](dc6cc59)) * add support for creating and updating issue notes ([96d5e49](96d5e49)) * add support for ignoring files in branch diff results using regex patterns ([75fd5e8](75fd5e8)) * add support for ignoring files in branch diff results using regex patterns ([946c49a](946c49a)) * add tools for milestones ([fd1c8b9](fd1c8b9)) * add tools for milestones ([bb0da0a](bb0da0a)) * add user retrieval functions and schemas for GitLab API integration ([005b46a](005b46a)) * add user retrieval functions and schemas for GitLab API integration ([440921a](440921a)) * bump version to 1.0.61 🎉 ([ed032ba](ed032ba)) * bump version to 1.0.61 🎉 ([9a2bc5e](9a2bc5e)) * Decode project_id for GitLab API calls ([08ab135](08ab135)) * Decode project_id for GitLab API calls ([95ad321](95ad321)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([bf369a4](bf369a4)) * enhance CreateMergeRequest options with assignee, reviewer, and label support ([e692ddc](e692ddc)) * get merge request default description template on project retrieval ([808c34d](808c34d)) * get merge request default description template on project retrieval ([886faf5](886faf5)) * Gitlab list repository tree tool ([bccd5f2](bccd5f2)) * Gitlab list repository tree tool ([58f51a4](58f51a4)) * **gitlab:** GitLab Merge Request Notes and Discussions: Full CRUD + Thread Resolution ([zereight#260](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/260)) ([067cdb6](067cdb6)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([3f2b355](3f2b355)) * Implement add_merge_request_thread_note function for adding notes to existing MR threads ([5f9aecd](5f9aecd)) * implement gitlab releases endpoint ([zereight#259](https://github.com/detailobsessed/efficient-gitlab-mcp/issues/259)) ([9b5c118](9b5c118)) * implement list_merge_requests functionality ([cc84777](cc84777)) * implement list_merge_requests functionality ([6acecd2](6acecd2)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([7c2578f](7c2578f)) * Implement proxy configuration for HTTP/HTTPS/SOCKS ([94b206f](94b206f)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([56a53b3](56a53b3)) * **pipeline:** Add list_pipeline_trigger_jobs tools ([0006e67](0006e67)) * **release:** 1.0.44 adds pipeline jobs tool ([ea06c21](ea06c21)) * **release:** 1.0.44 adds pipeline jobs tool ([4e4eb46](4e4eb46)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([fef3606](fef3606)) * rename ignored_files_regex to excluded_file_patterns and update descriptions for clarity ([159da36](159da36)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([009ad97](009ad97)) * replace GITLAB_LOCK_PROJECT with GITLAB_ALLOWED_PROJECT_IDS ([6a77b04](6a77b04)) * support resolving merge request notes ([bde83c0](bde83c0)) * support resolving merge request notes ([4c349a3](4c349a3)) * support search by branch for get_merge_request ([20f6275](20f6275)) * support search by branch for get_merge_request ([eaadf24](eaadf24)) * trigger workflow after fix ([435c8f1](435c8f1)) * trigger workflow after fix ([40e2a5d](40e2a5d)) * trigger workflow after jq fix ([5c67d68](5c67d68)) * trigger workflow after jq fix ([116d1f4](116d1f4)) * trigger workflow run ([7acdff9](7acdff9)) * trigger workflow run ([c047571](c047571)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([e967bb5](e967bb5)) * trigger workflow with GITLAB_PERSONAL_ACCESS_TOKEN ([ebec8b1](ebec8b1))