Security
This release includes a security fix for GHSA-q96h-922g-m3h3: with REMOTE_AUTHORIZATION=true and ENABLE_DYNAMIC_PROJECT_SCOPE=true, download_job_artifacts, download_attachment (non-image files) and download_release_asset returned a download_url for any project, ignoring the session's X-GitLab-Allowed-Project-Ids scope. They now check project_id against the session scope or GITLAB_ALLOWED_PROJECT_IDS and return Access denied, and /downloads/* enforces the allowlist sealed into the download token (403). Download URLs issued by earlier releases are rejected with 401; call the tool again for a new URL. GitLab tokens (PAT, OAuth) do not need to be reissued.
What's Changed
✨ Features
- feat: add initialize instructions and help guide tool #912
- feat: add recovery hints and opt-in list summaries #916
- feat: add setup and doctor CLI commands #917
- feat(registry): add a server icon to server.json #907
🐛 Bug Fixes
- fix(downloads): check the project scope of download URLs (security, see above)
- fix(startup): list every credential option in the missing-token hint #905
📝 Documentation
- docs: improve README UX and add llms.txt #913
- docs: add OpenTelemetry MCP notes and registry one-liner #915
- docs: leave GITLAB_PERMISSION_MODE unset in the one-click install badges #906
- docs: define the gitlab-token input in the VS Code install badge #904
🔬 CI/Test
- test: tighten tools/list budget and shorten descriptions #914
- test: cap the default tools/list payload size #909
🔨 Chore
- refactor: move the GitLab request context out of index.ts #910
- refactor(merge-requests): move merge request summary helpers out of index.ts #903
- chore: retire the Smithery config and MCP server card #908
Note
Deprecation notice (#815): legacy flags and env vars will be removed in v3.0. Migrate now; see the issue for the mapping.