gitlab_list_repository_tree
List and explore files and directories in a GitLab repository. Supports recursive listing, specific paths, and optional Git references. Use to browse repository structures efficiently.
Instructions
Browse repository directory structure Returns: Array of files and directories Use when: Exploring repo structure, listing files Optional: Recursive listing, specific path
Example response: [{ "name": "src", "type": "tree", "path": "src", "mode": "040000" }, { "name": "README.md", "type": "blob", "path": "README.md", "mode": "100644" }]
Related tools:
gitlab_get_file_content: Read file contents
gitlab_search_in_project: Search in files
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory path in repository Type: string Format: Relative path using forward slashes Default: '' (empty string for root) Examples: - '' (repository root) - 'src' (src directory) - 'src/components' (nested directory) - 'tests/unit/models' (deeply nested) Note: Don't include trailing slash | |
| 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 | |
| recursive | No | Include subdirectories Type: boolean Default: false Options: - true: Include all subdirectories recursively - false: Only immediate children Use case: true for full directory tree, false for folder contents | |
| 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:175-182 (handler)MCP tool handler that extracts parameters (project_id, path, ref, recursive) and calls GitLabClient.get_repository_tree to list the repository tree.def handle_get_repository_tree(client: GitLabClient, arguments: Optional[Dict[str, Any]]) -> Dict[str, Any]: """Handle getting repository tree""" project_id = require_project_id(client, arguments) path = get_argument(arguments, "path", "") ref = get_argument(arguments, "ref") recursive = get_argument(arguments, "recursive", False) return client.get_repository_tree(project_id, path, ref, recursive)
- src/mcp_gitlab/tool_handlers.py:1011-1011 (registration)Registration of the tool name to its handler function in the TOOL_HANDLERS dictionary used by the MCP server.TOOL_LIST_REPOSITORY_TREE: handle_get_repository_tree,
- Pydantic/MCP input schema definition for the gitlab_list_repository_tree tool, including parameters and descriptions.types.Tool( name=TOOL_LIST_REPOSITORY_TREE, description=desc.DESC_LIST_TREE, inputSchema={ "type": "object", "properties": { "project_id": {"type": "string", "description": desc.DESC_PROJECT_ID}, "path": {"type": "string", "description": desc.DESC_TREE_PATH, "default": ""}, "ref": {"type": "string", "description": desc.DESC_REF}, "recursive": {"type": "boolean", "description": desc.DESC_RECURSIVE, "default": False} } } ),
- Utility helper function used by the handler to resolve or auto-detect the project_id from arguments or git remote.def require_project_id(client: GitLabClient, arguments: Optional[Dict[str, Any]]) -> str: """Get project_id or raise error if not found""" project_id = get_project_id_or_detect(client, arguments) if not project_id: raise ValueError(ERROR_NO_PROJECT) return project_id
- src/mcp_gitlab/constants.py:192-192 (schema)Constant defining the exact tool name string used throughout the codebase.TOOL_LIST_REPOSITORY_TREE = "gitlab_list_repository_tree"