feat: Complete MCP SDK integration with FastMCP #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| - develop | |
| push: | |
| branches: | |
| - main | |
| - develop | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| test: | |
| name: Test Python ${{ matrix.python-version }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: 'pip' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| - name: Run linting (ruff) | |
| run: ruff check . | |
| continue-on-error: true | |
| - name: Run formatting check (black) | |
| run: black --check . | |
| continue-on-error: true | |
| - name: Run type checking (mypy) | |
| run: mypy capiscio_mcp | |
| continue-on-error: true | |
| - name: Run unit tests | |
| run: | | |
| pytest tests/ -v --tb=short --cov=capiscio_mcp --cov-report=xml --cov-report=term --cov-fail-under=70 | |
| - name: Upload coverage to Codecov | |
| if: matrix.python-version == '3.11' | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.xml | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| test-with-mcp: | |
| name: Test with MCP SDK | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| cache: 'pip' | |
| - name: Install dependencies with MCP | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev,mcp]" | |
| - name: Run tests including MCP integrations | |
| run: | | |
| pytest tests/ -v --tb=short --cov=capiscio_mcp --cov-report=xml --cov-report=term --cov-fail-under=80 | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.xml | |
| flags: mcp-integration | |
| name: codecov-mcp | |
| fail_ci_if_error: false | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| security-scan: | |
| name: Security Scan | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| pip install safety bandit | |
| - name: Run safety check | |
| run: safety check --json || true | |
| continue-on-error: true | |
| - name: Run bandit security scan | |
| run: | | |
| bandit -r capiscio_mcp -f json -o bandit-report.json || true | |
| continue-on-error: true | |
| - name: Upload bandit report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: bandit-report | |
| path: bandit-report.json | |
| build-check: | |
| name: Build Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install build dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install build twine | |
| - name: Build package | |
| run: python -m build | |
| - name: Check package with twine | |
| run: python -m twine check dist/* | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dist | |
| path: dist/ | |
| all-checks-passed: | |
| name: All Checks Passed | |
| needs: [test, test-with-mcp, security-scan, build-check] | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: Check if all jobs passed | |
| run: | | |
| if [ "${{ needs.test.result }}" != "success" ] || \ | |
| [ "${{ needs.build-check.result }}" != "success" ]; then | |
| echo "Some required checks failed" | |
| exit 1 | |
| fi | |
| echo "All required checks passed!" |