Skip to content

Add MCP conformance CI job for thv run proxy - #5806

Merged
JAORMX merged 1 commit into
mainfrom
mcp-conformance-ci
Jul 15, 2026
Merged

JAORMX merged 1 commit into
mainfrom
mcp-conformance-ci

Conversation

@jhrozek

@jhrozek jhrozek commented Jul 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

ToolHive is a proxy in front of MCP servers, so the fidelity of its
transport/proxy layer to the MCP spec can be measured with the upstream
MCP conformance suite.
This adds an automated, spec-authored compliance signal that regresses loudly —
feeding the protocol-currency epic (#5743).

  • New per-PR conformance job in e2e-tests.yml (reuses the build-binary
    artifact; adds actions/setup-node).
  • test/conformance/run-conformance.sh clones the conformance repo at a pinned
    version, builds its reference fixture server into a container, runs it through
    thv run --transport streamable-http, and points the tool at the proxied
    /mcp endpoint, gated by expected-failures.yaml (empty — the CLI proxy is
    transparent, so any drop is a real regression).
  • A single CONFORMANCE_VERSION pins both the npm tool and the git server
    source (repo tags map 1:1 to npm versions).
  • task conformance target for local runs.

k8s operator-proxy conformance is intentionally out of scope pending a fix to its
Host-header rewriting; the stdio bridge needs a stdio fixture server. Both noted
in test/conformance/README.md.

Closes #5803

Type of change

  • Other (describe): CI / test-only

Test plan

  • Manual testing (describe below)

Ran task conformance locally end-to-end: reference server built and started via
thv run, active suite reported 40/40 passed and "Baseline check passed".
Verified trap cleanup removes the workload and the pre-run remove is idempotent.

Does this introduce a user-facing change?

No.

Generated with Claude Code

ToolHive proxies MCP servers, so spec compliance of its transport/proxy
layer can be verified with the upstream MCP conformance suite. Add a
per-PR job that packages the conformance repo's reference server
dynamically (cloned at a pinned version, built into a container), runs it
through `thv run --transport streamable-http`, and points the conformance
tool at the proxied /mcp endpoint. The CLI proxy passes the active suite
cleanly, so the baseline is empty and any drop is a real regression.

A single CONFORMANCE_VERSION pins both the npm tool and the git server
source (repo tags map 1:1 to npm versions). Also add a `task conformance`
target for local runs. The k8s operator-proxy path is intentionally out
of scope pending a fix to its Host-header rewriting.

Closes #5803

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jhrozek
jhrozek requested a review from JAORMX as a code owner July 14, 2026 22:36
@github-actions github-actions Bot added size/S Small PR: 100-299 lines changed and removed size/S Small PR: 100-299 lines changed labels Jul 14, 2026
@JAORMX
JAORMX merged commit 794bcb4 into main Jul 15, 2026
42 checks passed
@JAORMX
JAORMX deleted the mcp-conformance-ci branch July 15, 2026 05:16
@github-actions github-actions Bot mentioned this pull request Jul 15, 2026
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/S Small PR: 100-299 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CI: run MCP conformance suite against ToolHive (thv run)

2 participants