github nicobailon/pi-mcp-adapter v2.35.0

5 hours ago

pi-mcp-adapter 2.35.0 makes it easier to find the right MCP tool from a natural-language request. Jev-powered semantic search is opt-in and can also evaluate intermediate results in MCP scripts, with explicit controls over which server data may be shared. Long-running MCP Tasks now work end to end, and day-to-day configuration, approvals, authentication, and tool discovery are more reliable. In our local benchmark, Jev chose the expected result first in 10 of 11 answerable cases and second once, compared with five first-place matches from regular text search.

Highlights

  • Describe what you want to do and let Jev find the MCP tools that best match your request.
  • Run long-lived MCP Tasks with progress polling, interactive input, and cancellation.
  • Edit shared MCP configuration without leaving Pi and approve a server for the rest of the session.
  • Reconnect to OAuth and bearer-token servers more reliably, including after expired credentials or authorization failures.
  • Find and use tools more accurately across CJK queries, namespaced catalogs, structured results, and ambiguous names.

Full changelog

Highlights

  • Describe what you want to do and let Jev find the MCP tools that best match your request.
  • Run long-lived MCP Tasks with progress polling, interactive input, and cancellation.
  • Edit shared MCP configuration without leaving Pi and approve a server for the rest of the session.
  • Reconnect to OAuth and bearer-token servers more reliably, including after expired credentials or authorization failures.
  • Find and use tools more accurately across CJK queries, namespaced catalogs, structured results, and ambiguous names.

Added

  • Opt-in TypeSafe Jev support can understand a request, rank MCP tools by how well they match, and evaluate intermediate mcpScript results. Credentials stay in the OS keyring or environment, sharing MCP data requires an explicit server allowlist, and requests have configurable limits. In a live test across 95 local tools and resources, Jev chose the expected result first in 10 of 11 answerable cases and second once, compared with 5 first-place matches from regular text search. Part of #611.
  • /mcp edit [project|global] opens the shared MCP config in an editor (Ctrl+G opens $EDITOR), refuses text that is not a JSONC object, and reloads after a save. Closes #593. Thanks to @turisanapo for PR #594.
  • Support for MCP Tasks. Long-running tool calls are polled to completion, interactive questions use the normal Pi interface, cancellation is forwarded to the server, and failures are reported like ordinary tool-call errors. Task support activates only when the server advertises it and can be disabled per server with tasks: false. Thanks to @rgarcia for PR #620.
  • Users can grant runtime-only approval for all tools and arguments on a server for the current session. Thanks to @derdossi for PR #618.

Changed

  • Development and peer dependency coverage now includes Pi 0.86.
  • Self-namespaced MCP tools no longer receive duplicate prefixes, and proxy calls now resolve unique canonical-name candidates while failing closed on collisions and ambiguity. Fixes #609. Thanks to @elkaix for the report.
  • Namespace proxy tools can now be disabled with settings.namespaceProxyTools: false. Thanks to @k03mad for PR #592.
  • The bundled mcp-scripting skill is now discovered alongside the default-on mcpScript tool and hidden with it when settings.scriptMode is false. Thanks to @zhangyoufu for PR #583.

Fixed

  • HTTP streams authenticated with requestHeadersCommand remain cancellable after garbage collection. Thanks to @zaini for PR #619.
  • Bearer-token and TypeSafe key storage now retry revoked Linux session-keyring operations through the packaged keyctl helper, without special launch commands or plaintext fallback. Set PI_MCP_ADAPTER_DISABLE_KEYRING_RECOVERY=1 to disable recovery. Thanks to @magoz for PR #621.
  • OAuth-enabled MCP servers now reconnect reliably after explicit OAuth, stored-token, and 401 authentication paths. Thanks to @jaresty for PR #624.
  • Direct tools now recover stringified array and object arguments declared through type arrays and schema unions without coercing values that are valid strings. Thanks to @sashkachan for issue #606.
  • Default tool search now supports CJK text, including unseparated mixed-script queries and configured search keywords, while retaining bounded lexical matching. Thanks to @wjunhere for issue #607.
  • Command-backed bearer tokens now refresh through a TTL cache, and keep-alive bearer connections reconnect after a 401. Thanks to @kesor for PR #608.
  • Tool results now preserve structuredContent alongside ordinary content in direct and proxy calls. Thanks to @civcode for issue #588.
  • Restored the MCP footer status during cache-backed deferred startup without eagerly loading or connecting the runtime. Thanks to @pkulyn for issue #586.
  • Oversized object structuredContent summaries now identify themselves as omitted and account for preserved and dropped fields, so extension consumers do not mistake a partial preview for an empty payload. Thanks to @Batchputz for issue #585.
  • Server-scoped tool describe and call requests now fail closed when a name exactly identifies different displayed and upstream tools. Thanks to @sheurich for PR #587.
  • Config writes now preserve resolvable existing symlinks by atomically replacing their targets. Thanks to @peedrr for #597.
  • Server-returned MCP tool errors no longer include misleading input-schema guidance, while invalid proxy arguments are rejected before dispatch. Thanks to @jaresty for PR #596.

Don't miss a new pi-mcp-adapter release

NewReleases is sending notifications on new releases.