MCP server for connecting to privately deployed GitLab servers
This server has basic tool definitions with schemas and descriptions present, but significant quality gaps limit production readiness. All 5 tools have input schemas with type definitions and descriptions in Chinese. However, descriptions are minimal (10-20 chars), parameter descriptions lack actionable detail, and there is no documented output schema. No error handling guidance, no tool annotations (readOnlyHint), and no composition support for chaining. The server exposes GitLab API complexity directly rather than abstracting it for agent reasoning. Tool names follow verb_noun convention but descriptions do not explain WHEN to use each tool or what downstream actions they enable.
获取项目提交历史
获取项目合并请求列表
获取特定GitLab项目详情
获取GitLab项目列表
获取项目仓库文件内容
Descriptions are too short (10-20 chars) and lack actionable context. 'Get GitLab project list' does not explain when to call this vs gitlab.projects.get, what fields are returned, or how results chain to downstream tools.
No output schema documented. LLMs cannot infer what fields each tool returns, forcing them to guess at response structure and breaking tool chaining. E.g., does gitlab.projects.list return project_id or id? Does it include team_id for downstream calls?
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared in the schema, forcing LLMs to infer safety from descriptions alone.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Parameter descriptions lack format constraints and validation rules. E.g., 'page' has no min/max bounds (should be ≥1), 'per_page' has no limit (should cap at 100), 'ref' defaults to 'main' but does not explain what happens if the branch does not exist.
No error handling guidance in tool definitions or handler code. If a projectId is invalid or a file path does not exist, the LLM receives a raw error with no recovery hint (e.g., 'Try gitlab.projects.list() to find valid project IDs').