MCP server for interacting with GitLab Snippets
Server has 10 tools with complete schemas and descriptions, but quality is uneven. All tools have descriptions (10-50 chars, mostly short) and input schemas with typed parameters. Naming follows verb_noun convention (get_, create_, list_, delete_, update_). However, descriptions are terse and lack context for LLM selection. Parameter descriptions are present but minimal. No output schemas documented. Error handling exists but lacks recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint). No pagination metadata (total_count, next_cursor) in list tools. Composition is sound, tools are single-responsibility and chainable via IDs.
Create a new GitLab snippet
Delete a GitLab snippet
Resolve a GitLab project name to its numeric ID
Get details of a specific GitLab snippet
Get the raw content of a specific file within a GitLab snippet
Get the raw content of a GitLab snippet
List all GitLab snippets (admin endpoint) with optional filtering
Descriptions are terse (10-50 chars) and lack context for LLM tool selection. E.g., 'Get details of a specific GitLab snippet' does not explain when to use get_snippet vs get_snippet_raw_content vs get_snippet_file_raw_content. Baseline for A+ tools is 50-200 chars with selection guidance.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., snippet_id for chaining). Baseline: 100% of A+ tools document return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
List public GitLab snippets with optional filtering
List GitLab snippets with optional filtering
Update an existing GitLab snippet
List tools (list_snippets, list_public_snippets, list_all_snippets) lack pagination metadata. No total_count or next_cursor returned. Without pagination info, LLMs cannot determine if more results exist or how to fetch them efficiently.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). delete_snippet and update_snippet should be marked destructive; get_* tools should be marked read-only. Annotations help LLMs reason about side effects and retry safety.
Error handling in handlers (e.g., handleCreateSnippet) returns generic 'Project not found' without recovery guidance. Should suggest 'Try get_project_id() to resolve the project name' or list available projects.