mcpField
G
gitlab-mcp-skill

gitlab-mcp-skill

github.com/zereight開発2.1k1.1k 回インストール今日更新
リポジトリ

gitlab-mcp-skill について

gitlab-mcp-skillは、コードレビュー、イシュー管理、プロジェクト作業でエージェントを使う人向けに、GitLab MCPツールのワークフローを案内します。タスク別の手順に加え、パラメーターのヒントや大きな出力を抑える方法も示します。

主な機能

  1. 01コードレビューとマージリクエストの手順
  2. 02イシュー、プロジェクト、ブランチの操作
  3. 03パイプラインとファイル操作の説明
  4. 04ツールセットのオンデマンド有効化
  5. 05パラメーターのヒントと出力削減の案内

活用シーン

  1. 01段階的なマージリクエスト差分の確認
  2. 02GitLabイシューの作成と更新
  3. 03プロジェクトのファイルやブランチの検索
  4. 04大きな差分やログによるコンテキスト消費の削減

MCP 対応

GitLab MCPサーバーのツールについて、ツールセットの有効化や代表的な呼び出し手順を案内します。MCP登録なしでCLIと組み合わせることもできます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/zereight/gitlab-mcp --skill gitlab-mcp-skill

インストール後、Claude Code で/gitlab-mcp-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
code-review.md
issues.md
merge-requests.md
pipelines.md
search.md
vulnerability-triage.md
webhooks.md
work-items.md

詳細

gitlab-mcp

278 個のツールを提供する GitLab MCP サーバーです。24 個のツールセットに含まれる 275 個のツールに加え、execute_graphql、常時利用可能なメタツール discover_tools、および help を提供します。

正確な生成済みパラメーターテーブルについては、docs/tools/ を参照してください。このファイルでは、ワークフローの概要と重要なパラメーターのヒントを確認できます。

ツールセット

ツールセットデフォルト有効にする方法
core(38 個のツール)はいデフォルトの軽量スターターセット
merge_requests(46 個のツール)いいえGITLAB_TOOLSETS=merge_requests
issues(24 個のツール)いいえGITLAB_TOOLSETS=issues
repositories(7 個のツール)いいえGITLAB_TOOLSETS=repositories
branches(16 個のツール)いいえGITLAB_TOOLSETS=branches
projects(11 個のツール)いいえGITLAB_TOOLSETS=projects
labels(5 個のツール)いいえGITLAB_TOOLSETS=labels
ci(4 個のツール)いいえGITLAB_TOOLSETS=ci
groups(1 個のツール)いいえGITLAB_TOOLSETS=groups
users(7 個のツール)いいえGITLAB_TOOLSETS=users
pipelines(58 個のツール)いいえGITLAB_TOOLSETS=core,pipelines(非推奨の USE_PIPELINE。GITLAB_TOOLS が未設定の場合は GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint を設定し、設定済みの場合はリストを置き換えずにこれらのツールを追加します)
milestones(17 個のツール)いいえGITLAB_TOOLSETS=core,milestones(非推奨の USE_MILESTONE)
wiki(10 個のツール)いいえGITLAB_TOOLSETS=core,wiki(非推奨の USE_GITLAB_WIKI)
releases(7 個のツール)いいえGITLAB_TOOLSETS=releases
tags(9 個のツール)いいえGITLAB_TOOLSETS=tags
snippets(5 個のツール)いいえGITLAB_TOOLSETS=snippets
workitems(18 個のツール)いいえGITLAB_TOOLSETS=workitems
webhooks(6 個のツール)いいえGITLAB_TOOLSETS=webhooks
search(3 個のツール)いいえGITLAB_TOOLSETS=search
variables(10 個のツール)いいえGITLAB_TOOLSETS=variables
dependency_proxy(4 個のツール)いいえGITLAB_TOOLSETS=dependency_proxy
vulnerabilities(4 個のツール)いいえGITLAB_TOOLSETS=vulnerabilities
orbit(4 個のツール)いいえGITLAB_TOOLSETS=orbit
api(1 個のツール)いいえGITLAB_TOOLSETS=api のみ(all、discover_tools、GITLAB_TOOLS では有効になりません)

検出可能なツールセットをすべて有効にするには、GITLAB_TOOLSETS=all を設定します(api は有効になりません)。軽量化前のデフォルトに戻すには、GITLAB_TOOLSETS=merge_requests,issues,repositories,branches,projects,labels,ci,groups,users を設定します。GITLAB_TOOLS を使用すると、明示的な指定のみで有効になる gitlab_api_request などのツールを除き、ツールセット外の個別ツールを有効にできます。discover_tools は、api を除き、現在のセッションでオプトイン対象のカテゴリを一覧表示して有効にできます。execute_graphql はツールセットに含まれません。有効にするには GITLAB_TOOLS=execute_graphql を明示的に設定してください。USE_GITLAB_WIKI、USE_MILESTONE、USE_PIPELINE は非推奨です(次のメジャーバージョン(v3.0.0)で削除されます)。すでに GITLAB_TOOLSETS を設定している場合は、置き換えずに既存のリストへツールセットを追加してください。GITLAB_TOOLS が未設定の場合は、GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint を設定してください。すでに設定されている場合は、リストを置き換えずにこれら 2 つのツールを追加してください。

