Skip to content

Privacy Policy

GitLab MCP Server is a local Model Context Protocol server. It runs entirely on your machine and acts as a bridge between your MCP client (Claude Desktop, Claude Code, Cursor, VS Code, …) and the GitLab instance you configure. It has no analytics, no crash reporting, and no backend of its own; telemetry exists only as an opt-in export to a collector you run, and is described below.

One path is different and is described separately below: the public hosted endpoint at mcp.jmrp.io/gitlab, where the software runs on someone else’s machine rather than yours. See Hosted endpoint.

Last updated: 2026-08-06

Nothing. The server has no analytics, no crash reporting, and no backend of its own. When you run it yourself — which is how this documentation recommends using it — the maintainer never receives, stores, or has access to any of your data, credentials, or usage information.

That is a statement about the software, and it holds wherever you run it. It is not a statement about the hosted endpoint, where the same software runs on a machine the maintainer operates.

The server can export traces, metrics and logs, and this section exists so the paragraph above stays exactly true rather than becoming a technicality.

It is off by default. When you enable it, the telemetry goes to a collector you configure and run. There is no path by which it could reach the maintainer: the only default the exporters have is their own https://localhost:4318, your machine, where the export fails, and says so in your own server log, unless you run a collector there. Nothing in any code path carries anyone else’s address. Turning it on is a decision you make about your own deployment and your own users.

What it records describes operations, never their contents: the method called, the catalog action, whether it succeeded, and how long it took. Tool arguments, tool results, resource contents, search queries, GitLab response bodies and credentials are excluded by design and not by a setting, because there is no setting that would include them.

Who made a call is recorded only if you ask for it, through --telemetry-identity. The default records nobody. A middle setting records a per-process digest that lets you tell one caller’s traffic from another’s without naming anyone. Full identity is available for an organization auditing its own users on its own collector.

The full detail, including what each mode exports, is in OpenTelemetry.

  • Your GitLab instance. Every tool call results in requests to the GitLab URL you configure (GITLAB_URL), authenticated with your Personal Access Token (GITLAB_TOKEN). Data returned by GitLab — projects, issues, merge requests, pipeline logs — is passed directly to your MCP client and is never sent anywhere else. GitLab’s handling of that data is governed by the GitLab Privacy Statement (for GitLab.com) or by your organization’s own policies (for self-managed instances).

Your GitLab instance is the only destination, with one opt-in exception you control: telemetry, when you enable it, exports operation data to the collector you configure, described in its own section above. Beyond that the server contacts nothing else: there is no update check, no registry ping and no default that reaches any other host.

The update check is the part that changed, and this page would be misleading if it simply stopped mentioning it. Releases up to and including v2.7.5 shipped a built-in auto-update that was on by default: a standalone binary asked api.github.com for the latest release on startup and could download and install a replacement for itself. It has been removed rather than defaulted off. Every channel that installs the server already owns the binary (npm, Homebrew, winget, the container image, the Claude Desktop extension), and a process holding your GitLab token had no business also fetching and executing code at runtime. If you opened api.github.com on a proxy for that check, you can close it again.

A public instance of this server is hosted at https://mcp.jmrp.io/gitlab. Using it is optional and is never the default: nothing installs it, and no configuration shipped with the project points at it.

What changes when you use it is worth stating plainly. Your GitLab Personal Access Token and every tool call travel over the network to a machine operated by this project’s maintainer instead of staying on your own, and the requests to your GitLab instance are then made by that machine rather than by yours, so GitLab sees its address instead of yours. The token is used to authenticate that request and is not stored server-side, but you are trusting a host you do not control with it.

That instance is operated as part of mcp.jmrp.io and its handling of requests is governed there, not by this policy, which describes the software. This document can only tell you what the software does; it cannot make promises on behalf of a server you are not running.

If your GitLab instance is private, or the token is scoped beyond what you are willing to hand to a third-party host, run the server locally. That is the whole of the advice, and it is why every install path in the documentation leads there first.

Your GitLab Personal Access Token is provided by you through environment variables or your MCP client’s configuration UI. Claude Desktop stores extension secrets in the operating system keychain. The server keeps the token in process memory only, uses it solely to authenticate requests to your configured GitLab instance, and never logs it. See Security for the full security model.

The server writes logs to standard error only (collected, if at all, by your MCP client). It does not create databases, caches, or files with your GitLab data. In HTTP mode, token identities are cached in memory for the configured TTL and are never persisted to disk.

The server retains nothing after it exits and shares data with no third parties beyond the GitLab instance you explicitly configure and, if you enable telemetry, the collector you explicitly configure.

Changes to this policy are published in PRIVACY.md (the canonical version of this page) and noted in release changelogs. Questions: open an issue.