Changelog
All notable changes documented here. Format: Keep a Changelog. Versioning: SemVer.
[Unreleased]
[0.4.2]
Added
cmd:<command> [args]ephemeral stdio<ref>— call any local MCP server in one shell line, noserver add.mcpal tool list "cmd:npx -y @mcp/server-everything".--auth MODEglobal flag pairs with an inlinehttps://<ref>to pick auth on the fly:oauth(default),none/anon,env:VAR,bearer:TOKEN.book/src/one-liners.md— every one-line<ref>shape in one table, with auth modes and the limits of each.book/src/why-cli.md— Explanation chapter on when a shell client earns its place next to MCP-aware chat apps.book/src/protocol-matrix.mdcarries a roadmap table for the 2026-07-28 RC.
Changed
- Resolver order documented and stable: owned alias →
cmd:→ URL → JSON path →<source>:<name>→ bare name. E0001 message lists the new precedence. mcpal-core::handler::run_sampling_handlerreturnsanyhow::Resultinstead of a hand-rolledResult<_, String>.Config::loaddrops thePath::existspre-check and matchesErrorKind::NotFounddirectly; one less stat() per startup.--queryno longer JSON-string-roundtrips its jmespath result.- Internal registry DTOs (
Envelope,Server,Package,EnvVar, …) move topub(crate).ServerWrapperrenamed toServerEntry.EnvVarHintcollapsed into(String, Option<String>). - Unit coverage doubled: 60 → 130 tests (oauth math, JMESPath, resolver order, exit classifier, runtime deadline, TUI focus, sidebar filter, diff edges, discover descriptors).
Fixed
oauth::access_token_refreshingmade one redundant keyring read per call; collapsed to a single load on the hot path.
[0.4.1]
Added
mcpal server installprompts for declared environment variables on a TTY using each variable's registry-provided description as the hint. Non-TTY (or--no-prompt) bails with the newE0017error.- TUI: connecting to a server whose stored spec carries empty env values pops a
Configure '<server>'modal — fill in, save (writes toconfig.toml), connect. book/src/test-corpus.md— curated list of tricky MCP servers exercised on every release.
Changed
- Registry-declared
environmentVariablesdefault to required unless they carry adefaultvalue or explicitly setisRequired: false. Matches the official registry's actual schema. registry::to_specnow returns(ServerSpec, RequiredEnvHint)so callers can prompt instead of bailing.
Fixed
mcpal server install io.github.codeurali/dataversesilently produced a spec withoutDATAVERSE_ENV_URL, then the server crashed oninitialize. The prompt path or--env DATAVERSE_ENV_URL=…resolves this end-to-end.
[0.4.0]
Added
- Discovery sources for VS Code (workspace
.vscode/mcp.json+ usersettings.jsonchat.mcp.servers+ Continue extension storage) and Codex CLI (~/.codex/config.toml). --discover-from PATHglobal flag for ad-hocmcp.jsonfiles (repeatable).- Book
Discoverychapter listing every supported client; troubleshooting section for stdio servers that die oninitialize.
Changed
mcpal server installpicks the highest semver-compatible version from the registry instead of the first match.- Stdio child stderr is captured by default into a 64-line ring buffer; on connect failure the tail is attached to the error chain.
MCPAL_CHILD_STDERR=null|inherit|capturecontrols the mode; the TUI pinsnullto keep its alt-screen clean.
Fixed
mcpal server install io.github.<owner>/<name>silently picked the lowest version when multiple existed.mcpal tool list <stdio-ref>failing withconnection closed: initialize responsenow includes the child's stderr instead of empty context.
[0.3.1]
Changed
mcpal server listnow shows owned + discovered entries by default.--ownednarrows to mcpal-registered;--discoverednarrows to discovery-imported.--allis kept (hidden) for back-compat with scripts.
Fixed
- TUI no longer silently swallows
tools/list,resources/list, orprompts/listfailures. Errors surface to the output pane (<ref>: tools/list failed: …) so an empty tab has a visible explanation.
[0.3.0]
Added
mcpal.ymlcollection file. Defineprofiles:+calls:, thenmcpal run NAME --profile prodto invoke a saved tool call. Source-first: commit the file, share with teammates.mcpal runverb with--dry-run(resolve + print without opening a connection) and--params-override K=V(overlay raw values after templating).{{profile.X}}+{{env.X}}substitution insideparams;{{{{escapes a literal{{. Unresolved variables collected and reported in one error.E0014(template variable not set),E0015(collection not found),E0016(profile not in collection) error codes.- Book chapter
Collections; README Quickstart subsection for saved calls. - Windows install note in the book — DPAPI keyring; MSI / winget roadmap.
[0.2.0]
Added
mcpal server addone-liner:--bearer / --bearer-env / --oauth / --header / --force / --no-loginaccepted alongside the transport flags. Writes spec + materialises the credential (keyring for literal bearers,bearer_envin the spec for env refs, inline browser flow for OAuth) in one command.E0013 server already existserror code;--forceoverrides.- Interactive TUI (
mcpal tui) — split-pane browser for servers, tools, resources, prompts; live notification stream; bearer + OAuth + tool-call composer. .debpackages for Debian / Ubuntu attached to every release.mcpal ui inspect— classifies mcp-ui (ui://) and OpenAI Apps (application/vnd.openai.app+json) payloads in tool results.- Trace events for elicitation + sampling in the notification stream.
--helpExamples blocks forserver add,tool call,auth login,raw.- Book chapters: Install, TUI, UI-rich MCP servers, Changelog.
Changed
- README + book quickstarts collapsed:
server add+auth login→ single command. - README hero reworked semble-style; tagline + badges + nav pills.
- Book sidebar reordered — Concepts moved ahead of How-to guides.
- Dropped "AWS-CLI" framing from doc strings + book prose;
--queryis documented as a JMESPath filter. - Server import promotes
Authorization: Bearer …headers to keyring orbearer_envautomatically.
Fixed
- TUI rendering corruption against servers that bleed installer progress to the controlling terminal (uv / fastmcp). stdio children launch via
setsidand have stderr nulled. - Control bytes in server-supplied strings sanitised before render.
- Esc inside the TUI preserves detail context;
h/ Left navigates to the previous tab.
[0.1.1]
Fixed
- Homebrew tap formula naming. Renamed crate
mcpal-cli→mcpalso cargo-dist publishesFormula/mcpal.rbandbrew install pawelb0/tap/mcpalworks.
[0.1.0]
Added
- Initial release. CLI client for the Model Context Protocol: stdio + Streamable HTTP transports; OAuth 2.1 (PKCE + DCR); discovery from Claude Desktop / Cursor / opencode
mcp.json; tool, resource, prompt commands; JSON-RPCrawescape hatch;watchfor notifications; JMESPath--query; OS-keyring credentials.