Skip to content

GitLab Instance Management CLI

Commands for managing GitLab instances from the command line.

Overview

bash
npx @structured-world/gitlab-mcp instances <command> [options]

Commands

list

List all configured GitLab instances.

bash
npx @structured-world/gitlab-mcp instances list

Output:

Configured GitLab Instances (source: file)
────────────────────────────────────────────────────────────────
  https://gitlab.com (GitLab.com) [OAuth] [Rate: 100 concurrent]
  https://git.company.io (Corporate) [OAuth] [Rate: 50 concurrent]
  https://gitlab.dev.local (Dev) [TLS: skip]

Total: 3 instance(s)

Fields shown:

  • URL
  • Label (if set)
  • [OAuth] if OAuth is configured
  • [Rate: N concurrent] if custom rate limit
  • [TLS: skip] if TLS verification is disabled

add

Add a new GitLab instance interactively.

bash
npx @structured-world/gitlab-mcp instances add

Interactive prompts:

╭ Add GitLab Instance

◇ GitLab instance URL:
│ https://git.new-company.io

◇ Label (optional):
│ New Company GitLab

◇ Configure OAuth?
│ ● Yes / ○ No

◇ OAuth Application ID:
│ app_12345

◇ OAuth Secret (optional, for confidential apps):
│ ********

◇ Instance Configuration:
│ {
│   "url": "https://git.new-company.io",
│   "label": "New Company GitLab",
│   "oauth": {
│     "clientId": "app_12345",
│     "clientSecret": "***",
│     "scopes": "api read_user"
│   }
│ }

◇ Add this configuration?
│ ● Yes / ○ No

└ Instance configured!

To use it, add to your configuration:

Environment variable:
  GITLAB_INSTANCES="https://git.new-company.io:app_12345"

Or add to instances.yaml:
  instances:
    - url: https://git.new-company.io
      label: "New Company GitLab"
      oauth:
        clientId: "app_12345"

remove

Remove a GitLab instance from configuration.

bash
npx @structured-world/gitlab-mcp instances remove <url>

Example:

bash
npx @structured-world/gitlab-mcp instances remove https://gitlab.old.io

Output:

To remove instance https://gitlab.old.io, edit your configuration file
and remove the corresponding entry from the instances array.

INFO

This command provides guidance rather than modifying files directly, to prevent accidental data loss.

test

Test connection to one or all GitLab instances.

bash
# Test specific instance
npx @structured-world/gitlab-mcp instances test https://gitlab.com

# Test all configured instances
npx @structured-world/gitlab-mcp instances test

Output:

Testing GitLab Instance Connections
────────────────────────────────────────────────────────────────
  https://gitlab.com... ✓ Connected (v17.2.0)
  https://git.company.io... ✓ Connected (v16.8.0)
  https://gitlab.offline.io... ✗ Failed: ECONNREFUSED

Status indicators:

  • ✓ Connected (vX.Y.Z) - Successfully connected, shows GitLab version
  • ✓ Reachable (authentication required) - Instance responds but needs auth
  • ✗ Error: HTTP NNN - HTTP error response
  • ✗ Failed: <message> - Connection or other error

info

Show detailed information about an instance.

bash
npx @structured-world/gitlab-mcp instances info <url>

Example:

bash
npx @structured-world/gitlab-mcp instances info https://gitlab.com

Output:

Instance Information: https://gitlab.com
────────────────────────────────────────────────────────────────

Configuration:
  URL: https://gitlab.com
  Label: GitLab.com
  OAuth: Enabled (client configured)
  TLS Verify: Enabled

Rate Limit Config:
  Max Concurrent: 100
  Queue Size: 500
  Queue Timeout: 60000ms

Runtime State:
  Connection: healthy
  Last Health Check: 2026-02-04T10:30:00.000Z

Rate Limit Metrics:
  Active Requests: 5/100
  Queued: 0/500
  Total Requests: 1234
  Rejected: 0
  Avg Queue Wait: 15ms

Introspection Cache:
  Version: 17.2.0
  Tier: varies (SaaS)
  Cached At: 2026-02-04T10:25:00.000Z

sample-config

Generate a sample configuration file.

bash
# YAML format (default)
npx @structured-world/gitlab-mcp instances sample-config

# Explicit YAML
npx @structured-world/gitlab-mcp instances sample-config yaml

# JSON format
npx @structured-world/gitlab-mcp instances sample-config json

YAML Output:

yaml
# GitLab MCP Instances Configuration
# Documentation: https://gitlab-mcp.sw.foundation/configuration/instances

instances:
  # GitLab.com (SaaS)
  - url: https://gitlab.com
    label: "GitLab.com"
    oauth:
      clientId: "your_app_id_here"
      # clientSecret: "optional_for_confidential_apps"
      scopes: "api read_user"
    rateLimit:
      maxConcurrent: 100
      queueSize: 500
      queueTimeout: 60000

  # Self-hosted example
  - url: https://gitlab.example.com
    label: "Company GitLab"
    oauth:
      clientId: "company_app_id"
    rateLimit:
      maxConcurrent: 50
      queueSize: 200
      queueTimeout: 30000

defaults:
  rateLimit:
    maxConcurrent: 100
    queueSize: 500
    queueTimeout: 60000
  oauth:
    scopes: "api read_user"

Exit Codes

CodeMeaning
0Success
1Error (invalid arguments, connection failure, etc.)

Environment Variables

The CLI respects these environment variables:

VariableEffect
GITLAB_INSTANCES_FILEConfig file to read instances from
GITLAB_INSTANCESInline instance configuration
GITLAB_API_URLLegacy single-instance URL

Examples

Setup Workflow

bash
# 1. Generate sample config
npx @structured-world/gitlab-mcp instances sample-config yaml > instances.yaml

# 2. Edit the file with your instances
vim instances.yaml

# 3. Set environment variable
export GITLAB_INSTANCES_FILE=./instances.yaml

# 4. Verify configuration
npx @structured-world/gitlab-mcp instances list

# 5. Test connections
npx @structured-world/gitlab-mcp instances test

Quick Single Instance

bash
# Test a single GitLab instance
GITLAB_API_URL=https://gitlab.com npx @structured-world/gitlab-mcp instances test

# Show info for configured instance
npx @structured-world/gitlab-mcp instances info https://gitlab.com

Released under the Apache 2.0 License.