Skip to content

chore: release notes for 0.2.0, and what the rename to kaitencloud-mcp needs - #6

Closed
Alex (Alexkuva) wants to merge 4 commits into
mainfrom
chore/release-0.2.0-notes
Closed

Alex (Alexkuva) wants to merge 4 commits into
mainfrom
chore/release-0.2.0-notes

Conversation

@Alexkuva

@Alexkuva Alex (Alexkuva) commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR change?

It completes #3 for the 0.2.0 release. #3 moves the package to kaitencloud-mcp and publishes it on a v* tag; this PR is stacked on it (base fix/ci-publish) and adds what the rename needs, plus the release notes.

It replaces #5, which duplicated #3's rename, lockfile and publishing.

Why?

Without the first two changes, the release #3 publishes would report a wrong version and would not start with the command its own package name suggests.

Testing

  • ci: publish the image to its own package and the Python package to PyPI #3's branch on its own, built: the server reports version 0.0.0, and the package provides no kaitencloud-mcp command.
  • This branch, built:
    • uvx --from ./dist/kaitencloud_mcp-0.2.0-py3-none-any.whl kaitencloud-mcp --help and the same with kaiten-mcp both answer;
    • the server reports 0.2.0.
  • uvx uv@0.9.1 lock --check passes: the lockfile ci: publish the image to its own package and the Python package to PyPI #3 relocked stays valid, since a console script is not part of it.
  • uv run ruff check ., uv run ruff format --check ., uv run pytest: 56 passed.
  • The server, against a fresh task quickstart of kaiten main, through an MCP client:
    • uv run pytest -m e2e: 5 passed;
    • a read:* token gets 403 [Auth.MissingScope] from a write tool, and an invalid token gets 401 [ValidateToken.Invalid];
    • kaiten_delete previews until confirm=true;
    • the read-only server lists 15 tools.

Checklist

  • I have read CONTRIBUTING.md.
  • Every commit in this PR includes a valid DCO Signed-off-by line.
  • I have the right to submit all material in this PR.
  • I have not included secrets or confidential data.
  • I have updated tests where appropriate.
  • I have updated documentation where appropriate.
  • I have preserved required third-party licenses and attributions.

🤖 Generated with Claude Code · ✅ Tested and approved by Alex (@Alexkuva), maintainer

fuzcap and others added 2 commits October 22, 2026 08:35
The build job failed on main with permission_denied: read_package: it pushed
ghcr.io/kaitencloud/mcp, an older private package linked to kaiten-internal
that this repository's token cannot write, and which only the package's
settings can open to it. The image now goes to ghcr.io/kaitencloud/kaiten-mcp,
created by this repository's first publish and linked to it by the image's
source label, so it takes the repository's visibility.

The build cache moves from the GitHub Actions cache to a tag of the image's
own package: the gha cache is read-only on a re-run of an old pull request
("failed to reserve cache"). Only pushes write it; pull requests log in to
read it.

A v* tag now also publishes the Python package. kaiten-mcp is taken on PyPI by
an unrelated project, so the project is renamed kaitencloud-mcp; the
console script and the module keep their names. The publish job runs after
lint, test and build, checks the tag against pyproject.toml's version, and
publishes with trusted publishing (no stored token, id-token: write, the pypi
environment). uv.lock stays at revision 3, which the pinned uv 0.9.1 reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tom Ribuot <tom.ribuot@kaiten.sh>
…p needs

On top of the move to kaitencloud-mcp, three things the package needs:

- /health read its version from the distribution kaiten-mcp, which no
  longer exists under that name: an installed server reported 0.0.0. It
  reads kaitencloud-mcp.
- uvx runs the command named after the package, and the package only had
  kaiten-mcp: `uvx kaitencloud-mcp` found nothing to run. kaitencloud-mcp
  is now the same entry point; kaiten-mcp stays.
- The project URLs gain the docs page and the changelog.

The README and MCP.md install from PyPI and from
ghcr.io/kaitencloud/kaiten-mcp:0.2 instead of the repository, building
from a checkout stays as the third way, and CHANGELOG.md starts at 0.2.0.

Signed-off-by: Alexandre Bergere <alexandre.bergere@kaiten.sh>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Alexkuva
Alex (Alexkuva) requested a review from a team as a code owner October 22, 2026 08:42
The server forwards a request's credential without checking it, so a bad
token does not make /mcp answer 401: the endpoint answers, lists the
tools, and each call returns Kaiten's own error, `Kaiten API error (401
Unauthorized) [ValidateToken.Invalid]`. A call with no credential at all
answers `No Kaiten credential`. A missing scope reads `Kaiten API error
(403 Forbidden) [Auth.MissingScope]`, with the scope named. Each was run
against a local Kaiten, over stdio and over Streamable HTTP.

The console's page is Service Accounts, and its action Generate Token.

Signed-off-by: Alexandre Bergere <alexandre.bergere@kaiten.sh>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from fix/ci-publish to main October 22, 2026 09:16
@Alexkuva

Copy link
Copy Markdown
Contributor Author

Replaced by #7: the same two commits, taken again on top of main. After #3's squash merge, updating this branch from main left two [project.urls] tables in pyproject.toml (TOML parse error, lint and test red) and a merge commit without a sign-off (DCO red), which only a history rewrite could fix here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants