Skip to content

v0.3.1 — MCP Registry launch

Latest

Choose a tag to compare

@Hui-of-limin Hui-of-limin released this 31 Aug 02:28
· 3 commits to main since this release
e21a4de

First release published to the official MCP Registry.

The server is now discoverable as io.github.iflytek/dolphin-mcp-pilot, so MCP hosts and AI assistants can find and install it without being pointed at this repository by hand.

Install

Docker (the OCI package the registry entry points at):

docker run --rm -p 8001:8001 \
  -e DS_URL=http://your-dolphinscheduler:12345/dolphinscheduler \
  -e DS_USER=admin -e DS_PASSWORD=your-password \
  ghcr.io/iflytek/dolphin-mcp-pilot:0.3.1

The MCP endpoint is http://localhost:8001/mcp/ — the trailing slash is required.

From source: see docs/INSTALLATION.md.

A PyPI package is in progress (#44); until it lands, Docker and source are the supported paths.

Compatibility

DolphinScheduler 3.x. The monitor and user tools try the current endpoints first and fall back to the pre-3.2.2 paths on 404, so 3.2.1 and 3.2.2+ deployments both work from the same image. The e2e suite runs against a 3.4.2 standalone server.


Added

  • MCP Registry publishing (#20): server.json manifest plus a
    publish-registry job in release.yml, gated on needs: build-and-push so
    publication cannot race the image push it depends on. A separate manual
    publish-registry.yml covers recovery, and re-checks that the versioned
    ghcr.io image exists and carries the
    io.modelcontextprotocol.server.name ownership label before publishing.
    Authentication uses GitHub OIDC (login github-oidc); server.json is
    validated against its declared schema before publish so a rejected
    manifest fails the build instead of leaving a tag with nothing published.
  • MCP 2026-07-28 stateless protocol support through the MCP Python SDK 2.x
    (#22).
  • CI compatibility coverage for both an MCP 1.29 legacy client and an MCP 2.0
    client against the same HTTP server (#22).
  • E2E integration tests driven by docker-compose against a real
    DolphinScheduler standalone server (#15), with read-only module coverage and
    a forced-404 unit test pinning the monitor endpoint fallback order.
  • Community case-study gallery under cases/ (#24), with six accepted
    studies: release-gate recovery (#38), safe weekday schedule change (#39),
    human-gated project cleanup (#41), request-scoped team isolation (#46), and
    nightly-ETL / incident firefighting (#40).
  • DeepWiki badge in the README (#18).

Changed

  • Replaced the private FastMCP/session-manager integration with the public
    MCPServer.streamable_http_app() API (#22).
  • HTTP runs statelessly. MCP 2.0 requests never receive Mcp-Session-Id;
    legacy clients remain supported by a per-request compatibility transport
    (#22).
  • Raised the runtime dependency floor to mcp>=2,<3, anyio>=4.9,
    uvicorn>=0.31.1, and pydantic>=2.13.4 (#22, #35).
  • Monitor and user tools now target the current DolphinScheduler endpoints
    (/monitor/{nodeType}, /users/list-all) and fall back to the legacy
    lowercase paths on 404, so 3.2.1 and 3.2.2+ deployments both work from one
    code base (#36).
  • Expanded the README quick start and use-case sections (#37), and documented
    the DolphinScheduler compatibility target.
  • CI action bumps: actions/checkout 4 → 7 (#29),
    actions/setup-python 5 → 7 (#48), actions/upload-artifact 4 → 7 (#28),
    docker/setup-qemu-action 3 → 4 (#32), docker/login-action 3 → 4 (#31),
    docker/setup-buildx-action 3 → 4 (#30),
    docker/build-push-action 6 → 7 (#47),
    docker/metadata-action 5 → 6 (#49), pytest floor → 7.4.4 (#34).

Fixed

  • Request authentication context is now restored after every HTTP request so
    credentials cannot carry over to a later unauthenticated request (#22).
  • The io.modelcontextprotocol.server.name label now sits on the final
    runtime stage of the Dockerfile. On the builder stage it was absent from
    the image actually pushed to ghcr.io, which is the one the registry
    inspects to verify namespace ownership (#20).
  • server.json advertises the endpoint the container really serves,
    http://localhost:8001/mcp/, matching MCP_PORT=8001, EXPOSE 8001, and
    the documented trailing slash (#20).
  • The workflow_dispatch version input is passed through env: and validated
    against a MAJOR.MINOR.PATCH pattern rather than interpolated into a shell
    script, closing a script-injection path in a job that holds
    id-token: write (#20).

The HTTP endpoint remains /mcp/, and stdio behavior is unchanged.

Full diff: v0.3.0...v0.3.1