LeashIndex Get the report

Index / devtools

io.github.mshegolev/gitlab-ci-mcp

io-github-mshegolev-gitlab-ci-mcp declares 23 capabilities across 23 tools, with 2 critical issues. One of them, no-revocation, is recorded for every server in the index because MCP has no field in which to declare a way to switch a tool off; a missing declaration is not evidence that the control is missing.

72/100 exposureHigh exposure

Manifest recorded 2026-10-30 from tools/list answered by the PyPI package gitlab-ci-mcp==0.5.1 (published to PyPI as gitlab-ci-mcp, listed in the official MCP registry as io.github.mshegolev/gitlab-ci-mcp 0.5.1), run in an isolated container with no network access and placeholder credentials. The date changes only when the manifest does. Not verified by a maintainer.

Note. Installed with the MCP Python SDK held below version 2.0. With the newest SDK this version of the package stopped before it could list its tools.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 23 tools

23 of 23 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · destructive-uncapped · 4 of 23 tools

4 tools are annotated by the server as destructive (destructiveHint) and declare no limit. In MCP that annotation marks a tool that may make destructive changes rather than only additive ones; it does not say the change cannot be undone.

high · no-expiry · All 23 tools

23 of 23 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 23 tools

23 of 23 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 4 of 23 tools

4 tools can modify data and declare no limit.

low · uncapped-read · 15 of 23 tools

15 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
gitlab_list_branchesread declared
gitlab_list_tagsread declared
gitlab_compare_branchesread declared
gitlab_list_merge_requestsread declared
gitlab_get_merge_requestread declared
gitlab_get_merge_request_changesread declared
gitlab_create_merge_requestwrite inferred
gitlab_merge_mrdestructive declared
gitlab_list_pipelinesread declared
gitlab_get_pipelineread declared
gitlab_get_pipeline_jobsread declared
gitlab_get_job_logread declared
gitlab_trigger_pipelinewrite inferred
gitlab_retry_pipelinewrite assumed
gitlab_cancel_pipelinedestructive declared
gitlab_pipeline_healthread declared
gitlab_get_fileread declared
gitlab_list_repository_treeread declared
gitlab_project_inforead declared
gitlab_list_schedulesread declared
gitlab_create_schedulewrite inferred
gitlab_update_scheduledestructive declared
gitlab_delete_scheduledestructive declared
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.