Repository navigation
chore: release notes for 0.2.0, and what the rename to kaitencloud-mcp needs - #7
Merged
Merged
Conversation
…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>
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>
7 tasks done
/health probes the gateway's /healthz without a token, and counted only a 200 as reachable. A Community Edition gateway serves /healthz to anyone; Kaiten Cloud's asks for a token and answers 401. So a server pointed at Kaiten Cloud reported "degraded" with "reachable": false, while every tool call, which carries the caller's token, worked. A 401 now counts as Kaiten answering at that address, like a 200. A 5xx, or no answer at all, still reports "degraded". tests/test_health.py covers the four cases through the route itself. Signed-off-by: Alexandre Bergere <alexandre.bergere@kaiten.sh> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
backtrack5r3 (tomflenner)
approved these changes
Oct 22, 2026
7 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR change?
It completes #3, now merged, for the 0.2.0 release. #3 moved the package to
kaitencloud-mcpand publishes it on av*tag; this PR adds what the rename needs, plus the release notes./healthreports the right version. The server reads its version from the distributionkaiten-mcp, which no longer exists under that name. With ci: publish the image to its own package and the Python package to PyPI #3 alone, an installed server reports0.0.0. It now readskaitencloud-mcp.uvx kaitencloud-mcpruns the server. uvx runs the command named after the package, and with ci: publish the image to its own package and the Python package to PyPI #3 alone the package only provideskaiten-mcp.kaitencloud-mcpis now the same entry point, andkaiten-mcpstays./healthreads Kaiten Cloud correctly. It probes the gateway's/healthzwithout a token, and counted only a200as reachable. Kaiten Cloud's gateway asks for a token and answers401, so a server pointed at Kaiten Cloud saiddegraded,"reachable": false, while every tool worked. A401now counts as Kaiten answering, like a200; a5xxor no answer still reportsdegraded.tests/test_health.pycovers the four cases through the route.[project.urls]gains the docs page and the changelog, next to ci: publish the image to its own package and the Python package to PyPI #3's homepage, repository and issues.The README and
MCP.mdinstall from PyPI (uvx kaitencloud-mcp stdio) and fromghcr.io/kaitencloud/kaiten-mcp:0.2, a tag ci: publish the image to its own package and the Python package to PyPI #3's rules produce, instead of the repository. Building from a checkout stays as the third way.CHANGELOG.mdstarts at 0.2.0.MCP.md's troubleshooting says what a client actually receives:401 [ValidateToken.Invalid]from each tool call, not a401from/mcp: the server forwards the credential without checking it;Kaiten API error (403 Forbidden) [Auth.MissingScope], with the scope named.The console labels are Service Accounts and Generate Token.
It replaces #6, the same two commits stacked on #3's branch. Once #3 was squash-merged, updating #6 from
mainleft two[project.urls]tables inpyproject.tomland a merge commit without a sign-off, so this branch takes the two commits again on top ofmaininstead. #5, which duplicated #3, was closed before.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
mainafter ci: publish the image to its own package and the Python package to PyPI #3, built: the server reports version0.0.0, and the package provides nokaitencloud-mcpcommand.This branch, built:
uvx --from ./dist/kaitencloud_mcp-0.2.0-py3-none-any.whl kaitencloud-mcp --helpand the same withkaiten-mcpboth answer;0.2.0.uvx uv@0.9.1 lock --checkpasses: 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./healthfrom this branch, run for real:https://app.kaiten.sh/api:ok,reachable: true,status: 401;ok,status: 200;degraded, All connection attempts failed.On the code before the fix, the new test's
kaiten-cloudcase fails.uv run ruff check .,uv run ruff format --check .,uv run pytest: 61 passed.The server, against a fresh
task quickstartof kaiten main, through an MCP client:uv run pytest -m e2e: 5 passed;read:*token gets403 [Auth.MissingScope]from a write tool, and an invalid token gets401 [ValidateToken.Invalid];kaiten_deletepreviews untilconfirm=true;Checklist
CONTRIBUTING.md.Signed-off-byline.🤖 Generated with Claude Code · ✅ Tested and approved by Alex (@Alexkuva), maintainer