gitlab_get_file_content
Retrieve file content from GitLab repositories to read source code, configuration files, or documentation by specifying the file path and optional branch reference.
Instructions
Get file content from repository Returns: Raw file content as string Use when: Reading source code, configs, documentation Optional: Specify branch/tag/commit (defaults to default branch)
Example:
File: 'src/main.py' → Returns Python code
File: 'package.json' → Returns JSON content
File: 'README.md' → Returns Markdown
Related tools:
gitlab_list_repository_tree: Browse files
gitlab_create_commit: Modify files
gitlab_get_commit_diff: See file changes
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project identifier (auto-detected if not provided) Type: integer OR string Format: numeric ID or 'namespace/project' Optional: Yes - auto-detects from current git repository Examples: - 12345 (numeric ID) - 'gitlab-org/gitlab' (namespace/project path) - 'my-group/my-subgroup/my-project' (nested groups) Note: If in a git repo with GitLab remote, this can be omitted | |
| file_path | Yes | File path in repository Type: string Format: Relative path from repository root using forward slashes Required: Yes Examples: - 'README.md' (root file) - 'src/main.py' (nested file) - 'docs/api/endpoints.md' (deeply nested) - '.github/workflows/ci.yml' (hidden directory) Note: Always use forward slashes, even on Windows | |
| ref | No | Git reference Type: string Format: branch name, tag name, or commit SHA Optional: Yes - defaults to project's default branch Examples: - 'main' (branch) - 'feature/new-login' (feature branch) - 'v2.0.0' (tag) - 'abc1234' (short commit SHA) - 'e83c5163316f89bfbde7d9ab23ca2e25604af290' (full SHA) Default: Project's default branch (usually 'main' or 'master') |
Implementation Reference
- src/mcp_gitlab/tool_handlers.py:166-173 (handler)The main handler function that implements the gitlab_get_file_content tool. Extracts project_id, file_path, and optional ref from arguments, detects project if needed, and calls GitLabClient.get_file_content() to retrieve and return the file contents.def handle_get_file_content(client: GitLabClient, arguments: Optional[Dict[str, Any]]) -> Dict[str, Any]: """Handle getting file content""" project_id = require_project_id(client, arguments) file_path = require_argument(arguments, "file_path") ref = get_argument(arguments, "ref") return client.get_file_content(project_id, file_path, ref)
- Defines the Tool schema including name, description, and inputSchema with properties for project_id (optional), required file_path, and optional ref.types.Tool( name=TOOL_GET_FILE_CONTENT, description=desc.DESC_GET_FILE_CONTENT, inputSchema={ "type": "object", "properties": { "project_id": {"type": "string", "description": desc.DESC_PROJECT_ID}, "file_path": {"type": "string", "description": desc.DESC_FILE_PATH}, "ref": {"type": "string", "description": desc.DESC_REF} }, "required": ["file_path"] } ),
- src/mcp_gitlab/tool_handlers.py:1033-1034 (registration)Maps the tool name TOOL_GET_FILE_CONTENT to its handler function handle_get_file_content in the TOOL_HANDLERS dictionary, which is used by server.call_tool() to dispatch tool calls.TOOL_GET_FILE_CONTENT: handle_get_file_content, TOOL_GET_COMMIT: handle_get_commit,
- src/mcp_gitlab/constants.py:218-218 (helper)Defines the constant TOOL_GET_FILE_CONTENT with the string name 'gitlab_get_file_content' used throughout for tool identification.TOOL_GET_FILE_CONTENT = "gitlab_get_file_content"