list_projects
Retrieve and filter a paginated list of all projects in a Terraform Cloud organization. Use search queries, permissions filters, and sorting options to find specific projects efficiently.
Instructions
List projects in an organization.
Retrieves a paginated list of all projects in a Terraform Cloud organization. Results can be filtered using a search string or permissions filters to find specific projects.
API endpoint: GET /organizations/{organization}/projects
Args: organization: The name of the organization to list projects from page_number: The page number to return (default: 1) page_size: The number of items per page (default: 20, max: 100) q: Optional search query to filter projects by name filter_names: Filter projects by name (comma-separated list) filter_permissions_update: Filter projects that the user can update filter_permissions_create_workspace: Filter projects that the user can create workspaces in sort: Sort projects by name ('name' or '-name' for descending)
Returns: Paginated list of projects with their configuration settings and metadata
See: docs/tools/project.md for reference documentation
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter_names | No | ||
| filter_permissions_create_workspace | No | ||
| filter_permissions_update | No | ||
| organization | Yes | ||
| page_number | No | ||
| page_size | No | ||
| q | No | ||
| sort | No |
Implementation Reference
- The main handler function `list_projects` that executes the tool logic: validates inputs using ProjectListRequest, constructs query parameters, and makes a GET request to the Terraform Cloud API endpoint `/organizations/{organization}/projects` to retrieve a paginated list of projects.@handle_api_errors async def list_projects( organization: str, page_number: int = 1, page_size: int = 20, q: Optional[str] = None, filter_names: Optional[str] = None, filter_permissions_update: Optional[bool] = None, filter_permissions_create_workspace: Optional[bool] = None, sort: Optional[str] = None, ) -> APIResponse: """List projects in an organization. Retrieves a paginated list of all projects in a Terraform Cloud organization. Results can be filtered using a search string or permissions filters to find specific projects. API endpoint: GET /organizations/{organization}/projects Args: organization: The name of the organization to list projects from page_number: The page number to return (default: 1) page_size: The number of items per page (default: 20, max: 100) q: Optional search query to filter projects by name filter_names: Filter projects by name (comma-separated list) filter_permissions_update: Filter projects that the user can update filter_permissions_create_workspace: Filter projects that the user can create workspaces in sort: Sort projects by name ('name' or '-name' for descending) Returns: Paginated list of projects with their configuration settings and metadata See: docs/tools/project.md for reference documentation """ # Create request using Pydantic model for validation request = ProjectListRequest( organization=organization, page_number=page_number, page_size=page_size, q=q, filter_names=filter_names, filter_permissions_update=filter_permissions_update, filter_permissions_create_workspace=filter_permissions_create_workspace, sort=sort, ) # Use the unified query params utility function params = query_params(request) # Make API request return await api_request( f"organizations/{organization}/projects", method="GET", params=params )
- terraform_cloud_mcp/server.py:96-96 (registration)The registration of the `list_projects` tool in the MCP server using the `mcp.tool()` decorator, referencing the handler from the projects module.mcp.tool()(projects.list_projects)
- Pydantic model `ProjectListRequest` providing input schema validation for the list_projects tool parameters including organization, pagination, search query, filters, and sorting.class ProjectListRequest(APIRequest): """Request parameters for listing projects in an organization. Defines the parameters for the project listing API including pagination and search filtering options. Reference: https://developer.hashicorp.com/terraform/cloud-docs/api-docs/projects#list-projects See: docs/models/project.md for reference """ organization: str = Field( ..., description="The name of the organization to list projects from", min_length=3, pattern=r"^[a-z0-9][-a-z0-9_]*[a-z0-9]$", ) page_number: Optional[int] = Field(1, ge=1, description="Page number to fetch") page_size: Optional[int] = Field( 20, ge=1, le=100, description="Number of results per page" ) q: Optional[str] = Field(None, description="Search query for name") filter_names: Optional[str] = Field( None, description="Filter projects by name (comma-separated)" ) filter_permissions_update: Optional[bool] = Field( None, description="Filter projects by update permission" ) filter_permissions_create_workspace: Optional[bool] = Field( None, description="Filter projects by create workspace permission" ) sort: Optional[str] = Field( None, description="Sort projects by name ('name' or '-name' for descending)" )