-
Notifications
You must be signed in to change notification settings - Fork 317
Reduce default GitLab MCP tool surface #547
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -16,13 +16,14 @@ directly from `TOOLSET_DEFINITIONS` in | |||||||||||||
|
|
||||||||||||||
| | Status | Groups | | ||||||||||||||
| |---|---| | ||||||||||||||
| | **Default** — always exposed | [Projects & Namespaces](projects.md), [Projects & Files](repositories.md), [Branches & Commits](branches.md), [Groups](groups.md), [Merge Requests](merge-requests.md), [Issues](issues.md), [Labels](labels.md), [CI Lint](ci.md), [Users & Events](users.md) | | ||||||||||||||
| | **Opt-in** — must be enabled | [Work Items](workitems.md), [Pipelines, Jobs & Deployments](pipelines.md) (also `USE_PIPELINE=true`), [Milestones](milestones.md) (also `USE_MILESTONE=true`), [Wiki](wiki.md) (also `USE_GITLAB_WIKI=true`), [Releases](releases.md), [Tags](tags.md), [Variables](variables.md), [Webhooks](webhooks.md), [Search](search.md), [Dependency Proxy](dependency-proxy.md), [Meta & GraphQL](meta.md) | | ||||||||||||||
| | **Default** — always exposed | [Core](core.md) | | ||||||||||||||
| | **Opt-in** — must be enabled | [Projects & Namespaces](projects.md), [Projects & Files](repositories.md), [Branches & Commits](branches.md), [Groups](groups.md), [Merge Requests](merge-requests.md), [Issues](issues.md), [Labels](labels.md), [Work Items](workitems.md), [CI Lint](ci.md), [Pipelines, Jobs & Deployments](pipelines.md) (also `USE_PIPELINE=true`), [Milestones](milestones.md) (also `USE_MILESTONE=true`), [Wiki](wiki.md) (also `USE_GITLAB_WIKI=true`), [Releases](releases.md), [Tags](tags.md), [Users & Events](users.md), [Variables](variables.md), [Webhooks](webhooks.md), [Search](search.md), [Dependency Proxy](dependency-proxy.md), [Meta & GraphQL](meta.md) | | ||||||||||||||
|
Comment on lines
+19
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep the Meta & GraphQL note separate from toolset enablement.
🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
| **How to enable opt-in groups** (any one is sufficient): | ||||||||||||||
|
|
||||||||||||||
| - `GITLAB_TOOLSETS=<group,…>` — comma-separated toolset IDs. | ||||||||||||||
| - `GITLAB_TOOLSETS=all` — enables every group. | ||||||||||||||
| - `GITLAB_TOOLSETS=merge_requests,issues,repositories,branches,projects,labels,ci,groups,users` — restores the pre-lean default set. | ||||||||||||||
| - `GITLAB_TOOLS=<tool,…>` — enables individual tools regardless of group. | ||||||||||||||
| - `USE_PIPELINE=true` / `USE_MILESTONE=true` / `USE_GITLAB_WIKI=true` — legacy single-group flags (Pipelines, Milestones, Wiki only). | ||||||||||||||
| - Call the `discover_tools` MCP tool at runtime to activate categories for the current session. | ||||||||||||||
|
|
@@ -42,10 +43,54 @@ and [CLI Arguments](../getting-started/cli-arguments.md) for the full list. | |||||||||||||
|
|
||||||||||||||
| Each group has its own page with full parameter tables — click any tool name to jump to its details, or click the group title for the per-group view. | ||||||||||||||
|
|
||||||||||||||
| ### [Core](core.md) | ||||||||||||||
|
|
||||||||||||||
| Lean default starter set for common MR, issue, repository, branch, project, label, and identity workflows. *(35 tools)* | ||||||||||||||
|
Comment on lines
+46
to
+48
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix the Core tool count. The Core section now lists 36 tools, so the “35 tools” label is off by one. Suggested fix-*(35 tools)*
+*(36 tools)*📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`list_merge_requests`](core.md#list_merge_requests) | List merge requests (without project_id: user's MRs; with project_id: project MRs) | 📖 | | ||||||||||||||
| | [`get_merge_request`](core.md#get_merge_request) | Get details of a merge request (mergeRequestIid or branchName required) | 📖 | | ||||||||||||||
| | [`get_merge_request_approval_state`](core.md#get_merge_request_approval_state) | Get merge request approval details including approvers | 📖 | | ||||||||||||||
| | [`list_merge_request_changed_files`](core.md#list_merge_request_changed_files) | List changed file paths in a merge request without diff content (mergeRequestIid or branchName required) | 📖 | | ||||||||||||||
| | [`get_merge_request_file_diff`](core.md#get_merge_request_file_diff) | Get diffs for specific files from a merge request (mergeRequestIid or branchName required) | 📖 | | ||||||||||||||
| | [`list_merge_request_diffs`](core.md#list_merge_request_diffs) | List merge request diffs with pagination (mergeRequestIid or branchName required) | 📖 | | ||||||||||||||
| | [`get_merge_request_diffs`](core.md#get_merge_request_diffs) | Get the changes/diffs of a merge request (mergeRequestIid or branchName required) | 📖 | | ||||||||||||||
| | [`mr_discussions`](core.md#mr_discussions) | List discussion items for a merge request | 📖 | | ||||||||||||||
| | [`create_merge_request`](core.md#create_merge_request) | Create a new merge request | ✏️ | | ||||||||||||||
| | [`create_merge_request_thread`](core.md#create_merge_request_thread) | Create a new thread on a merge request | ✏️ | | ||||||||||||||
| | [`resolve_merge_request_thread`](core.md#resolve_merge_request_thread) | Resolve a thread on a merge request | ✏️ | | ||||||||||||||
| | [`update_merge_request`](core.md#update_merge_request) | Update a merge request (mergeRequestIid or branchName required) | ✏️ | | ||||||||||||||
| | [`list_issues`](core.md#list_issues) | List issues (default: created by current user; use scope='all' for all) | 📖 | | ||||||||||||||
| | [`my_issues`](core.md#my_issues) | List issues assigned to the authenticated user | 📖 | | ||||||||||||||
| | [`get_issue`](core.md#get_issue) | Get details of a specific issue | 📖 | | ||||||||||||||
| | [`create_issue`](core.md#create_issue) | Create a new issue | ✏️ | | ||||||||||||||
| | [`update_issue`](core.md#update_issue) | Update an issue | ✏️ | | ||||||||||||||
| | [`create_issue_note`](core.md#create_issue_note) | Add a note to an issue, optionally replying to a discussion thread | ✏️ | | ||||||||||||||
| | [`list_issue_discussions`](core.md#list_issue_discussions) | List discussions for an issue | 📖 | | ||||||||||||||
| | [`update_issue_description_patch`](core.md#update_issue_description_patch) | Apply a patch (search/replace or unified diff) to an issue description. Reduces token usage by allowing small changes without sending the full description. Supports dry_run to preview changes and create_note to summarize updates. | ✏️ | | ||||||||||||||
| | [`get_file_contents`](core.md#get_file_contents) | Get contents of a file or directory from a GitLab project | 📖 | | ||||||||||||||
| | [`get_repository_tree`](core.md#get_repository_tree) | List files and directories in a repository | 📖 | | ||||||||||||||
| | [`search_repositories`](core.md#search_repositories) | Search for GitLab projects | 📖 | | ||||||||||||||
| | [`get_branch`](core.md#get_branch) | Get branch details (commit, protection status) | 📖 | | ||||||||||||||
| | [`list_branches`](core.md#list_branches) | List branches in project with search filter | 📖 | | ||||||||||||||
| | [`list_commits`](core.md#list_commits) | List repository commits with filtering options | 📖 | | ||||||||||||||
| | [`get_commit`](core.md#get_commit) | Get details of a specific commit | 📖 | | ||||||||||||||
| | [`get_commit_diff`](core.md#get_commit_diff) | Get changes/diffs of a specific commit | 📖 | | ||||||||||||||
| | [`get_file_blame`](core.md#get_file_blame) | Get git blame for a file at a given ref. Each entry maps a contiguous range of source lines to the commit that last changed them (id, author, authored_date, message). Use range_start/range_end to limit blame to specific lines. | 📖 | | ||||||||||||||
| | [`get_project`](core.md#get_project) | Get details of a specific project | 📖 | | ||||||||||||||
| | [`list_projects`](core.md#list_projects) | List projects accessible by the current user | 📖 | | ||||||||||||||
| | [`list_project_members`](core.md#list_project_members) | List members of a GitLab project | 📖 | | ||||||||||||||
| | [`list_labels`](core.md#list_labels) | List labels for a project | 📖 | | ||||||||||||||
| | [`whoami`](core.md#whoami) | Get current authenticated user details | 📖 | | ||||||||||||||
| | [`health_check`](core.md#health_check) | Verify server status and authentication | 📖 | | ||||||||||||||
|
|
||||||||||||||
| ### [Projects & Namespaces](projects.md) | ||||||||||||||
|
|
||||||||||||||
| Project/namespace listing, member queries, group iterations, and server health. *(10 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=projects` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`get_project`](projects.md#get_project) | Get details of a specific project | 📖 | | ||||||||||||||
|
|
@@ -63,6 +108,8 @@ Project/namespace listing, member queries, group iterations, and server health. | |||||||||||||
|
|
||||||||||||||
| Project search/creation/fork plus the Files API for reading and writing repository content without shelling out to git. *(7 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=repositories` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`search_repositories`](repositories.md#search_repositories) | Search for GitLab projects | 📖 | | ||||||||||||||
|
|
@@ -77,6 +124,8 @@ Project search/creation/fork plus the Files API for reading and writing reposito | |||||||||||||
|
|
||||||||||||||
| Branch management, commit listing/inspection, file blame, and CI commit-status manipulation. *(15 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=branches` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`create_branch`](branches.md#create_branch) | Create a new branch | ✏️ | | ||||||||||||||
|
|
@@ -99,6 +148,8 @@ Branch management, commit listing/inspection, file blame, and CI commit-status m | |||||||||||||
|
|
||||||||||||||
| Create new groups and subgroups. *(1 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=groups` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`create_group`](groups.md#create_group) | Create new group or subgroup | ✏️ | | ||||||||||||||
|
|
@@ -107,6 +158,8 @@ Create new groups and subgroups. *(1 tools)* | |||||||||||||
|
|
||||||||||||||
| MR lifecycle — create, update, merge, approve, plus diff/conflict inspection and the full discussion/note/draft API. *(43 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=merge_requests` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`merge_merge_request`](merge-requests.md#merge_merge_request) | Merge a merge request | ✏️ | | ||||||||||||||
|
|
@@ -157,6 +210,8 @@ MR lifecycle — create, update, merge, approve, plus diff/conflict inspection a | |||||||||||||
|
|
||||||||||||||
| Issue CRUD, links, discussions and notes, todos, and emoji reactions. *(24 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=issues` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`create_issue`](issues.md#create_issue) | Create a new issue | ✏️ | | ||||||||||||||
|
|
@@ -188,6 +243,8 @@ Issue CRUD, links, discussions and notes, todos, and emoji reactions. *(24 tools | |||||||||||||
|
|
||||||||||||||
| Project label CRUD. *(5 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=labels` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`list_labels`](labels.md#list_labels) | List labels for a project | 📖 | | ||||||||||||||
|
|
@@ -227,6 +284,8 @@ Modern unified API for issues, tasks, incidents, and other typed work items — | |||||||||||||
|
|
||||||||||||||
| Validate `.gitlab-ci.yml` snippets and project pipeline configs. *(4 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=ci` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`validate_ci_lint`](ci.md#validate_ci_lint) | Validate provided GitLab CI/CD YAML content for a project | 📖 | | ||||||||||||||
|
|
@@ -333,6 +392,8 @@ Tag listing, creation, deletion, and signature inspection. *(5 tools)* | |||||||||||||
|
|
||||||||||||||
| User lookup, the authenticated user (`whoami`), event streams, and markdown attachment upload/download. *(7 tools)* | ||||||||||||||
|
|
||||||||||||||
| > Opt-in. Enable via `GITLAB_TOOLSETS=users` (or `GITLAB_TOOLSETS=all`), list individual tools in `GITLAB_TOOLS=`, or activate at runtime with the `discover_tools` MCP tool. | ||||||||||||||
|
|
||||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`get_users`](users.md#get_users) | Get GitLab user details by usernames | 📖 | | ||||||||||||||
|
|
@@ -408,7 +469,7 @@ Server diagnostics, tool discovery, and the GraphQL escape hatch. *(2 tools)* | |||||||||||||
| | Tool | What it does | R/W | | ||||||||||||||
| |---|---|:-:| | ||||||||||||||
| | [`execute_graphql`](meta.md#execute_graphql) | Execute a GitLab GraphQL query | 📖 | | ||||||||||||||
| | [`discover_tools`](meta.md#discover_tools) | Discover and activate additional tool categories for this session. Available categories: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy. Already-active categories are listed in the response. | 📖 | | ||||||||||||||
| | [`discover_tools`](meta.md#discover_tools) | Discover and activate additional tool categories for this session. Available categories: core, merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy. Already-active categories are listed in the response. | 📖 | | ||||||||||||||
|
|
||||||||||||||
| --- | ||||||||||||||
|
|
||||||||||||||
|
|
||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.