CERN GitLab MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CERNGITLAB_TOKEN | No | Personal access token (optional). Create a token with `read_api` scope at https://gitlab.cern.ch/-/user_settings/personal_access_tokens for access to internal/private projects, code search, and wiki pages. | |
| CERNGITLAB_TIMEOUT | No | HTTP timeout in seconds | 30 |
| CERNGITLAB_LOG_LEVEL | No | Logging level | INFO |
| CERNGITLAB_GITLAB_URL | No | GitLab instance URL | https://gitlab.cern.ch |
| CERNGITLAB_MAX_RETRIES | No | Max retries for failed requests | 3 |
| CERNGITLAB_RATE_LIMIT_PER_MINUTE | No | API rate limit | 300 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| test_connectivityA | Test connectivity to the CERN GitLab instance. Returns the GitLab version, authentication status, and connection health. |
| search_projectsA | Search for public CERN GitLab projects (which contain repositories, issues, wikis, etc.) by keywords, topics, or programming language. Useful for discovering HEP code, analysis frameworks, and physics tools. |
| get_project_infoA | Get detailed information about a specific CERN GitLab project (metadata, statistics, description). Accepts either a numeric project ID or a full project path (e.g. 'atlas/athena'). |
| list_project_filesB | List files and directories in a CERN GitLab project's repository. Supports recursive listing and path specific lookups. |
| get_file_contentA | Retrieve the content of a specific file from a CERN GitLab repository. Returns the file content along with metadata like size, encoding, and a language hint for syntax highlighting. Binary files are detected and reported without attempting to decode them. |
| get_project_readmeA | Get the README file content for a CERN GitLab project. Automatically detects standard README filenames (README.md, README.rst, etc.). Returns the raw content — useful for understanding what a project does. |
| search_codeA | Search for code snippets across CERN GitLab repositories. Can search globally across all public projects or within a specific project. Returns matching files with line-level context. Useful for finding usage examples of specific libraries, functions, or patterns. |
| search_lhcb_stackA | Search for code snippets within a specific LHCb software stack (e.g., 'sim11'). Automatically resolves the correct Git references for projects in that stack. |
| search_issuesA | Search for issues and discussions in CERN GitLab projects. Useful for understanding how a library is used, finding solution to common errors, or checking if a feature is supported. |
| get_wiki_pagesA | Access wiki pages from a CERN GitLab repository. Can list all wiki pages or retrieve the content of a specific page. Useful for accessing project documentation that lives in the wiki. |
| inspect_projectA | Analyze a CERN GitLab repository to understand its structure, build system, and dependencies. Combines functionality of dependency analysis, build config detection, and CI/CD inspection into a single tool. Returns a comprehensive summary of the project's technical stack. |
| list_branchesA | List or search branches in a CERN GitLab repository. Returns branch names and commit metadata so a branch can be selected and passed as the 'ref' argument to repository content and code-search tools. |
| list_releasesA | List releases from a CERN GitLab repository. Returns release tags, dates, and descriptions. Useful for tracking software versions and finding changelogs. |
| get_releaseA | Get detailed information about a specific release from a CERN GitLab repository. Returns release notes, assets, commit info, and download links. Requires the tag name of the release. |
| list_tagsA | List tags from a CERN GitLab repository. Returns tag names with their associated commit references. Useful for finding version history and release points. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct resource or action: projects, files, code, issues, wiki, releases, branches, tags, and connectivity. Even the multiple search tools are clearly separated by search surface (projects, global code, LHCb stack, issues). The only mild overlap is between get_file_content and get_project_readme, but the README tool's auto-detection makes it a clearly specialized convenience function.
Tool names consistently follow a verb_noun snake_case pattern: get_, list_, search_, test_connectivity, and inspect_project. Verbs are predictable by action type, and no naming convention mixing or irregular casing is present.
At 15 tools, the set sits at the upper boundary of the ideal range, but each tool still earns a place given the breadth of read-only GitLab exploration. It is slightly heavy, especially with niche additions like search_lhcb_stack, but not bloated or redundant.
The tool surface covers project discovery, file browsing, code search, issues, wiki, releases, branches, tags, and project inspection, which forms a strong read-oriented workflow. Missing merge requests, commit history, and diff access are notable gaps for full GitLab coverage, but they are outside the apparent exploration-focused scope.