mcpField
G
GitLab MCP Server

GitLab MCP Server

ローカル
github.com/TheRealChrisThomasバージョン管理171 週間前に更新

GitLab MCP Server について

GitLab MCP Serverは、GitLabのプロジェクトやグループの操作をMCPクライアントに公開します。リポジトリ、ファイル、イシュー、マージリクエスト、ラベルに加え、プロジェクト単位とグループ単位のマイルストーンを扱い、ファイルの一括変更とブランチの自動作成にも対応します。

主な機能

  1. 01リポジトリの検索、作成、フォーク
  2. 02ファイルの作成・取得と一括プッシュ
  3. 03ブランチ、イシュー、マージリクエストの管理
  4. 04ラベルとプロジェクトマイルストーンの管理
  5. 05複数プロジェクトにまたがるグループマイルストーン管理

活用シーン

  1. 01単一または複数のプロジェクトファイルを作成・更新する
  2. 02MCPクライアントからイシューとマージリクエストを追跡する
  3. 03GitLabグループ内の複数プロジェクトでマイルストーンを調整する

MCP 対応

このサーバーはGitLab APIの操作をMCPクライアントに公開し、プロジェクト、リポジトリ、イシュー、マージリクエスト、ラベル、マイルストーン用のツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"gitlab-mcp-server-therealchristhomas": {
"command": "npx",
"args": [
"-y",
"@therealchristhomas/gitlab-mcp-server"
]
}
}
}
起動コマンドnpx -y @therealchristhomas/gitlab-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@therealchristhomas/gitlab-mcp-server

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP ロゴ

GitLab MCP サーバー

プロジェクト管理、ファイル操作などを可能にする GitLab API 用 MCP サーバーです。https://github.com/modelcontextprotocol からフォークされました。

目次

インストール

NPX(推奨)
npx @therealchristhomas/gitlab-mcp-server
グローバルインストール
npm install -g @therealchristhomas/gitlab-mcp-server
gitlab-mcp

機能

  • ブランチの自動作成:ファイルの作成・更新や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
  • 包括的なエラー処理:よくある問題に対して明確なエラーメッセージを表示します
  • Git 履歴の保持:強制プッシュを行わず、適切な Git 履歴を維持して操作します
  • バッチ操作:単一ファイルと複数ファイルの両方の操作に対応します
  • プロジェクトワークフロー管理:プロジェクトをより適切に整理するためのラベルとマイルストーンの管理
  • リポジトリ管理:GitLab プロジェクトの検索、作成、フォーク
  • ファイル操作:ファイル内容の作成、更新、取得
  • ブランチ管理:ブランチの作成とリポジトリ構造の管理
  • イシュー管理:イシューの作成、一覧表示、更新、検索、コメント
  • マージリクエスト管理:マージリクエストの一覧表示、更新、マージ、コメント
  • ラベル管理:プロジェクトラベルの作成、更新、削除
  • プロジェクトマイルストーン:プロジェクト単位のマイルストーンの作成、更新、削除
  • グループマイルストーン:複数のプロジェクトにまたがるグループ単位のマイルストーンの作成、更新、削除

グループマイルストーンとプロジェクトマイルストーンの違い

このサーバーは、プロジェクトマイルストーンとグループマイルストーンの両方に対応しています。

プロジェクトマイルストーン
  • 単一のプロジェクトを対象とします
  • 使用するツール:list_milestones、create_milestone、update_milestone、delete_milestone
  • 例:my-webapp プロジェクトの機能を追跡します
グループマイルストーン
  • グループ内の複数のプロジェクトにまたがります
  • 使用するツール:list_group_milestones、create_group_milestone、update_group_milestone、delete_group_milestone
  • include_ancestors、include_descendants による高度なフィルタリングに対応しています
  • 例:my-webapp、my-api、my-admin にまたがるリリースを追跡します

グループマイルストーンの例

グループマイルストーンの一覧表示
{
  "group_id": "my-organization",
  "state": "active",
  "include_descendants": true
}
グループマイルストーンの作成
{
  "group_id": "my-organization",
  "title": "Q1 2025 Release",
  "description": "Major feature release including new tools and performance improvements",
  "due_date": "2025-03-31",
  "start_date": "2025-01-01"
}
高度なグループマイルストーン検索
{
  "group_id": "my-organization/core",
  "search": "release",
  "include_ancestors": true,
  "updated_after": "2024-01-01T00:00:00Z"
}

