|
name: Conformance Tests |
|
|
|
on: |
|
pull_request: {} |
|
push: |
|
branches: [main] |
|
workflow_dispatch: |
|
|
|
jobs: |
|
server: |
|
name: Server Conformance |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v4 |
|
|
|
- name: Set up JDK 17 |
|
uses: actions/setup-java@v4 |
|
with: |
|
java-version: '17' |
|
distribution: 'temurin' |
|
cache: 'maven' |
|
|
|
- name: Build and start server |
|
run: | |
|
mvn clean install -DskipTests |
|
mvn exec:java -pl conformance-tests/server-servlet -Dexec.mainClass="io.modelcontextprotocol.conformance.server.ConformanceServlet" & |
|
timeout 30 bash -c 'until curl -s http://localhost:8080/mcp > /dev/null 2>&1; do sleep 0.5; done' |
|
|
|
- name: Run conformance tests |
|
uses: modelcontextprotocol/conformance@v0.1.16 |
|
with: |
|
mode: server |
|
url: http://localhost:8080/mcp |
|
suite: active |
|
expected-failures: ./conformance-tests/conformance-baseline.yml |
|
|
|
client: |
|
name: Client Conformance |
|
runs-on: ubuntu-latest |
|
strategy: |
|
matrix: |
|
scenario: [initialize, tools_call, elicitation-sep1034-client-defaults, sse-retry] |
|
steps: |
|
- uses: actions/checkout@v4 |
|
|
|
- name: Set up JDK 17 |
|
uses: actions/setup-java@v4 |
|
with: |
|
java-version: '17' |
|
distribution: 'temurin' |
|
cache: 'maven' |
|
|
|
- name: Build client |
|
run: mvn clean install -DskipTests |
|
|
|
- name: Run conformance test |
|
uses: modelcontextprotocol/conformance@v0.1.16 |
|
with: |
|
mode: client |
|
command: 'java -jar conformance-tests/client-jdk-http-client/target/client-jdk-http-client-*-SNAPSHOT.jar' |
|
scenario: ${{ matrix.scenario }} |
|
expected-failures: ./conformance-tests/conformance-baseline.yml |
|
|
|
auth: |
|
name: Auth Conformance |
|
runs-on: ubuntu-latest |
|
strategy: |
|
matrix: |
|
scenario: |
|
- auth/metadata-default |
|
- auth/metadata-var1 |
|
- auth/metadata-var2 |
|
- auth/metadata-var3 |
|
- auth/basic-cimd |
|
- auth/scope-from-www-authenticate |
|
- auth/scope-from-scopes-supported |
|
- auth/scope-omitted-when-undefined |
|
- auth/scope-step-up |
|
- auth/scope-retry-limit |
|
- auth/token-endpoint-auth-basic |
|
- auth/token-endpoint-auth-post |
|
- auth/token-endpoint-auth-none |
|
- auth/pre-registration |
|
steps: |
|
- uses: actions/checkout@v4 |
|
|
|
- name: Set up JDK 17 |
|
uses: actions/setup-java@v4 |
|
with: |
|
java-version: '17' |
|
distribution: 'temurin' |
|
cache: 'maven' |
|
|
|
- name: Build client |
|
run: mvn clean install -DskipTests |
|
|
|
- name: Run conformance test |
|
uses: modelcontextprotocol/conformance@v0.1.16 |
|
with: |
|
node-version: '22' # see https://github.com/modelcontextprotocol/conformance/pull/162 |
|
mode: client |
|
command: 'java -jar conformance-tests/client-spring-http-client/target/client-spring-http-client-*-SNAPSHOT.jar' |
|
scenario: ${{ matrix.scenario }} |
|
expected-failures: ./conformance-tests/conformance-baseline.yml |