Skip to main content
Glama
anton-prosterity

Documentation Search MCP Server

ci.yml6.62 kB
name: CI - Test & Quality on: push: branches: [main] paths-ignore: - '**.md' - 'docs/**' - '.github/workflows/security.yml' pull_request: branches: [main] paths-ignore: - '**.md' - 'docs/**' # Cancel in-progress runs for the same PR/branch concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true permissions: contents: read pull-requests: write checks: write env: UV_VERSION: "0.4.30" PYTHON_VERSION: "3.13" UV_LINK_MODE: hardlink jobs: lint: name: Lint (Ruff) runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Setup UV uses: astral-sh/setup-uv@v3 with: version: ${{ env.UV_VERSION }} - name: Cache UV dependencies uses: actions/cache@v4 with: path: ~/.cache/uv key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }} restore-keys: | uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}- uv-${{ runner.os }}- - name: Run Ruff check run: uv tool run --from ruff ruff check src --output-format=github continue-on-error: false - name: Run Ruff format check run: uv tool run --from ruff ruff format src --check type-check: name: Type Check (mypy) runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Setup UV uses: astral-sh/setup-uv@v3 with: version: ${{ env.UV_VERSION }} - name: Cache UV dependencies uses: actions/cache@v4 with: path: ~/.cache/uv key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }} restore-keys: | uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}- uv-${{ runner.os }}- - name: Run mypy run: uv tool run --from mypy --with types-PyYAML mypy src/documentation_search_enhanced --ignore-missing-imports --python-version=3.12 continue-on-error: true test: name: Test (Python ${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: matrix: python-version: ["3.13"] fail-fast: false steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Setup UV uses: astral-sh/setup-uv@v3 with: version: ${{ env.UV_VERSION }} - name: Cache UV dependencies uses: actions/cache@v4 with: path: ~/.cache/uv key: uv-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('uv.lock') }} restore-keys: | uv-${{ runner.os }}-py${{ matrix.python-version }}- uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}- uv-${{ runner.os }}- - name: Cache Playwright browsers uses: actions/cache@v4 with: path: ~/.cache/ms-playwright key: playwright-${{ runner.os }}-py${{ matrix.python-version }} restore-keys: | playwright-${{ runner.os }}- - name: Install dependencies run: | uv sync --all-extras uv pip install pytest-cov - name: Install Playwright browsers run: uv run playwright install chromium --with-deps - name: Run tests with coverage env: SERPER_API_KEY: ${{ secrets.SERPER_API_KEY }} run: | uv run pytest --ignore=pytest-test-project \ --cov=src/documentation_search_enhanced \ --cov-report=xml \ --cov-report=term \ --junitxml=pytest-results.xml \ -v - name: Upload coverage to Codecov 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 }} - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: test-results-py${{ matrix.python-version }} path: | pytest-results.xml coverage.xml retention-days: 30 build-validation: name: Build Validation runs-on: ubuntu-latest needs: [lint, type-check, test] steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Setup UV uses: astral-sh/setup-uv@v3 with: version: ${{ env.UV_VERSION }} - name: Cache UV dependencies uses: actions/cache@v4 with: path: ~/.cache/uv key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }} restore-keys: | uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}- uv-${{ runner.os }}- - name: Clean previous builds run: rm -rf dist/ build/ *.egg-info/ - name: Build package run: uv build - name: Verify build artifacts run: | ls -la dist/ echo "Checking for wheel and sdist..." test -f dist/*.whl test -f dist/*.tar.gz - name: Run twine check run: uv tool run --from twine twine check dist/* - name: Test wheel contents run: | # Verify wheel structure without installing dependencies (saves disk space) # Extract wheel to check contents python -m zipfile -e dist/*.whl wheel-contents/ ls -la wheel-contents/ # Verify key files exist test -f wheel-contents/documentation_search_enhanced/__init__.py test -f wheel-contents/documentation_search_enhanced/main.py test -f wheel-contents/documentation_search_enhanced-*.dist-info/METADATA echo "✅ Wheel structure verified" - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: dist-packages path: dist/ retention-days: 7

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/anton-prosterity/documentation-search-mcp'

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