gitlab_api_request は、GITLAB_ALLOWED_GROUPS などのグループ制限、プロジェクトの許可リスト、ツールレベルの制限(他のツールに対する GITLAB_TOOLS、GITLAB_DENIED_TOOLS_REGEX)、および個々のツールの安全チェックを迂回します。トークンの完全な権限スコープが公開されます。プロンプトインジェクションによって、このツールを操作される可能性があります。これらの制限に依存している運用者は、このツールを有効にしてはなりません。GITLAB_ALLOWED_PROJECT_IDS またはセッションのプロジェクトスコープが設定されている場合、許可されたプロジェクトの /projects/:id パスのみが受け付けられます。/search、/users、/groups/:id、/runners などのパスは拒否されます。別のプロジェクトを指定する本文およびクエリパラメーターはチェックされません。GITLAB_PROJECT_ID と OAuth のグループ許可リストは適用されません。

上記のツールセットごとの数を合計すると 315 になります。これは、38 個の core ツールがそれぞれ完全なカテゴリにも記載されているためです(get_branch と list_branches は merge_requests と branches の両方にも記載されています)。全ツールセットを通した重複のないツール数は 275 です。

主なワークフロー

コードレビュー(reference/code-review.md を参照)
  1. list_merge_request_changed_files — ファイルパスのみを取得します(差分は取得しません)
  2. get_merge_request_file_diff — 1 回の呼び出しにつき、3~5 ファイルの差分を取得します(一括処理)
  3. create_merge_request_thread または create_draft_note — レビューコメントを残します
  4. bulk_publish_draft_notes — すべての下書きを一度に公開します
MR のライフサイクル(reference/merge-requests.md を参照)

create_merge_request -> レビュー -> approve_merge_request -> merge_merge_request

イシュー管理(reference/issues.md を参照)

create_issue -> create_issue_link -> create_issue_note -> update_issue

長いイシューの説明を少しだけ編集する場合は、本文全体を再送信する代わりに update_issue_description_patch を使用してください。

プロジェクトと名前空間
  • get_project、list_projects、update_project — プロジェクト設定を確認または変更します
  • list_project_members、list_group_members — プロジェクトまたはグループ内のメンバーを名前またはユーザー名で検索します
  • list_namespaces、get_namespace、verify_namespace — プロジェクト/グループを作成する前に、対象の名前空間を確認します
  • verify_namespace.parent_id は、ネストされた名前空間の確認範囲を指定します
  • create_repository.namespace_id は、グループ名前空間の下にプロジェクトを作成します
ブランチとコミット
  • create_branch、list_branches、get_branch、delete_branch
  • 保護ブランチ:list_protected_branches、get_protected_branch、protect_branch、update_protected_branch、unprotect_branch、update_default_branch(protect_branch はルールを新規作成するだけで、既存のルールがある場合は 409 を返します。保護を解除してから再設定するのではなく、get_protected_branch のレコード id を使って update_protected_branch で既存のルールを変更してください)
  • コミット:list_commits、get_commit、get_commit_diff、get_file_blame、list_commit_statuses、create_commit_status
タグ
  • list_tags、get_tag、create_tag、delete_tag、get_tag_signature
  • 保護タグ:list_protected_tags、get_protected_tag、protect_tag、unprotect_tag(create_access_level は 0、30、または 40 です。v* などのワイルドカードを使用できます)
CI
  • Lint 設定:validate_ci_lint、validate_project_ci_lint
  • カタログ:list_ci_catalog_resources、get_ci_catalog_resource
  • パイプライン/ジョブ/デプロイ:reference/pipelines.md を参照してください
作業項目(reference/work-items.md を参照)

list_work_items -> get_work_item -> update_work_item -> create_work_item_note

変数と依存関係プロキシ

GITLAB_TOOLSETS=variables または GITLAB_TOOLSETS=dependency_proxy で有効にします。

  • 変数:プロジェクト/グループ用の CRUD ツール(list_*_variables、get_*_variable、create_*_variable、update_*_variable、delete_*_variable)
  • 依存関係プロキシ:get_dependency_proxy_settings、update_dependency_proxy_settings、list_dependency_proxy_blobs、purge_dependency_proxy_cache
Webhook と検索
  • Webhook:reference/webhooks.md を参照してください
  • コード検索:reference/search.md を参照してください
