Skip to content

Releases: mcp-box/mcpscore

v0.5.1

13 Jun 11:15
0f36550

Choose a tag to compare

  • Added a Mission doc to give more context for humans and agents.
  • Minor fixes and improvements.

v0.5.0

11 Jun 16:59
bbce3f9

Choose a tag to compare

Added

  • --json CLI flag: emits a machine-readable audit report to stdout
    (schema v1) with per-rule results, while logs go to stderr. Designed for
    CI pipelines and automated tooling.
  • RuleResult.rule_id: results now carry the stable identifier of the rule
    that produced them (stamped by the auditor), plus RuleResult.to_dict()
    for serialization.
  • MCPAuditor.get_audit_report(): returns the full audit
    (score, max_score, summary, per-rule results) as a dictionary.

Changed

  • The CLI now uses argparse: mcpscore --help works, and usage errors keep
    exit code 1 (exit code 2 remains reserved for connection failures).
  • get_audit_summary()'s by_severity breakdown is keyed by severity name
    (CRITICAL, HIGH, MEDIUM, LOW) instead of numeric value, matching
    its documented behavior.
  • CLI logging is explicitly directed to stderr, keeping stdout clean for
    --json output.

v0.4.0

09 Jun 23:16
357d8b7

Choose a tag to compare

[0.4.0] - 2026-06-10

Added

  • MCP initialize handshake verification during connect: a connection now only
    counts as established once the server completes the MCP handshake. Plain
    HTTPS endpoints that are not MCP servers are rejected with
    "Not a valid MCP server (handshake failed)" instead of a false success.
  • MCPClient.initialize() returns the handshake result cached at connect time
    instead of re-initializing the session.
  • TLS version probing: the auditor now reports the actually negotiated TLS
    version (e.g. TLSv1.3) instead of a hardcoded value.
  • CapabilityToolsPresentRule, ToolsNamesUniqueRule, and
    ToolsNamesValidFormatRule are now exported from mcpscore.rules.

Changed

  • Python 3.11+ is now supported (previously 3.13+ only). CI tests against
    3.11, 3.12, and 3.13 on Linux, macOS, and Windows.
  • SSETransportSupportRule replaced by StreamableHTTPTransportRule: the MCP
    specification deprecated standalone SSE in favor of Streamable HTTP, so the
    rule now rewards Streamable HTTP and flags SSE-only servers with migration
    advice (previously it did the opposite).
  • Tool schema validation aligned with the MCP specification / JSON Schema:
    title, properties, and required are optional (zero-argument tools are
    valid), top-level anyOf/oneOf/allOf/$ref schemas are accepted, and
    properties without a type (enum/$ref) are valid.
  • outputSchema is optional per the MCP specification: tools without one are
    no longer penalized; only declared output schemas are validated.
  • AuditData.transport_type is typed as MCPTransportType | None
    (previously str | None).

Fixed

  • Failed connection attempts are torn down immediately on their own exit
    stack; previously they leaked into the client lifecycle and could re-raise
    buffered transport errors during cleanup().
  • A CancelledError leaked by the MCP SDK transport's task group (e.g. when
    the endpoint is not an MCP server) is treated as a failed connection
    instead of escaping to the caller.
  • The CLI now always calls client.cleanup(), including when the audit
    raises (previously connections leaked on error paths).

v0.3.0

07 Jun 20:24
d8c597c

Choose a tag to compare

What's Changed

Full Changelog: v0.2.0...v0.3.0