GitLab Group Milestones APIに基づいて、グループマイルストーンは、組織内の複数のプロジェクトにまたがるリリースや機能の調整に最適です。

実践的なワークフロー:グループの検索とマイルストーンの作成

グループマイルストーンを扱う一般的なワークフローは次のとおりです。

1. グループを検索する

まず、作業対象のグループを見つけます。

{
  "search": "my-organization",
  "owned": true
}
2. 既存のグループマイルストーンを一覧表示する

すでに存在するマイルストーンを確認します。

{
  "group_id": "my-organization",
  "state": "active"
}
3. グループマイルストーンを作成する

複数のプロジェクトにまたがるマイルストーンを作成します。

{
  "group_id": "my-organization",
  "title": "Q1 2025 Release",
  "description": "Cross-project release including webapp, API, and admin features",
  "due_date": "2025-03-31"
}

このワークフローは、同じグループに複数の関連プロジェクトがある大規模な組織で特に役立ちます。

ツール

ファイル操作
  1. create_or_update_file

    • プロジェクト内の単一ファイルを作成または更新します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • file_path(文字列):ファイルを作成または更新するパス
      • content(文字列):ファイルの内容
      • commit_message(文字列):コミットメッセージ
      • branch(文字列):ファイルを作成または更新するブランチ
      • previous_path(省略可能な文字列):移動または名前変更するファイルのパス
    • 戻り値:ファイルの内容とコミットの詳細
  2. push_files

    • 複数のファイルを単一のコミットでプッシュします
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • branch(文字列):プッシュ先のブランチ
      • files(配列):プッシュするファイル。各要素に file_path と content を含みます
      • commit_message(文字列):コミットメッセージ
    • 戻り値:更新されたブランチ参照
  3. get_file_contents

    • ファイルまたはディレクトリの内容を取得します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • file_path(文字列):ファイルまたはディレクトリのパス
      • ref(省略可能な文字列):内容を取得するブランチ/タグ/コミット
    • 戻り値:ファイルまたはディレクトリの内容
リポジトリ管理
  1. search_repositories

    • GitLab プロジェクトを検索します
    • 入力:
      • search(文字列):検索クエリ
      • page(省略可能な数値):ページネーションのページ番号
      • per_page(省略可能な数値):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:プロジェクトの検索結果
  2. create_repository

    • 新しい GitLab プロジェクトを作成します
    • 入力:
      • name(文字列):プロジェクト名
      • description(省略可能な文字列):プロジェクトの説明
      • visibility(省略可能な文字列):'private'、'internal'、または 'public'
      • initialize_with_readme(省略可能なブール値):README で初期化するかどうか
    • 戻り値:作成したプロジェクトの詳細
  3. fork_repository

    • プロジェクトをフォークします
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • namespace(省略可能な文字列):フォーク先の名前空間
    • 戻り値:フォークしたプロジェクトの詳細
  4. create_branch

    • 新しいブランチを作成します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • branch(文字列):新しいブランチ名
      • ref(省略可能な文字列):新しいブランチのソースとなるブランチまたはコミット
    • 戻り値:作成したブランチ参照
グループ操作
  1. search_groups

    • GitLab グループを検索します
    • 入力:
      • search(文字列):グループの検索クエリ
      • page(省略可能な数値):ページネーションのページ番号
      • per_page(省略可能な数値):1 ページあたりの結果数(デフォルトは 20)
      • owned(省略可能なブール値):現在のユーザーが所有するグループに限定するかどうか
      • min_access_level(省略可能な数値):最低アクセスレベル(10=Guest、20=Reporter、30=Developer、40=Maintainer、50=Owner)
    • 戻り値:グループの検索結果
