Files

142 lines
5.4 KiB
Markdown

---
catalog_title: GitLab
catalog_description: Perform semantic code search, inspect pipelines, manage merge requests
catalog_icon: /integrations/assets/gitlab.png
catalog_tags: ["code", "mcp"]
---
# GitLab MCP tool for ADK
<div class="language-support-tag">
<span class="lst-supported">Supported in ADK</span><span class="lst-python">Python</span><span class="lst-typescript">TypeScript</span>
</div>
The
[GitLab MCP Server](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/)
connects your ADK agent directly to [GitLab.com](https://gitlab.com/) or your
self-managed GitLab instance. This integration gives your agent the ability to
manage issues and merge requests, inspect CI/CD pipelines, perform semantic code
searches, and automate development workflows using natural language.
## Use cases
- **Semantic Code Exploration**: Navigate your codebase using natural language.
Unlike standard text search, you can query the logic and intent of your code
to quickly understand complex implementations.
- **Accelerate Merge Request Reviews**: Get up to speed on code changes
instantly. Retrieve full merge request contexts, analyze specific diffs, and
review commit history to provide faster, more meaningful feedback to your
team.
- **Troubleshoot CI/CD Pipelines**: Diagnose build failures without leaving your
chat. Inspect pipeline statuses and retrieve detailed job logs to pinpoint
exactly why a specific merge request or commit failed its checks.
## Prerequisites
- A GitLab account with a Premium or Ultimate subscription and
[GitLab Duo](https://docs.gitlab.com/user/gitlab_duo/) enabled
- [Beta and experimental features](https://docs.gitlab.com/user/gitlab_duo/turn_on_off/#turn-on-beta-and-experimental-features)
enabled in your GitLab settings
## Use with agent
=== "Python"
=== "Local MCP Server"
```python
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters
# Replace with your instance URL if self-hosted (e.g., "gitlab.example.com")
GITLAB_INSTANCE_URL = "gitlab.com"
root_agent = Agent(
model="gemini-flash-latest",
name="gitlab_agent",
instruction="Help users get information from GitLab",
tools=[
McpToolset(
connection_params=StdioConnectionParams(
server_params = StdioServerParameters(
command="npx",
args=[
"-y",
"mcp-remote",
f"https://{GITLAB_INSTANCE_URL}/api/v4/mcp",
"--static-oauth-client-metadata",
"{\"scope\": \"mcp\"}",
],
),
timeout=30,
),
)
],
)
```
=== "TypeScript"
=== "Local MCP Server"
```typescript
import { LlmAgent, MCPToolset } from "@google/adk";
// Replace with your instance URL if self-hosted (e.g., "gitlab.example.com")
const GITLAB_INSTANCE_URL = "gitlab.com";
const rootAgent = new LlmAgent({
model: "gemini-flash-latest",
name: "gitlab_agent",
instruction: "Help users get information from GitLab",
tools: [
new MCPToolset({
type: "StdioConnectionParams",
serverParams: {
command: "npx",
args: [
"-y",
"mcp-remote",
`https://${GITLAB_INSTANCE_URL}/api/v4/mcp`,
"--static-oauth-client-metadata",
'{"scope": "mcp"}',
],
},
}),
],
});
export { rootAgent };
```
!!! note
When you run this agent for the first time, a browser window will open
automatically (and an authorization URL will be printed) requesting OAuth
permissions. You must approve this request to allow the agent to access your
GitLab data.
## Available tools
Tool | Description
---- | -----------
`get_mcp_server_version` | Returns the current version of the GitLab MCP server
`create_issue` | Creates a new issue in a GitLab project
`get_issue` | Retrieves detailed information about a specific GitLab issue
`create_merge_request` | Creates a merge request in a project
`get_merge_request` | Retrieves detailed information about a specific GitLab merge request
`get_merge_request_commits` | Retrieves the list of commits in a specific merge request
`get_merge_request_diffs` | Retrieves the diffs for a specific merge request
`get_merge_request_pipelines` | Retrieves the pipelines for a specific merge request
`get_pipeline_jobs` | Retrieves the jobs for a specific CI/CD pipeline
`gitlab_search` | Searches for a term across the entire GitLab instance with the search API
`semantic_code_search` | Searches for relevant code snippets in a project
## Additional resources
- [GitLab MCP Server Documentation](https://docs.gitlab.com/user/gitlab_duo/model_context_protocol/mcp_server/)