diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml new file mode 100644 index 0000000..48c2e96 --- /dev/null +++ b/.github/workflows/smoke.yml @@ -0,0 +1,63 @@ +name: smoke + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +jobs: + smoke: + name: smoke (${{ matrix.os }}, py${{ matrix.python-version }}) + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + python-version: ["3.11", "3.12", "3.13"] + + defaults: + run: + # bash on every runner, including Windows, so $GITHUB_ENV and the + # heredoc below behave identically across the matrix. + shell: bash + working-directory: mcp + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements.txt + + - name: Resolve the interpreter for smoke.py + # smoke.py spawns server.py as a stdio subprocess and picks the command + # with os.environ.get("PYTHON", HERE/".venv"/"bin"/"python"). CI never + # creates a .venv, and that fallback path is POSIX-only anyway, so both + # the Linux and the Windows legs export PYTHON explicitly. sys.executable + # is already the correct absolute path on either platform. + run: python -c "import sys; print('PYTHON=' + sys.executable)" >> "$GITHUB_ENV" + + - name: Confirm the mcp cap holds + # Regression guard for the reason this workflow exists: mcp 2.0.0 removed + # mcp.server.fastmcp, which server.py imports. + run: | + python - <<'PY' + from importlib.metadata import version + + import mcp.server.fastmcp # noqa: F401 + + resolved = version("mcp") + print("resolved mcp version:", resolved) + major = int(resolved.split(".")[0]) + assert major < 2, f"mcp {resolved} resolved, so the <2 cap is not holding" + PY + + - name: Run smoke.py + run: python smoke.py diff --git a/mcp/pyproject.toml b/mcp/pyproject.toml index 26298c9..100d8f3 100644 --- a/mcp/pyproject.toml +++ b/mcp/pyproject.toml @@ -4,7 +4,7 @@ version = "1.3.0" description = "stdio MCP server backing the aura-orchestrator skill (On-Chain Lab creation + public or private/encrypted data-room uploads) — wraps Privy, on-chain OCL reads, Labs GraphQL, the x402 payment flow, S3 uploads, AES-256-GCM envelope crypto, ABI encoding and on-chain access conditions (OCL/V3 surface, oclId)." requires-python = ">=3.10" dependencies = [ - "mcp>=1.2.0", + "mcp>=1.2.0,<2", "httpx>=0.27", "cryptography>=42", "eth-abi>=5", diff --git a/mcp/requirements.txt b/mcp/requirements.txt index c054039..66d36b1 100644 --- a/mcp/requirements.txt +++ b/mcp/requirements.txt @@ -1,4 +1,4 @@ -mcp>=1.2.0 +mcp>=1.2.0,<2 httpx>=0.27 cryptography>=42 eth-abi>=5