@anupsahu/gitlab-mcp
npm
v1.2.2
Published by @anupsahu — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
Production-ready MCP server for GitLab API with OAuth 2.0 PKCE authentication
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
Tools that read sensitive data ([get_file_contents, get_repository_tree]) and tools that can send data out ([create_issue, create_issue_note, create_issue_link]) are exposed together. An agent can move private data to the sink.
Evidence: sources [get_file_contents, get_repository_tree] → sinks [create_issue, create_issue_note, create_issue_link]
Fix: Keep secret-reading and egress capabilities on separate, separately-approved servers.
Location: flow get_file_contents → create_issue
In a packaging/dev/install script (shipped, but not the server runtime) (`build/test/utils/server-launcher.js:179`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: const response = await fetch(`http://${HOST}:${port}/health`, { method: 'GET', signal:
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/test/utils/server-launcher.js
In a packaging/dev/install script (shipped, but not the server runtime) (`build/test/utils/server-launcher.js:5`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: import { spawn } from 'child_process'; import * as path from 'path'; export const HOST = process.env.HOST || '127.0.0.1
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server build/test/utils/server-launcher.js
Each tool and what it can reach — statically extracted from the published source.
create_issuenetwork egresscreate_issue_linknetwork egresscreate_issue_notenetwork egressget_file_contentsreads sensitive dataget_repository_treereads sensitive databulk_publish_draft_notesno sensitive capabilitycancel_pipelineno sensitive capabilitycreate_branchno sensitive capabilitycreate_draft_noteno sensitive capabilitycreate_labelno sensitive capabilitycreate_merge_requestno sensitive capabilitycreate_merge_request_noteno sensitive capabilitycreate_merge_request_threadno sensitive capabilitycreate_milestoneno sensitive capabilitycreate_noteno sensitive capabilitycreate_or_update_fileno sensitive capabilitycreate_pipelineno sensitive capabilitycreate_repositoryno sensitive capabilitycreate_wiki_pageno sensitive capabilitydelete_draft_noteno sensitive capabilitydelete_issueno sensitive capabilitydelete_issue_linkno sensitive capabilitydelete_labelno sensitive capabilitydelete_milestoneno sensitive capabilitydelete_wiki_pageno sensitive capabilityedit_milestoneno sensitive capabilityfork_repositoryno sensitive capabilityget_branch_diffsno sensitive capabilityget_commitno sensitive capabilityget_commit_diffno sensitive capabilityget_draft_noteno sensitive capabilityget_issueno sensitive capabilityget_issue_linkno sensitive capabilityget_labelno sensitive capabilityget_merge_requestno sensitive capabilityget_merge_request_diffsno sensitive capabilityget_milestoneno sensitive capabilityget_milestone_burndown_eventsno sensitive capabilityget_milestone_issueno sensitive capabilityget_milestone_merge_requestsno sensitive capabilityget_namespaceno sensitive capabilityget_pipelineno sensitive capabilityget_pipeline_jobno sensitive capabilityget_pipeline_job_outputno sensitive capabilityget_projectno sensitive capabilityget_usersno sensitive capabilityget_wiki_pageno sensitive capabilitylist_commitsno sensitive capabilitylist_draft_notesno sensitive capabilitylist_group_iterationsno sensitive capabilitylist_group_projectsno sensitive capabilitylist_issue_discussionsno sensitive capabilitylist_issue_linksno sensitive capabilitylist_issuesno sensitive capabilitylist_labelsno sensitive capabilitylist_merge_request_diffsno sensitive capabilitylist_merge_requestsno sensitive capabilitylist_milestonesno sensitive capabilitylist_namespacesno sensitive capabilitylist_pipeline_jobsno sensitive capabilitylist_pipeline_trigger_jobsno sensitive capabilitylist_pipelinesno sensitive capabilitylist_project_membersno sensitive capabilitylist_projectsno sensitive capabilitylist_wiki_pagesno sensitive capabilitymerge_merge_requestno sensitive capabilitymr_discussionsno sensitive capabilitymy_issuesno sensitive capabilityoauth_login_pkceno sensitive capabilityoauth_logoutno sensitive capabilityoauth_statusno sensitive capabilitypromote_milestoneno sensitive capabilitypublish_draft_noteno sensitive capabilitypush_filesno sensitive capabilityretry_pipelineno sensitive capabilitysearch_repositoriesno sensitive capabilityupdate_draft_noteno sensitive capabilityupdate_issueno sensitive capabilityupdate_issue_noteno sensitive capabilityupdate_labelno sensitive capabilityupdate_merge_requestno sensitive capabilityupdate_merge_request_noteno sensitive capabilityupdate_wiki_pageno sensitive capabilityupload_markdownno sensitive capabilityverify_namespaceno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v1.2.2 latest |
A 93/100 | 3 | 1.13.0 | 2026-09-07 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @anupsahu/gitlab-mcp --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 26 side by side →
MCP Server for GitLab API - repository management and DevOps automation
GitLab MCP Server with GraphQL discovery
MCP server for GitLab API integration with comprehensive project, issue, merge request, pipeline, and job management capabilities
GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more
基于 Model Context Protocol (MCP) 框架构建的 GitLab 集成服务器,提供与 GitLab 实例的强大集成能力
Works with the GitLab REST API v4 using a personal access token to browse projects, read repository files, and manage issues and merge requests; supports GitLab.com and self-hosted instances.
Hotel booking MCP server — 300K+ properties, real confirmation numbers, loyalty programs. Builders monetize every booking via Stripe Connect. The first MCP server that completes real hotel reservations inside AI conversations.
Manage AdGuard Home through AI assistants
Read-only Azure DevOps for MCP clients using only your existing browser session — no PAT, no Azure CLI. Browse work items, pull requests, comments, attachments and Artifacts feeds across every project, repo and feed you can access.
MCP server for Adobe Experience Manager Assets integration development
Servidor MCP para el tiempo oficial de España (API pública OpenData de AEMET). Predicción, observación y avisos como herramientas MCP tipadas.
A standalone MCP stdio bridge for Affinity by Canva's local MCP SSE server.