---
summary: "Adopt @cyanheads/mcp-ts-core ^0.10.6; explicit createApp name/title identity; Dockerfile healthcheck + version label; .mcpbignore anchoring and bundle-content lint guards"
breaking: false
security: false
---

# 0.1.12 — 2026-06-12

## Added

- **`createApp({ name, title })`** — `src/index.ts` now sets both to the unscoped package name `worldbank-mcp-server`, pinning the served identity to the machine name on every surface.
- **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into the `bundle` script; runs `mcpb clean` then strips agent-doc entries (`skills/`, `.claude/`, `.agents/`, `SKILL.md`) nested under `node_modules/` that root-anchored `.mcpbignore` patterns cannot reach.
- **`scripts/lint-packaging.ts`** — bundle-content guards: dev dirs excluded at bundle root, unanchored `.mcpbignore` patterns flagged for also stripping nested `node_modules/**` runtime paths, critical runtime paths protected, built `.mcpb` asserted free of `node_modules` agent-doc entries, and `name`/`title`/`display_name` identity checked against the unscoped package name.
- **`scripts/check-framework-antipatterns.ts`** — rule `coerce-boolean-env-flag` rejects `z.coerce.boolean()` on env flags (`Boolean("false")` is `true`; use `z.stringbool()`); comment lines are skipped so docs naming the pattern don't false-positive.
- **Dockerfile** — `HEALTHCHECK` probing `/healthz` via bun-native `fetch` (slim image ships no curl/wget), plus an `org.opencontainers.image.version` label fed by the `APP_VERSION` build arg.

## Changed

- **`.mcpbignore`** — root dev-dir patterns anchored with a leading `/` (`/.claude/`, `/skills/`, `/Dockerfile`, …) so they match only at bundle root, and `/.agents/` + `/skills/` added.
- **Vendored skills** (`skills/`, `.claude/skills/`, `.agents/skills/`) re-synced to the installed framework version.

## Dependencies

- `@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6
- `@types/node` ^25.9.1 → ^25.9.3
