GitLab MCPサーバー
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ版
この機能に関するフィードバックを提供するには、イシュー561564にコメントしてください。
GitLab Model Context Protocol(MCP)サーバーを使用すると、AIツールとアプリケーションをGitLabインスタンスに安全に接続できます。Claude Desktop、Claude Code、CursorなどのAIアシスタントやその他のMCP互換ツールは、GitLabデータにアクセスし、ユーザーに代わってアクションを実行できます。
GitLab MCPサーバーは、AIツールが以下のことを行うための標準化された方法を提供します:
- GitLabプロジェクト情報にアクセスします。
- イシューとマージリクエストのデータを取得します。
- GitLab APIと安全にやり取りします。
- AIアシスタントを介してGitLab固有の操作を実行します。
GitLab MCPサーバーは、OAuth 2.0 Dynamic Client Registrationをサポートしており、AIツールはGitLabインスタンスに自身を登録できます。AIツールが初めてGitLab MCPサーバーに接続すると、次を実行します:
- OAuthアプリケーションとして自身を登録します。
- GitLabデータへのアクセス認可をリクエストします。
- 安全なAPIアクセス用のアクセストークンを受信します。
クリック操作のデモについては、GitLab Duo Agent Platform - GitLab MCPサーバーを参照してください。
前提条件
- GitLab Duoの利用可能性を常にオンまたはデフォルトでオンに設定します:
- GitLab.comでは、トップレベルグループの場合。
- GitLab Self-ManagedおよびGitLab Dedicatedでは、インスタンスの場合。
- ベータ版機能と実験的機能を有効にします:
- GitLab.comでは、トップレベルグループの場合。
- GitLab Self-ManagedおよびGitLab Dedicatedでは、インスタンスの場合。
- MCPサーバーへのアクセスを許可します:
- GitLab.comでは、トップレベルグループの場合。
- GitLab Self-ManagedおよびGitLab Dedicatedでは、インスタンスの場合。
GitLab MCPサーバーにクライアントを接続する
GitLab MCPサーバーは2つのトランスポートタイプをサポートしています:
- HTTPトランスポート(推奨): 追加の依存関係なしでの直接接続。
- stdio transport with
mcp-remote: プロキシ経由での接続(Node.jsが必要)。
一般的なAIツールは、mcpServersキーのJSON設定形式をサポートしており、GitLab MCPサーバーの設定を行うためのさまざまな方法を提供します。
HTTPトランスポート(推奨)
HTTPトランスポートを使用してGitLab MCPサーバーを設定するには、この形式を使用します:
<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{
"mcpServers": {
"GitLab": {
"type": "http",
"url": "https://<gitlab.example.com>/api/v4/mcp"
}
}
}X-Gitlab-Mcp-Server-Tool-Name-Prefix HTTPヘッダーを設定することで、ツール名にプレフィックスを追加できます。プレフィックスを付けることで、他のMCPサーバーや設定内の複数のGitLabインスタンスとのツール名衝突を回避できます。
プレフィックスがこの制限を超えた場合、最初の32文字に切り詰められます。
{
"mcpServers": {
"GitLab": {
"type": "http",
"url": "https://<gitlab.example.com>/api/v4/mcp",
"headers": {
"X-Gitlab-Mcp-Server-Tool-Name-Prefix": "gitlab_"
}
}
}
}mcp-remoteを使用したstdioトランスポート
前提条件:
- Node.jsバージョン20以降をインストールします。
stdioトランスポートを使用してGitLab MCPサーバーを設定するには、この形式を使用します:
"command":パラメータの場合、npxがグローバルではなくローカルにインストールされている場合は、npxへのフルパスを指定してください。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{
"mcpServers": {
"GitLab": {
"command": "npx",
"args": [
"mcp-remote",
"https://<gitlab.example.com>/api/v4/mcp"
]
}
}
}CursorをGitLab MCPサーバーに接続する
Cursorは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。CursorでGitLab MCPサーバーを設定するには:
Cursorで、設定 > Cursor Settings > Tools & MCPに移動します。
Installed MCP Serversの下で、New MCP Serverを選択します。
開いた
mcp.jsonファイル内のmcpServersキーに、この定義を追加します:<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{ "mcpServers": { "GitLab": { "type": "http", "url": "https://<gitlab.example.com>/api/v4/mcp" } } }ファイルを保存し、ブラウザでOAuth認可ページが開くのを待ちます。
ページが開かない場合は、Cursorを閉じて再起動します。
ブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
Claude CodeをGitLab MCPサーバーに接続する
Claude Codeは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。Claude CodeでGitLab MCPサーバーを設定するには:
ターミナルで、CLIを使用してGitLab MCPサーバーを追加します:
<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
claude mcp add --transport http GitLab https://<gitlab.example.com>/api/v4/mcpClaude Codeを起動します:
claudeGitLab MCPサーバーで認証します:
- チャットで、
/mcpと入力します。 - リストからGitLabサーバーを選択します。
- ブラウザで、認可リクエストを確認して承認します。
- チャットで、
オプション。接続を確認するには、もう一度
/mcpと入力します。お使いのGitLabサーバーが接続済みとして表示されるはずです。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
Claude DesktopをGitLab MCPサーバーに接続する
前提条件:
- Node.jsバージョン20以降をインストールします。
- Node.jsが
PATH環境変数(which -a node)でグローバルに利用できる状態であること。
Claude DesktopでGitLab MCPサーバーを設定するには:
Claude Desktopを開きます。
設定ファイルを編集します。次のいずれかを実行します:
- Claude Desktopで、Settings > Developer > Edit Configに移動します。
- macOSで、
~/Library/Application Support/Claude/claude_desktop_config.jsonファイルを開きます。
GitLab MCPサーバーのこのエントリを、必要に応じて編集して追加します:
"command":パラメータの場合、npxがグローバルではなくローカルにインストールされている場合は、npxへのフルパスを指定してください。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
GitLab.com。
{ "mcpServers": { "GitLab": { "command": "npx", "args": [ "-y", "mcp-remote", "https://<gitlab.example.com>/api/v4/mcp" ] } } }設定を保存して、Claude Desktopを再起動します。
最初の接続時に、Claude DesktopはOAuthのブラウザウィンドウを開きます。リクエストを確認して承認します。
Settings > Developerに移動し、新しいGitLab MCP設定を確認します。
設定 > Connectorsに移動し、接続されているGitLab MCPサーバーを調べます。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
Gemini Code AssistとGemini CLIをGitLab MCPサーバーに接続する
Gemini Code AssistとGemini CLIは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。Gemini Code AssistまたはGemini CLIでGitLab MCPサーバーを設定するには:
~/.gemini/settings.jsonを編集し、GitLab MCPサーバーを追加します。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{ "mcpServers": { "GitLab": { "httpUrl": "https://<gitlab.example.com>/api/v4/mcp" } } }Gemini Code AssistまたはGemini CLIで、
/mcp auth GitLabコマンドを実行します。OAuth認可ページが表示されるはずです。そうでない場合は、Gemini Code AssistまたはGemini CLIを再起動してください。
ブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
VS CodeのGitHub CopilotをGitLab MCPサーバーに接続する
GitHub Copilotは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。VS CodeのGitHub CopilotでGitLab MCPサーバーを設定するには:
VS Codeでコマンドパレットを開きます。
- macOSで、Command+Shift+Pを押します。
- WindowsまたはLinuxで、Control+Shift+Pを押します。
MCP: Add Serverと入力してEnterキーを押します。サーバータイプには、HTTPを選択します。
サーバーURLには、
https://<gitlab.example.com>/api/v4/mcpと入力します。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
サーバーIDには、
GitLabと入力します。設定をグローバルに、または
vscode/mcp.jsonワークスペースに保存します。OAuth認可ページが表示されるはずです。そうでない場合は、コマンドパレットを開いてMCPを検索します: List Serversでステータスを確認するか、サーバーを再起動してください。
ブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
Kiro IDEおよびCLIをGitLab MCPサーバーに接続する
Kiro IDEおよびCLIは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。Kiro IDEまたはCLIでGitLab MCPサーバーを設定するには:
~/.kiro/settings/mcp.jsonを編集し、GitLab MCPサーバーを追加します。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{ "mcpServers": { "GitLab": { "type": "http", "url": "https://<gitlab.example.com>/api/v4/mcp" } } }設定を保存します。
OAuth認可ページが表示されるはずです。そうでない場合は、Kiro CLIを開いて
/mcpコマンドを実行してください。ブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
OpenAI CodexをGitLab MCPサーバーに接続する
OpenAI Codexは、追加の依存関係なしに直接接続するためにHTTPトランスポートを使用します。OpenAI CodexでGitLab MCPサーバーを設定するには:
ターミナルで、CLIを使用してGitLab MCPサーバーを追加します:
<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
codex mcp add --url "https://<gitlab.example.com>/api/v4/mcp" GitLab~/.codex/config.tomlを編集し、[features]セクションでrmcp_client機能フラグを有効にします。[features] "rmcp_client" = true [mcp_servers.GitLab] url = "https://<gitlab.example.com>/api/v4/mcp"ログインフローを実行し、GitLabインスタンスで認証します。
codex mcp login GitLabブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
ZedをGitLab MCPサーバーに接続する
前提条件:
- Node.jsバージョン20以降をインストールします。
- Node.jsが
PATH環境変数(which -a node)でグローバルに利用できる状態であること。
ZedでGitLab MCPサーバーを設定するには:
Zedで、コマンドパレットを開きます:
- macOSで、Command+Shift+Pを押します。
- WindowsまたはLinuxで、Control+Shift+Pを押します。
agent: open settingsと入力してEnterキーを押します。Model Context Protocol(MCP)Serversセクションで、Add Serverを選択します。
argsのサーバーURLには、https://<gitlab.example.com>/api/v4/mcpを使用します。<gitlab.example.com>を以下に置き換えます:- GitLab Self-Managedでは、GitLabインスタンスのURL。
- GitLab.comでは、
gitlab.com。
{ /// The name of your MCP server "GitLab": { /// The command which runs the MCP server "command": "npx", /// The arguments to pass to the MCP server "args": ["-y","mcp-remote@latest","https://<gitlab.example.com>/api/v4/mcp"], /// The environment variables to set "env": {} } }設定を保存します。
OAuth認可ページが表示されるはずです。表示されない場合は、GitLab切替をオフにしてからもう一度オンにします。
ブラウザで、認可リクエストを確認して承認します。
これで、新しいチャットを開始し、利用可能なツールに応じて質問できます。
これらのツールを使用する際は、プロンプトインジェクションから保護する責任があります。最大限の注意を払うか、信頼できるGitLabオブジェクトでのみMCPツールを使用してください。
単一のOAuthアプリケーションを再利用する
- 提供形態: GitLab Self-Managed、GitLab Dedicated
MCPクライアントがGitLab MCPサーバーに接続すると、OAuth 2.0 Dynamic Client Registration(DCR)を使用して、GitLabインスタンスに新しいOAuthアプリケーションを作成します。多数のユーザーまたは頻繁な再接続がある環境では、これによりインスタンス上に多数のOAuthアプリケーションが作成される可能性があります。
多数のOAuthアプリケーションを避けるには、単一の共有OAuthアプリケーションを作成し、そのクライアントIDをユーザーに提供します。
ユーザーがこのクライアントIDでMCPクライアントを設定すると、すべての接続が新しいOAuthアプリケーションを作成する代わりに、同じOAuthアプリケーションを再利用します。
ユーザーが共有されたclientIdで認証すると、GitLabは同じ設定を持つどのユーザーからの後続の認証に対しても同じOAuthアプリケーションを再利用します。ユーザーはOAuthで認可し、独自のアクセストークンを受け取ります。共有アプリケーションはOAuthクライアントの識別情報であり、共有認証情報ではありません。
前提条件:
- 管理者である必要があります。
- 以下をサポートするMCPクライアント:
- 事前設定済みのOAuth認証情報
- 設定内の
clientIdフィールド
- 右上隅で、管理者を選択します。
- 左サイドバーで、アプリケーション > 新しいアプリケーションを選択します。
- フィールドに入力します。mcpスコープを選択し、非公開チェックボックスをクリアします。
- アプリケーションを保存を選択します。
- アプリケーションIDをユーザーに提供します。これは、ユーザーがMCPクライアントで設定する
clientIdです。設定キーはクライアントによって異なりますが、通常、GitLab MCPサーバーのOAuth設定ではclientIdまたはclient_idという名前です。これは通常、mcp.jsonファイル内にあります。
REST APIを使用してアプリケーションを作成することもできます。
OAuthアプリケーションに登録されたリダイレクトURIは、MCPクライアントがOAuthフロー中に送信するリダイレクトURIと完全に一致する必要があります。クライアントのドキュメントで、使用するリダイレクトURIを確認してください。単一の共有OAuthアプリケーションは、異なるリダイレクトURIを使用するMCPクライアントにサービスを提供できません。ユーザーが異なるリダイレクトURIを使用するMCPクライアントを使用している場合は、クライアントタイプごとに個別の共有OAuthアプリケーションを作成してください。
セキュリティに関する考慮事項
クライアントIDで認証するユーザーは、引き続き独自のGitLab認証情報でOAuth認可を完了する必要があります。彼らは許可されたデータのみにアクセスできます。
GitLabは、どのMCPクライアントアプリケーションがclientIdを提示するかを検証しません。特定のMCPクライアント用にOAuthアプリケーションを作成した場合、事前登録をサポートする他のどのMCPクライアントも同じclientIdを使用して認証できます。clientIdは、どのOAuthアプリケーションが使用されるかを制御し、どのクライアントソフトウェアが許可されるかを制御するものではありません。
REST APIで作成された事前登録済みアプリケーションは、証明キーfor Code Exchange(PKCE)を強制しません。PKCEは、パブリッククライアントに対する認可コードの傍受を防ぎます。
PKCEを強制するには、MCPクライアントがOAuthフロー中にcode_challengeとcode_challenge_methodパラメータを送信することを確認してください。GitLabは事前登録済みアプリケーションのPKCEパラメータを受け入れますが、必須ではありません。