Skip to main content
Version: Next

Continuous Integration

This document covers the Continuous Integration (CI) workflows used to maintain code quality and ensure tests pass in the ClickUp MCP Server project.

Status Badges

CI CI + E2E

Workflow Triggers

Our CI workflow (ci.yaml) is triggered on:

  • Push to master branch: Excluding branches with "e2e" in their name
  • Pull requests to master: Excluding branches with "e2e" in their name
  • Only when specific paths are modified:

CI Workflow Structure

Main CI Workflow Steps

The CI process uses several reusable workflows to streamline the execution:

1. Build and Test (rw_build_and_test.yaml)

  • Sets up Python environment (Python 3.13)
  • Installs dependencies via Poetry
  • Runs unit tests, integration tests, and optionally E2E tests
  • Generates test coverage reports

2. Test Coverage Reporting

For each test type (unit, integration, E2E, contract), the workflow:

  • Organizes and processes test coverage data
  • Uploads reports to Codecov with specific flags
  • Labels reports with the package name (clickup_mcp)

3. Code Quality Checks

As part of the test process, the following checks are performed:

  • MyPy: Type checking with comprehensive protocol validation
  • PyLint: Code analysis based on Google's Python style guide
  • Flake8: PEP 8 compliance checking
  • Black: Code formatting verification
  • isort: Import sorting verification

4. Type System Validation

We have a dedicated type checking workflow that validates our comprehensive type system:

  • Protocol Accessibility: Ensures all protocol types are properly exported
  • Protocol Implementation: Tests compliance with EventHandlerProtocol, ClickUpClientProtocol, etc.
  • Type Guard Validation: Verifies type guards work correctly for ClickUp API types
  • Consolidated Type Testing: Validates unified MCPToolData usage
  • Forward Reference Resolution: Checks conditional imports and TYPE_CHECKING blocks

For detailed information about our type system design, see the Type System Design documentation.

Multi-Python Version Testing

The project uses a dedicated workflow (rw_uv_run_test_with_multi_py_versions.yaml) to test across multiple Python versions, ensuring compatibility.