課題管理
  1. create_issue

    • 新しい課題を作成します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • title (string):課題のタイトル
      • description (optional string):課題の説明
      • assignee_ids (optional number[]):割り当てるユーザー ID
      • labels (optional string[]):追加するラベル
      • milestone_id (optional number):マイルストーン ID
    • 戻り値:作成した課題の詳細
  2. list_issues

    • GitLab プロジェクト内のすべての課題を一覧表示します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • state (optional string):'opened'、'closed'、または 'all'
      • labels (optional string):カンマ区切りのラベル名のリスト
      • milestone (optional string):マイルストーンのタイトル
      • assignee_id (optional number):担当者のユーザー ID
      • author_id (optional number):作成者のユーザー ID
      • search (optional string):タイトルと説明を対象に検索します
      • created_after (optional string):指定した日付以降に作成された課題を返します(ISO 8601)
      • created_before (optional string):指定した日付より前に作成された課題を返します(ISO 8601)
      • updated_after (optional string):指定した日付以降に更新された課題を返します(ISO 8601)
      • updated_before (optional string):指定した日付より前に更新された課題を返します(ISO 8601)
      • sort (optional string):さまざまな条件で課題を並べ替えます
      • order_by (optional string):'asc' または 'desc'
      • page (optional number):ページネーションのページ番号
      • per_page (optional number):1 ページあたりの結果数(デフォルトは 20)
      • with_labels_details (optional boolean):true の場合、各ラベルの詳細を返します。デフォルトは false です。
    • 戻り値:課題オブジェクトの配列
  3. update_issue

    • GitLab プロジェクト内の既存の課題を更新します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • issue_iid (number):課題の内部 ID
      • title (optional string):新しい課題のタイトル
      • description (optional string):新しい課題の説明
      • state_event (optional string):'close' または 'reopen'
      • labels (optional string[]):ラベル名の配列
      • assignee_ids (optional number[]):割り当てるユーザー ID の配列
      • milestone_id (optional number):割り当てるマイルストーン ID
    • 戻り値:更新した課題の詳細
  4. search_issues

    • GitLab プロジェクト内の課題を検索します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • search (string):タイトルと説明を対象とする検索語
      • state (optional string):'opened'、'closed'、または 'all'
      • labels (optional string):カンマ区切りのラベル名のリスト
      • page (optional number):ページネーションのページ番号
      • per_page (optional number):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:一致する課題オブジェクトの配列
  5. add_issue_comment

    • GitLab プロジェクト内の課題にコメントを追加します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • issue_iid (number):課題の内部 ID
      • body (string):コメントの内容
    • 戻り値:作成したコメントの詳細
マージリクエストの管理
  1. create_merge_request
  • 新しいマージリクエストを作成します
  • 入力:
    • project_id (string):プロジェクト ID または URL エンコードされたパス
    • title (string):MR のタイトル
    • description (optional string):MR の説明
    • source_branch (string):変更を含むブランチ
    • target_branch (string):マージ先のブランチ
    • draft (optional boolean):ドラフト MR として作成します
    • allow_collaboration (optional boolean):アップストリームのメンバーによるコミットを許可します
  • 戻り値:作成されたマージリクエストの詳細
  1. list_merge_requests

    • GitLab プロジェクト内のすべてのマージリクエストを一覧表示します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • state (optional string):'opened'、'closed'、'locked'、'merged'、または 'all'
      • target_branch (optional string):ターゲットブランチで絞り込みます
      • source_branch (optional string):ソースブランチで絞り込みます
      • labels (optional string):ラベル名をコンマ区切りで指定します
      • milestone (optional string):マイルストーンのタイトル
      • assignee_id (optional number):担当者のユーザー ID
      • author_id (optional number):作成者のユーザー ID
      • search (optional string):タイトルと説明を検索します
      • created_after (optional string):指定した日付以降に作成された MR を返します(ISO 8601)
      • created_before (optional string):指定した日付より前に作成された MR を返します(ISO 8601)
      • updated_after (optional string):指定した日付以降に更新された MR を返します(ISO 8601)
      • updated_before (optional string):指定した日付より前に更新された MR を返します(ISO 8601)
      • sort (optional string):マージリクエストの並べ替え方法
      • order_by (optional string):'asc' または 'desc'
      • page (optional number):ページネーションのページ番号
      • per_page (optional number):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:マージリクエストオブジェクトの配列
  2. update_merge_request

    • GitLab プロジェクト内の既存のマージリクエストを更新します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • merge_request_iid (number):マージリクエストの内部 ID
      • title (optional string):新しいマージリクエストのタイトル
      • description (optional string):新しいマージリクエストの説明
      • state_event (optional string):'close' または 'reopen'
      • target_branch (optional string):新しいターゲットブランチ
      • labels (optional string[]):ラベル名の配列
      • assignee_ids (optional number[]):割り当てるユーザー ID の配列
      • milestone_id (optional number):割り当てるマイルストーン ID
      • remove_source_branch (optional boolean):マージ時にソースブランチを削除します
    • 戻り値:更新されたマージリクエストの詳細
  3. merge_merge_request

    • GitLab プロジェクト内のマージリクエストをマージします
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • merge_request_iid (number):マージリクエストの内部 ID
      • merge_commit_message (optional string):カスタムのマージコミットメッセージ
      • should_remove_source_branch (optional boolean):マージ後にソースブランチを削除します
      • merge_when_pipeline_succeeds (optional boolean):パイプラインが成功したときにマージします
      • sha (optional string):ソースブランチの HEAD と一致する必要がある SHA
    • 戻り値:マージされたマージリクエストの詳細
  4. add_merge_request_comment

    • GitLab プロジェクト内のマージリクエストにコメントを追加します
    • 入力:
      • project_id (string):プロジェクト ID または URL エンコードされたパス
      • merge_request_iid (number):マージリクエストの内部 ID
      • body (string):コメントの内容
    • 戻り値:作成されたコメントの詳細
