Skip to main content
Glama
jamesbrink

MCP Server for Coroot

update_project_settings

Modify project-level settings like retention policies and alerting configurations in the Coroot observability platform to customize monitoring behavior.

Instructions

Update project settings and configuration.

Updates project-level settings such as retention, alerting, etc.

Args: project_id: Project ID settings: Updated project settings

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYes
settingsYes

Implementation Reference

  • Primary handler and registration for the 'update_project_settings' tool using @mcp.tool() decorator. This is the entry point executed when the tool is called.
    @mcp.tool()
    async def update_project_settings(
        project_id: str, settings: dict[str, Any]
    ) -> dict[str, Any]:
        """Update project settings and configuration.
    
        Updates project-level settings such as retention, alerting, etc.
    
        Args:
            project_id: Project ID
            settings: Updated project settings
        """
        return await update_project_settings_impl(project_id, settings)  # type: ignore[no-any-return]
  • Helper implementation that wraps the CorootClient call and formats the response with success/error handling via @handle_errors decorator.
    async def update_project_settings_impl(
        project_id: str, settings: dict[str, Any]
    ) -> dict[str, Any]:
        """Update project settings."""
        result = await get_client().update_project(project_id, settings)
        return {
            "success": True,
            "message": "Project settings updated successfully",
            "project": result,
        }
  • Core API client method that performs the HTTP POST request to Coroot's /api/project/{project_id} endpoint to update project settings, including name validation.
    async def update_project(
        self, project_id: str, settings: dict[str, Any]
    ) -> dict[str, Any]:
        """Update project settings.
    
        Args:
            project_id: Project ID.
            settings: Updated project settings.
                     Only 'name' field is supported.
                     Name must match pattern: ^[-_0-9a-z]{3,}$
    
        Returns:
            Updated project.
        """
        # Validate project name if provided
        if "name" in settings:
            import re
    
            if not re.match(r"^[-_0-9a-z]{3,}$", settings["name"]):
                raise ValueError(
                    "Project name must contain only lowercase letters, "
                    "numbers, hyphens, and underscores (min 3 chars)"
                )
    
        response = await self._request(
            "POST",
            f"/api/project/{project_id}",
            json=settings,
        )
        data: dict[str, Any] = response.json()
        return data
  • Utility function that lazily initializes and returns the shared CorootClient instance used by all tools.
    def get_client() -> CorootClient:
        """Get or create the client instance.
    
        Raises:
            ValueError: If no credentials are configured.
        """
        global _client
        if _client is None:
            try:
                _client = CorootClient()
            except ValueError as e:
                # Re-raise with more context
                raise ValueError(
                    "Coroot credentials not configured. "
                    "Please set COROOT_BASE_URL and either:\n"
                    "  - COROOT_USERNAME and COROOT_PASSWORD for automatic login\n"
                    "  - COROOT_SESSION_COOKIE for direct authentication\n"
                    "  - COROOT_API_KEY for data ingestion endpoints"
                ) from e
        return _client

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jamesbrink/mcp-coroot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server