list_all_files_in_project
Generate a file tree of all files in a project or specific subdirectories. Use depth limits and filters to efficiently inspect project structure and navigate large codebases.
Instructions
List all files in a project, returning a file tree.
This is useful for getting an overview of the project, or specific subdirectories of the project.
A project may have many files, so you are suggested to start with a depth limit to get an overview, and then continue increasing the depth limit with a filter to look at specific subdirectories.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit_depth_from_root | No | Limit the depth of the search to this many directories from the root. Typically,start with 1 to get an overview of the project.If None, search all directories from the root. | |
| path_filter | No | Match if any of these strings appear. Match all if None/null. Single empty string or empty list will match all. | |
| project_name | Yes |
Implementation Reference
- mcpunk/tools.py:300-338 (handler)The handler function for the 'list_all_files_in_project' tool. It is decorated with @mcp.tool() for registration and implements the core logic: retrieves the project, creates a file tree using create_file_tree with optional filters and depth limit, and returns the formatted response.@mcp.tool() @log_inputs_outputs() def list_all_files_in_project( project_name: str, path_filter: FilterType = None, limit_depth_from_root: Annotated[ int | None, Field( description=( "Limit the depth of the search to this many directories from the root. " "Typically,start with 1 to get an overview of the project." "If None, search all directories from the root." ), ), ] = None, ) -> ToolResponse: """List all files in a project, returning a file tree. This is useful for getting an overview of the project, or specific subdirectories of the project. A project may have many files, so you are suggested to start with a depth limit to get an overview, and then continue increasing the depth limit with a filter to look at specific subdirectories. """ project = _get_project_or_error(project_name) data = create_file_tree( project_root=project.root, paths={x.abs_path for x in project.chunk_project.files}, limit_depth_from_root=limit_depth_from_root, filter_=path_filter, ) if data is None: return MCPToolOutput(text="No paths").render() elif isinstance(data, str): return MCPToolOutput(text=data).render() else: assert_never(data)