oshaani MCP Marketplace
Sign in

← Documentation

GitLab MCP Source control

Projects, merge requests, issues, CI/CD pipelines and job logs on GitLab.com or self-managed GitLab.

1 credits / tool call

Quick start

  1. Add a GitLab connection with the settings below, then click Test configuration.
  2. Create an API key for your agent.
  3. Paste the key below, click Test endpoint, and copy the configuration for your platform.
Endpointhttps://market.oshaani.com/gitlab (your default connection) or https://market.oshaani.com/gitlab/<connection-id>
TransportStreamable HTTP (stateless, JSON responses). MCP protocol versions 2024-11-05 to 2025-11-25 and 2026-07-28.
AuthenticationAuthorization: Bearer <API key>, using a key from the API keys page.

Agent configuration

The default URL uses your organisation's default GitLab connection; a URL with an ID pins one connection.
Get a key
The key is filled into the snippets below. It stays in this page and is only sent with the test request.
Runs initialize and tools/list against the endpoint, exactly like an agent. No credits are charged.

Any MCP client that supports remote (Streamable HTTP) servers with custom headers.

{
  "name": "gitlab",
  "transport": "streamable-http",
  "url": "https://market.oshaani.com/gitlab",
  "headers": {
    "Authorization": "Bearer YOUR_API_KEY"
  }
}

Connection settings

Entered once per connection on market.oshaani.com. Secrets are encrypted and never shown again or sent to agents.

SettingTypeDescription
GitLab URL
url
string (uri)
default "https://gitlab.com"
https://gitlab.com or your self-managed instance
min length 1, max length 2083
Access token
token required secret
string Personal, group or project access token with read_api scope (api scope for write tools)
Verify TLS certificate
verify_tls
boolean
default true
Allow creating issues, comments and retrying pipelines
allow_write_actions
boolean
default false
Off by default: agents can only read data until this is enabled

Tools (10)

list_projects read-only

List projects the token is a member of, optionally filtered by name

ArgumentTypeDescription
search string Match against project name or path
per_page integer
default 30
Number of results (max 100)
min 1, max 100
page integer
default 1

min 1

list_merge_requests read-only

List merge requests in a project

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
state "opened" | "closed" | "merged" | "all"
default "opened"
target_branch string
per_page integer
default 30
Number of results (max 100)
min 1, max 100

get_merge_request read-only

Get a merge request with its description, pipeline, approvals and changed files

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
iid required integer Merge request or issue number (IID) within the project
min 1

list_pipelines read-only

List CI/CD pipelines in a project, newest first

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
ref string Branch or tag
status "running" | "pending" | "success" | "failed" | "canceled" | "skipped" | "manual"
per_page integer
default 20
Number of results (max 100)
min 1, max 100

get_pipeline read-only

Get a pipeline with the status of each job

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
pipeline_id required integer
min 1

get_job_log read-only

Read a CI job's log (returns the tail when the log is long)

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
job_id required integer
min 1
max_chars integer
default 20000

min 500, max 200000

list_issues read-only

List issues in a project

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
state "opened" | "closed" | "all"
default "opened"
labels string Comma-separated label names
search string
per_page integer
default 30
Number of results (max 100)
min 1, max 100

create_issue

Create an issue in a project

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
title required string
min length 1, max length 255
description string
labels string Comma-separated label names

comment_on_merge_request

Comment on a merge request

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
iid required integer Merge request or issue number (IID) within the project
min 1
body required string
min length 1, max length 1000000

retry_pipeline

Retry the failed jobs of a pipeline

ArgumentTypeDescription
project required string Project ID or full path, e.g. 'my-group/my-project'
min length 1
pipeline_id required integer
min 1

Billing & errors

Each successful tool call costs 1 oshaani.com credit. initialize, tools/list, failed calls and timeouts are free.

JSON-RPC codeMeaning
-32054 (HTTP 401)Missing, unknown or revoked API key
-32053 (HTTP 404)No GitLab connection configured for your organisation, or the connection ID is wrong
-32055 (HTTP 403)Connection disabled or origin not allowed
-32052 (HTTP 429)Rate limit reached; retry after a minute
-32050Not enough oshaani.com credits for the call
-32051Billing temporarily unavailable; the call was not run

Errors from GitLab itself (bad IDs, permissions) come back as tool results with isError: true so the agent can read and correct them. See the GitLab API documentation.