脆弱性のトリアージ(reference/vulnerability-triage.md を参照)

GITLAB_TOOLSETS=vulnerabilities で有効にします(GitLab Ultimate が必要です)。

list_project_vulnerabilities -> get_vulnerability -> dismiss_vulnerability または confirm_vulnerability

ファイル操作
  • 読み取り:get_file_contents、get_repository_tree
  • 書き込み:create_or_update_file(単一ファイル)、push_files(複数のファイルを 1 回のコミットで追加)

トークン節約のルール

  • get_merge_request_diffs の全ペイロードを会話に出力しないでください。list_merge_request_changed_files でパスを一覧表示してから、get_merge_request_file_diff の呼び出し 1 回につき 3~5 ファイルを取得してください。
  • 大きな JSON の応答をモデルに読み込ませる前に、jmespath フィルターまたは GITLAB_MCP_COMPACT_RESULTS/--compact-results を使用してください。
  • ジョブログ全体を 1 回の呼び出しで取得するのではなく、limit と offset を指定して get_pipeline_job_output をページネーションしてください。

パラメーターのヒント

  • project_id:数値 ID または URL エンコードされたパス(group%2Fsubgroup%2Fproject)
  • namespace_id:create_repository 用の数値のネームスペース ID。まず list_namespaces/verify_namespace を使用してください
  • parent_id:サブグループの作成範囲、またはネストされたグループの verify_namespace を指定します
  • MR の検索:merge_request_iid または source_branch を指定してください
  • list_issues:デフォルトのスコープは現在のユーザーが作成した課題です。すべての課題を対象にするには scope: "all" を使用してください
  • list_merge_requests:project_id を指定しない場合、すべてのプロジェクトにわたるユーザーの MR が返されます
  • rebase_merge_request:wait が true(デフォルト)の場合、マージリクエストに加えて previous_sha と head_changed が返されます
  • CI カタログのリソース検索:id または full_path のいずれか一方のみを指定してください
  • 絵文字リアクション:マージリクエスト、課題、作業項目のリアクションツールでは、thumbsup、rocket、eyes のような GitLab の絵文字名を使用します
  • 作業項目:ステータスとカスタムフィールドには GitLab Premium/Ultimate の機能が必要です
  • execute_graphql:クエリ文字列内の二重引用符をエスケープしてください

破壊的なツール(注意が必要)

cancel_pipeline、cancel_pipeline_job、delete_branch、delete_deployment、approve_deployment、delete_draft_note、delete_environment、erase_pipeline_job、delete_group_milestone、delete_group_variable、delete_group_wiki_page、delete_issue、delete_issue_emoji_reaction、delete_issue_link、delete_issue_note_emoji_reaction、delete_label、delete_merge_request_discussion_note、delete_merge_request_emoji_reaction、delete_merge_request_note、delete_merge_request_note_emoji_reaction、delete_milestone、delete_pipeline、delete_pipeline_schedule、delete_pipeline_schedule_variable、delete_pipeline_trigger、delete_project_variable、delete_release、delete_review_app_environments、delete_snippet、delete_tag、delete_webhook、delete_wiki_page、delete_work_item_emoji_reaction、delete_work_item_note_emoji_reaction、merge_merge_request、protect_branch、protect_tag、purge_dependency_proxy_cache、push_files、rebase_merge_request、stop_environment、stop_stale_environments、unprotect_branch、unprotect_tag、update_default_branch、update_protected_branch、gitlab_api_request

詳細情報

  • 動的な検出:discover_tools は、実行時にオプトインのツールセットを一覧表示して有効化します。api は有効化できません
  • ワークフローガイド:help は必要に応じてガイド(コードレビュー、パイプライン、課題、トークン節約)を返します。概要を表示するにはトピックを省略してください
  • Raw API:gitlab_api_request は、GITLAB_TOOLSETS に api が含まれている場合にのみ使用してください。読み取り専用モードでは GET のみ使用でき、変更モードでは DELETE が拒否されます
  • GraphQL:REST ツールでカバーされないクエリには execute_graphql を使用してください
  • ツールのドキュメント:docs/tools/ は tools/registry.ts から生成されます。正確なスキーマについては、こちらを優先してください
  • リモート MCP OAuth:GITLAB_MCP_OAUTH=true の場合、POST /register(DCR)はクライアント IP ごとにレート制限されます(MCP SDK ではデフォルトで 20 回/時間。OAUTH_REGISTER_RATE_LIMIT_PER_HOUR で調整できます)。これは MAX_REQUESTS_PER_MINUTE および GitLab API のクォータとは別です。詳しくは environment-variables.md を参照してください
  • Zoekt 検索:search_code、search_project_code、search_group_code(高度な検索を有効にする必要があります)
  • 作業項目:課題に代わる GraphQL ベースの機能(Premium/Ultimate の機能)

コメント