Skip to content

Proposal: Use mcp-conformance-action for conformance testing #1826

@SamMorrowDrums

Description

@SamMorrowDrums

Summary

I've created a reusable GitHub Action for MCP server conformance testing: mcp-conformance-action. I believe this could simplify your conformance workflow while maintaining the same coverage.

Current State

Your script/conformance-test script is comprehensive and tests 17 flag configurations. The action I've built supports similar functionality through a configurations input that can specify different start_command options with various flags.

Proposed Benefits

  1. Reusable - Other MCP servers can use the same pattern
  2. Simpler workflow - No custom bash script maintenance
  3. Language-agnostic - Built-in setup for Go, Node, Python, Rust, C#
  4. Job summaries - Automatic markdown report generation
  5. SHA-pinned - Security hardened with dependabot

What Would Change

The action can handle most of your test configurations by using the configurations input with different CLI flags in each start_command. See this gist for a proposed workflow:

https://gist.github.com/SamMorrowDrums/e5fd6e76adf452741c130edde1846b22

Gap Analysis

Feature Your Script Action
Multi-config testing ✅ 17 configs ✅ Supported via configurations JSON
Schema comparison
Timing comparisons
Job summary
Dynamic tool calls ✅ (list_available_toolsets, enable_toolset) ❌ Not yet
Custom JSON normalization

Main Gap: The action currently only tests listing endpoints (tools/list, resources/list, prompts/list), not tool invocations. Your dynamic toolset testing (dynamic-tool-calls config) wouldn't be covered yet.

Options

  1. Partial adoption - Use the action for standard configs, keep custom script for dynamic testing only
  2. Full migration - I can extend the action to support custom JSON-RPC calls
  3. Pass - If custom script works well for you, no change needed!

Would you be interested in exploring this? Happy to create a PR or extend the action's capabilities.

Links

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions