update_workspace_features
Enable or disable workspace features such as project grouping, initiatives, teams, customers, wiki, and program increments.
Instructions
Update features of the current workspace.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_grouping | No | Enable/disable project grouping feature | |
| initiatives | No | Enable/disable initiatives feature | |
| teams | No | Enable/disable teams feature | |
| customers | No | Enable/disable customers feature | |
| wiki | No | Enable/disable wiki feature | |
| pi | No | Enable/disable PI (Program Increment) feature |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_grouping | Yes | ||
| initiatives | Yes | ||
| teams | Yes | ||
| customers | Yes | ||
| wiki | Yes | ||
| pi | Yes |
Implementation Reference
- plane_mcp/tools/workspaces.py:36-77 (handler)The update_workspace_features tool handler function. It accepts optional boolean parameters for each workspace feature (project_grouping, initiatives, teams, customers, wiki, pi), builds a dictionary of only non-None values, constructs a WorkspaceFeature object, and calls client.workspaces.update_features() to persist the changes.
def update_workspace_features( project_grouping: bool | None = None, initiatives: bool | None = None, teams: bool | None = None, customers: bool | None = None, wiki: bool | None = None, pi: bool | None = None, ) -> WorkspaceFeature: """ Update features of the current workspace. Args: project_grouping: Enable/disable project grouping feature initiatives: Enable/disable initiatives feature teams: Enable/disable teams feature customers: Enable/disable customers feature wiki: Enable/disable wiki feature pi: Enable/disable PI (Program Increment) feature Returns: Updated WorkspaceFeature object """ client, workspace_slug = get_plane_client_context() # Build data dict with only non-None values feature_data: dict[str, bool] = {} if project_grouping is not None: feature_data["project_grouping"] = project_grouping if initiatives is not None: feature_data["initiatives"] = initiatives if teams is not None: feature_data["teams"] = teams if customers is not None: feature_data["customers"] = customers if wiki is not None: feature_data["wiki"] = wiki if pi is not None: feature_data["pi"] = pi data = WorkspaceFeature(**feature_data) return client.workspaces.update_features(workspace_slug=workspace_slug, data=data) - plane_mcp/tools/workspaces.py:35-77 (handler)The @mcp.tool() decorated function that registers update_workspace_features as an MCP tool alongside the tool handler body.
@mcp.tool() def update_workspace_features( project_grouping: bool | None = None, initiatives: bool | None = None, teams: bool | None = None, customers: bool | None = None, wiki: bool | None = None, pi: bool | None = None, ) -> WorkspaceFeature: """ Update features of the current workspace. Args: project_grouping: Enable/disable project grouping feature initiatives: Enable/disable initiatives feature teams: Enable/disable teams feature customers: Enable/disable customers feature wiki: Enable/disable wiki feature pi: Enable/disable PI (Program Increment) feature Returns: Updated WorkspaceFeature object """ client, workspace_slug = get_plane_client_context() # Build data dict with only non-None values feature_data: dict[str, bool] = {} if project_grouping is not None: feature_data["project_grouping"] = project_grouping if initiatives is not None: feature_data["initiatives"] = initiatives if teams is not None: feature_data["teams"] = teams if customers is not None: feature_data["customers"] = customers if wiki is not None: feature_data["wiki"] = wiki if pi is not None: feature_data["pi"] = pi data = WorkspaceFeature(**feature_data) return client.workspaces.update_features(workspace_slug=workspace_slug, data=data) - plane_mcp/tools/workspaces.py:10-77 (registration)The register_workspace_tools function that registers all workspace tools (including update_workspace_features) with the MCP server via @mcp.tool() decorator.
def register_workspace_tools(mcp: FastMCP) -> None: """Register all workspace-related tools with the MCP server.""" @mcp.tool() def get_workspace_members() -> list[UserLite]: """ Get all members of the current workspace. Returns: List of UserLite objects representing workspace members """ client, workspace_slug = get_plane_client_context() return client.workspaces.get_members(workspace_slug=workspace_slug) @mcp.tool() def get_workspace_features() -> WorkspaceFeature: """ Get features of the current workspace. Returns: WorkspaceFeature object containing feature flags """ client, workspace_slug = get_plane_client_context() return client.workspaces.get_features(workspace_slug=workspace_slug) @mcp.tool() def update_workspace_features( project_grouping: bool | None = None, initiatives: bool | None = None, teams: bool | None = None, customers: bool | None = None, wiki: bool | None = None, pi: bool | None = None, ) -> WorkspaceFeature: """ Update features of the current workspace. Args: project_grouping: Enable/disable project grouping feature initiatives: Enable/disable initiatives feature teams: Enable/disable teams feature customers: Enable/disable customers feature wiki: Enable/disable wiki feature pi: Enable/disable PI (Program Increment) feature Returns: Updated WorkspaceFeature object """ client, workspace_slug = get_plane_client_context() # Build data dict with only non-None values feature_data: dict[str, bool] = {} if project_grouping is not None: feature_data["project_grouping"] = project_grouping if initiatives is not None: feature_data["initiatives"] = initiatives if teams is not None: feature_data["teams"] = teams if customers is not None: feature_data["customers"] = customers if wiki is not None: feature_data["wiki"] = wiki if pi is not None: feature_data["pi"] = pi data = WorkspaceFeature(**feature_data) return client.workspaces.update_features(workspace_slug=workspace_slug, data=data) - plane_mcp/tools/__init__.py:24-24 (registration)Import of register_workspace_tools from the workspaces module, which is called by register_tools() to register all workspace tools including update_workspace_features.
from plane_mcp.tools.workspaces import register_workspace_tools - plane_mcp/tools/__init__.py:46-46 (registration)Call to register_workspace_tools(mcp) which registers the update_workspace_features tool with the MCP server.
register_workspace_tools(mcp)