Skip to content

v3.2.1

Choose a tag to compare

@arvindand arvindand released this 19 Aug 12:10
· 18 commits to main since this release

STDIO Transport Fix — the java -jar path documented in docs/setup.md started cleanly and
then never answered a request. stdio is now the default transport.

Thanks @senor14 for the contribution :)

Added

  • MCP wire-protocol conformance tests: McpProtocolConformanceIT boots the server with the
    http profile on a random port and asserts what a client actually observes on the wire — the
    initialize handshake, the declared tools capability, and a published tool list with unique
    names, descriptions, and structurally valid input schemas. McpStdioConformanceIT covers the
    same surface over stdio by launching the packaged jar the way docs/setup.md documents
    (#14).

Changed

  • Protocol conformance runs in CI: a protocol-conformance job runs both wire-protocol ITs on
    every pull request. The tool list is now asserted by exact tool name rather than by shape alone,
    and McpToolsConfigTest covers the connected-client aggregation path with a stubbed
    McpSyncClient instead of deferring to a manual smoke test — the 3.1.0 Context7 regression, in
    which tools/list silently returned only the nine native tools, would now turn a test red.
  • skipUTs / skipITs are wired to the test plugins: both properties were declared and set by
    the ci, integration, and full profiles but never referenced by surefire or failsafe, so
    -Pintegration still ran the unit tests and the integration job's -DskipUTs=true did nothing.
  • Release metadata: aligned the project version, MCP runtime metadata, registry manifest, Docker
    workflow fallbacks, and Unix/Windows build helper fallbacks for 3.2.1.

Fixed

  • JAR started but never answered a single MCP request: spring.ai.mcp.server.stdio was set only
    in application-docker.yaml, so every Docker path worked while the java -jar invocation
    documented in docs/setup.md came up with no transport at all. Combined with
    web-application-type: none there was nothing left to fail, so the server logged a clean startup
    and then went silent — from the client side, an indefinite hang with no error or warning. stdio is
    now enabled in the default profile, with an explicit stdio: false in the http profile (so the
    STREAMABLE transport does not come up alongside it) and in the test profile (so no stdio transport
    attaches to System.in under surefire)
    (#15).