ラベル管理
  1. list_labels

    • プロジェクト内のすべてのラベルを一覧表示します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • page(任意の数値):ページネーションのページ番号
      • per_page(任意の数値):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:ラベルオブジェクトの配列
  2. create_label

    • 新しいラベルを作成します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • name(文字列):ラベル名
      • color(文字列):ラベルの色(16 進数コード)
      • description(任意の文字列):ラベルの説明
      • priority(任意の数値):ラベルの優先度
    • 戻り値:作成したラベルの詳細
  3. update_label

    • 既存のラベルを更新します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • name(文字列):現在のラベル名
      • new_name(任意の文字列):新しいラベル名
      • color(任意の文字列):新しいラベルの色
      • description(任意の文字列):新しいラベルの説明
      • priority(任意の数値):新しいラベルの優先度
    • 戻り値:更新したラベルの詳細
  4. delete_label

    • ラベルを削除します
    • 入力:
      • project_id(文字列):プロジェクト ID または URL エンコードされたパス
      • name(文字列):削除するラベル名
    • 戻り値:成功の確認
マイルストーン管理
  1. list_milestones

    • プロジェクト内のすべてのマイルストーンを一覧表示します
    • 入力:
      • project_id(string):プロジェクト ID または URL エンコードされたパス
      • state(省略可能な string):'active' または 'closed'
      • page(省略可能な number):ページネーションのページ番号
      • per_page(省略可能な number):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:マイルストーンオブジェクトの配列
  2. create_milestone

    • 新しいマイルストーンを作成します
    • 入力:
      • project_id(string):プロジェクト ID または URL エンコードされたパス
      • title(string):マイルストーンのタイトル
      • description(省略可能な string):マイルストーンの説明
      • due_date(省略可能な string):期限(YYYY-MM-DD)
      • start_date(省略可能な string):開始日(YYYY-MM-DD)
    • 戻り値:作成されたマイルストーンの詳細
  3. update_milestone

    • 既存のマイルストーンを更新します
    • 入力:
      • project_id(string):プロジェクト ID または URL エンコードされたパス
      • milestone_id(number):マイルストーン ID
      • title(省略可能な string):新しいタイトル
      • description(省略可能な string):新しい説明
      • due_date(省略可能な string):新しい期限
      • start_date(省略可能な string):新しい開始日
      • state_event(省略可能な string):'close' または 'activate'
    • 戻り値:更新されたマイルストーンの詳細
  4. delete_milestone

    • マイルストーンを削除します
    • 入力:
      • project_id(string):プロジェクト ID または URL エンコードされたパス
      • milestone_id(number):削除するマイルストーン ID
    • 戻り値:成功の確認
  5. list_group_milestones

    • GitLab グループ内のすべてのマイルストーンを一覧表示します
    • 入力:
      • group_id(string):グループ ID または URL エンコードされたパス
      • state(省略可能な string):'active' または 'closed'
      • title(省略可能な string):マイルストーンのタイトルで絞り込み(大文字と小文字を区別)
      • search(省略可能な string):タイトルまたは説明を検索
      • search_title(省略可能な string):タイトルのみを検索
      • include_ancestors(省略可能な boolean):親グループのマイルストーンを含める
      • include_descendants(省略可能な boolean):サブグループのマイルストーンを含める
      • updated_before(省略可能な string):更新日で絞り込み(ISO 8601)
      • updated_after(省略可能な string):更新日で絞り込み(ISO 8601)
      • containing_date(省略可能な string):指定した日付を含むマイルストーン
      • start_date(省略可能な string):due_date >= start_date で絞り込み
      • end_date(省略可能な string):start_date <= end_date で絞り込み
      • page(省略可能な number):ページネーションのページ番号
      • per_page(省略可能な number):1 ページあたりの結果数(デフォルトは 20)
    • 戻り値:グループマイルストーンオブジェクトの配列
  6. create_group_milestone

    • GitLab グループに新しいマイルストーンを作成します
    • 入力:
      • group_id(string):グループ ID または URL エンコードされたパス
      • title(string):マイルストーンのタイトル
      • description(省略可能な string):マイルストーンの説明
      • due_date(省略可能な string):期限(YYYY-MM-DD)
      • start_date(省略可能な string):開始日(YYYY-MM-DD)
    • 戻り値:作成されたグループマイルストーンの詳細
  7. update_group_milestone

    • GitLab グループ内の既存のマイルストーンを更新します
    • 入力:
      • group_id(string):グループ ID または URL エンコードされたパス
      • milestone_id(number):マイルストーン ID
      • title(省略可能な string):新しいタイトル
      • description(省略可能な string):新しい説明
      • due_date(省略可能な string):新しい期限
      • start_date(省略可能な string):新しい開始日
      • state_event(省略可能な string):'close' または 'activate'
    • 戻り値:更新されたグループマイルストーンの詳細
  8. delete_group_milestone

    • GitLab グループからマイルストーンを削除します
    • 入力:
      • group_id(string):グループ ID または URL エンコードされたパス
      • milestone_id(number):削除するマイルストーン ID
    • 戻り値:成功の確認

