Gitlab Review Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Gitlab Review Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server for GitLab code review and project management. Provides comprehensive tools for interacting with GitLab projects, merge requests, issues, and code reviews through Claude AI.
uvx gitlab-review-mcpuv add gitlab-review-mcp
uv run gitlab-review-mcpRequired:
https://gitlab.com)Optional:
"true" to enable detailed logging (default: false)api - Full API accessread_api - Read API (if you only need read operations)streamable-http, streamable_http){
"mcpServers": {
"gitlab-review-mcp": {
"command": "uvx",
"args": ["--no-progress", "gitlab-review-mcp"],
"env": {
"GITLAB_URL": "https://gitlab.com",
"GITLAB_PRIVATE_TOKEN": "your-token-here",
"GITLAB_REVIEW_MCP_SHOW_LOGS": "false"
}
}
}
}Start server:
uvx --no-progress gitlab-review-mcp --transport http --port 8000 --host 0.0.0.0Client config:
{
"mcpServers": {
"gitlab-review-mcp": {
"url": "http://localhost:8000/mcp",
"transport": "http"
}
}
}Start server:
uvx --no-progress gitlab-review-mcp --transport sse --port 8000 --host 0.0.0.0Client config:
{
"mcpServers": {
"gitlab-review-mcp": {
"url": "http://localhost:8000/sse",
"transport": "sse"
}
}
}uv run --with{
"mcpServers": {
"gitlab-review-mcp": {
"command": "uv",
"args": ["run", "--with", "gitlab-review-mcp", "gitlab-review-mcp"],
"env": {
"GITLAB_REVIEW_MCP_SHOW_LOGS": "false"
}
}
}
}uv run --directory (Local Development){
"mcpServers": {
"gitlab-review-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/gitlab-review-mcp", "gitlab-review-mcp"],
"env": {
"GITLAB_REVIEW_MCP_SHOW_LOGS": "true"
}
}
}
}All transport types can use these alternative commands:
# Using uv run --with
uv run --with gitlab-review-mcp gitlab-review-mcp --transport http --port 8000
# Using uv run --directory (local development)
cd /path/to/gitlab-review-mcp
uv run gitlab-review-mcp --transport http --port 8000#### search_projects Search for GitLab projects by keyword with pagination support.
Search Capabilities:
search (required) - Search keyword for substring matchingowned (optional) - Only show owned projects (default: false)membership (optional) - Only show projects you're a member of (default: true)page (optional) - Page number for pagination (default: 1)per_page (optional) - Results per page (default: 20, max: 100)order_by (optional) - Sort by: id, name, created_at, star_count, last_activity_at (default)sort (optional) - Sort order: asc or desc (default)#### list_merge_requests List merge requests for a specific project with pagination support.
project_id (required) - GitLab project IDstate (optional) - Filter by state: opened, closed, merged, allauthor_id (optional) - Filter by author user IDassignee_id (optional) - Filter by assignee user IDlabels (optional) - Filter by label names (comma-separated)page (optional) - Page number for pagination (default: 1)per_page (optional) - Results per page (default: 20, max: 100)#### get_merge_request Fetch detailed merge request information.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IID (e.g., !123)#### get_merge_request_diffs Get code changes (diffs) for a merge request with pagination support.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDpage (optional) - Page number for pagination (default: 1)per_page (optional) - Results per page (default: 20, max: 100)#### add_merge_request_comment Add a general comment to a merge request.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDcomment (required) - Comment text#### add_merge_request_line_comment Add a line-specific comment to merge request code.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDfile_path (required) - File path in repositoryline_number (required) - Line number in new versioncomment (required) - Comment textbase_sha (required) - Base commit SHA (from diff)head_sha (required) - Head commit SHA (from diff)start_sha (required) - Start commit SHA (from diff)old_line (optional) - Line number in old version#### get_merge_request_comments Get all comments and discussions from a merge request, including suggestions, with pagination support.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDpage (optional) - Page number for pagination (default: 1)per_page (optional) - Results per page (default: 20, max: 100)#### get_merge_request_commits Get all commits in a merge request with pagination support.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDpage (optional) - Page number for pagination (default: 1)per_page (optional) - Results per page (default: 20, max: 100)#### update_merge_request_comment Update an existing merge request comment.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDnote_id (required) - Note ID to updatecomment (required) - Updated comment text#### reply_to_merge_request_comment Reply to an existing discussion thread.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDdiscussion_id (required) - Discussion ID to reply tocomment (required) - Reply comment text#### update_merge_request Update merge request title and/or description.
project_id (required) - GitLab project IDmr_iid (required) - Merge request IIDtitle (optional) - New titledescription (optional) - New description#### apply_suggestion Apply a single code change suggestion.
suggestion_id (required) - Suggestion ID to apply#### apply_suggestions Apply multiple code change suggestions in batch.
suggestion_ids (required) - List of suggestion IDs to apply#### get_issue Fetch detailed issue information.
project_id (required) - GitLab project IDissue_iid (required) - Issue IID (e.g., #123)The project includes comprehensive tests:
# Run all tests
make test
# Run with coverage
make test-cov# Clone the repository
git clone https://github.com/midodimori/gitlab-review-mcp.git
cd gitlab-review-mcp
# Install with development dependencies
make install-dev
# Run tests
make test
# Format and lint code
make format
# Check code style and types
make lint
# Run the server locally
make run
# See all available commands
make helpgitlab-review-mcp/
├── src/gitlab_review_mcp/
│ ├── __init__.py
│ ├── server.py # MCP server implementation
│ ├── config.py # Configuration settings
│ ├── services/ # Business logic layer
│ │ ├── __init__.py
│ │ └── gitlab_service.py # GitLab API service
│ ├── tools/ # MCP tool implementations
│ │ ├── __init__.py
│ │ └── gitlab_tools.py # GitLab tools (14 tools)
│ └── utils/ # Utility modules
│ ├── __init__.py
│ └── logging.py # Logging configuration
├── tests/
│ ├── __init__.py
│ ├── test_server.py # Tool function tests with mocks
│ ├── test_pagination.py # Pagination-specific tests
│ └── test_mcp_integration.py # MCP integration tests
├── LICENSE
├── Makefile
├── PUBLISHING.md # Publishing guide
├── pyproject.toml # Project configuration
├── pytest.ini
└── README.mdgit checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
For questions, issues, or contributions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.