pi-mcp-adapter 2.38.0 makes lazy and runtime-registered MCP tools more dependable. Search-mode tools can promote themselves to full direct tools after a successful call, while keep-alive servers registered later now work even when Pi starts with no enabled servers. Compact mcpScript results are easier to understand, and configuration compatibility is broader across stdio paths, OpenCode v2, and Rust MCP schemas. OAuth and MCP UI behavior are also less fragile.
Highlights
- Search-mode tools become full direct tools after a successful proxy call.
- Runtime-registered keep-alive servers work from an empty MCP startup.
- Compact
mcpScriptresults show called tools, repeat counts, and failures. - Stdio paths support
~/…, and MCP UI windows can open in Orca. - OpenCode v2 imports, OAuth access, and Rust MCP schemas are more reliable.
Full changelog
Highlights
- Search-mode tools become full direct tools after a successful proxy call, without requiring a separate search first.
- Runtime-registered keep-alive servers now publish their tools even when Pi starts with no enabled MCP servers.
- Compact
mcpScriptresults show which tools ran, how often they ran, and how many calls failed. - Stdio configurations support home-relative paths, and MCP UI windows can open in Orca.
- OpenCode v2 imports, OAuth credential access, and Rust MCP schemas are more reliable.
Added
- A successful
mcp({ tool })call now activates a helddirectTools: "search"tool, so later calls use its full schema even if the model skipped search. Thanks to @chiptoe-svg for PR #670. - MCP stdio server commands, arguments, and working directories now support home-relative paths. Thanks to @FRFlo for PR #655.
- Set
MCP_UI_VIEWER=orcato open MCP UI windows in Orca. Thanks to @jaesimio for PR #654.
Fixed
- Keep-alive servers registered at runtime now connect and publish their tools even when no configured servers are enabled at startup. Thanks to @ahodges22 for issue #671.
- Valid
ancestorConfigRootsentries that do not contain the current working directory are ignored without warnings. Invalid entries still warn. Thanks to @TheEdgeOfRage for issue #668 and PR #669. - Collapsed
mcpScriptresults now show the tools called, repeat counts, and a visible failure count instead of only the first output line. Unsafe or ambiguous tool names are quoted and escaped, and script code remains hidden. Thanks to @sargismarkosyan for PR #666. - Metadata refreshes no longer reactivate an
mcpgateway tool removed by the host. On hosts withoutunregisterTool, the adapter can still hide the gateway when direct tools cover the server and restore it when needed. Thanks to @xulongwu4 for PR #665. mcpScriptno longer asks models to load its intentionally hidden manual skill. Thanks to @k03mad for #659.- OAuth credential reads now reuse a healthy keyring Entry without retaining secret values, avoiding repeated native sessions while still observing external updates. Thanks to @mmarabel for #657.
- Suppressing MCP UI windows with
MCP_UI_VIEWER=none/off/disabledno longer prints raw output into the TUI. Thanks to @andreafspeziale for #656. - The published package now includes the OAuth guide linked from the README. Thanks to @dajiaohuang for PR #653.
- OpenCode v2 configs now import. Servers under
mcp.serversare picked up,disabled: trueservers are skipped, and the snake_case OAuth fieldsclient_id,client_secret, andauth_server_metadata_urlare mapped. OpenCode v1 configs keep working. Thanks to @sleroq for PR #650. - Tools from Rust MCP servers, such as DBX, no longer print Ajv
unknown format "uint64" ignoredwarnings on every call. Number formats likeuint64,uint32,uint, anduint8are now recognized, andtype/minimumstill validate the values. Thanks to @nightlitten for #649.