セットアップ

Personal Access Token

適切な権限を設定して、GitLab Personal Access Tokenを作成します。

  • GitLabの「User Settings > Access Tokens」に移動します
  • 必要なスコープを選択します。
    • api:APIへのフルアクセス
    • read_api:読み取り専用アクセス
    • read_repositoryとwrite_repository:リポジトリ操作
  • トークンを作成し、安全に保管します
Claude Desktopでの使用

claude_desktop_config.jsonに以下を追加します。

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@therealchristhomas/gitlab-mcp-server"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4"
      }
    }
  }
}
Cursor/VSCode/Winsurfでの使用

MCPの設定に以下を追加します。

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@therealchristhomas/gitlab-mcp-server"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4"
      }
    }
  }
}

注:<YOUR_TOKEN>を実際のGitLab Personal Access Tokenに置き換えてください。また、gitlab.comを使用していない場合は、Gitlab API URLに置き換えてください。

環境変数

  • GITLAB_PERSONAL_ACCESS_TOKEN:GitLabのPersonal Access Token(必須)
  • GITLAB_API_URL:GitLab APIのベースURL(任意。デフォルトはhttps://gitlab.com/api/v4)

セルフホストのGitLabインスタンスでは、GITLAB_API_URLをインスタンスのURLに更新します。

"GITLAB_API_URL": "https://your-gitlab-instance.com/api/v4"

開発

ビルド
npm run build
開発モード
npm run dev
ウォッチモード
npm run watch

ライセンス

このMCP サーバーはMIT Licenseの下でライセンスされています。MIT Licenseの利用規約に従うことを条件として、ソフトウェアを自由に使用、変更、配布できます。詳しくは、プロジェクトリポジトリのLICENSEファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。