Changes for version 0.82

  • add a first-permission-dialog walkthrough to Intro.pod, explaining one-time versus persistent grants, rule scopes and exec stdin risks; correct its description of logical workdir IDs.
  • add common repeatable -s/--set KEY=VALUE process-local overrides for trusted instance configuration, after program/instance defaults.
  • key remote mcp-fs host permissions by --host alone, independent of --rsh; add independent local/remote host scopes (this host by default, or all hosts), retaining old unscoped saved rules. Workdir scopes remain plain paths, independent of host.
  • omit single-choice permission scope selectors from native, YAD and terminal rule dialogs, automatically retaining the sole match in saved rules without broadening their applicability.
  • log rejected HTTP requests (status 400 and above) with method, status and peer information, without leaking URL tokens; demote ordinary connection/TLS errors to trace.
  • do not warn on routine GET / requests; keep the normal 404 response without exposing a server-identification page.
  • preserve mcp-vim subprocess stderr when its JSONL initialization fails, instead of hiding the failure behind EOF and SIGPIPE.
  • bootstrap remote mcp-fs over a short Perl command, streaming the launcher source over stdin. Avoid rsh command length limits and preserve worker input across exec by using exact sysread.
  • format mcp-fs sandbox grants, tools, trusted configuration keys and permission action classes as individually searchable POD items.
  • give the mock remote filesystem test its running Perl interpreter explicitly, rather than assuming it is in a fixed Unix PATH.
  • avoid locale-dependent TCP error strings in reverse-connection tests, and skip mcp-imap provider CLI tests when optional fork modules are unavailable while retaining standalone provider parser tests.

Documentation

initialize MCP configuration and manage users and permissions
graphical or terminal permission helper
display an MCP elicitation form using YAD or a terminal
ask the human questions through MCP
filesystem and command tools with optional sandboxing
HTTP requests with URL and method permissions
inspect and manage one IMAP account through MCP
combine MCP servers under tool name prefixes
MCP server for live Vim editors
expose opted-in browser tabs to MCP
using MCP servers, clients and permissions

Modules

Model Context Protocol client/server support
asynchronous MCP client protocol
MCP over AnyEvent::HTTP
MCP byte streams and stdio subprocesses
a request for client input
named servers and derived MCP credentials
authenticated non-HTTP connections on an MCP listener
private state file locking and replacement
asynchronous JSON exchange with an external helper
pluggable external permission prompts
MCP request dispatch and JSON-RPC framing
reverse-connecting MCP JSONL server
an optional MCP HTTP listener and socket handler
MCP over a newline-delimited byte stream
action authorization and sandbox grants
simple function interface for MCP servers
MCP tool declarations and callbacks
persistent filesystem workdir IDs

Provides

in lib/AnyEvent/MCP.pm
in lib/AnyEvent/MCP/IMAP/OAuth2.pm
in lib/AnyEvent/MCP/IMAP/Providers.pm
in lib/AnyEvent/MCP/Worker/IMAP.pm