Skip to content

v0.10.4 — MCP servers that start, and a publish that can't ship a stale build

Choose a tag to compare

@ihatesea69 ihatesea69 released this 29 Jul 07:29
· 14 commits to main since this release
a0a9c42

MCP servers no longer open red in a fresh workspace

init used to write server definitions Kiro could not start. Five separate causes, all fixed:

  • ${WORKSPACE_ROOT} was written verbatim into args — Kiro does not interpolate it, so the filesystem server got a literal path. It is now resolved at write time.
  • Credentialed servers were "disabled" by renaming the key to _disabled_<name>, which is not a Kiro convention — Kiro saw a server literally named _disabled_github and tried to launch it. They now use Kiro's own "disabled": true field with a _comment naming the variable to set. Existing _disabled_* keys migrate on the next init.
  • uvx servers (git, fetch) shipped enabled but need the uv Python toolchain. They now ship disabled with install instructions.
  • An unresolved ${VAR} in a server's env disables that server instead of letting it fail at launch.
  • MCP setup was nested inside the "Configuring Powers" task, so --powers none silently skipped it. It is its own task now, and both .mcp.json and .kiro/settings/mcp.json come from one normalised config.

A server you enabled by hand is never switched back off, and user-defined servers are still never overwritten.

A stale dist/ can no longer be published

npm publish packs whatever sits in dist/, and nothing rebuilt it first — so kiro-kit@0.10.3 on npm shipped a build from 20 May: 7 presets instead of 10 (no sa, kiro-kit-dev, ai-engineer), none of the MCP fixes above, plus 41 stray .coverage files. That version is now deprecated on npm — use 0.10.4.

packages/cli now runs prepublishOnly: clean && build, so publishing always rebuilds from source.

Also fixed

  • A backup/restore property test generated . as a filename, so the write failed with EISDIR on some seeds — read as CI flake rather than a generator bug.
  • Documents named after an Object.prototype key (toString, constructor, …) no longer break the parity-sync rebrander: gray-matter's cache is a plain object, so those names hit the prototype and parsed to body: undefined.

Verified in the published package

10 preset directories, the MCP normaliser present in the bundle, zero stray files, and npx kiro-kit init --preset sa produces a workspace whose mcp.json has no _disabled_ keys and no unresolved ${WORKSPACE_ROOT}.

npx kiro-kit@0.10.4 init