All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
connectcommand now auto-generates session name when@sessionis omitted (e.g.,mcpc connect mcp.apify.comcreates@apify). If a session for the same server already exists with matching auth settings, it is reused instead of creating a duplicate.--max-chars <n>global option to truncate output to a given number of characters (ignored in--jsonmode)tools-call <tool> --helpshows tool parameter schema (shortcut fortools-get)- "Did you mean?" suggestions for unknown commands, including reversed names (e.g.,
list-tools→tools-list) --jsonoutput documentation in--helpfor all commands, describing the MCP object shape returnedtools-getnow shows an exampletools-callcommand with placeholder arguments based on the tool's schema
- JSON output for session info (
mcpc @session --jsonandmcpc connect --json) now returnstoolNames(array of tool name strings) instead of fulltoolsobjects, keeping it concise and consistent with the human-readable output --schemaand--schema-modeoptions moved from global scope totools-getandtools-callonly (removed fromprompts-get)
connectnow verifies the server responds before reporting success; shows a warning with the actual error when the server is unreachable- HTTP 404 during initial connect no longer misclassified as "session expired"; error messages now include the actual HTTP error and server URL
build:readmescript failing on macOS due tosed -iplatform difference
0.2.4 - 2026-04-07
- Fixed XSS vulnerability in OAuth callback server: error messages from query parameters are now HTML-escaped before rendering
- Replaced
exec()withexecFile()in browser opening to prevent potential shell injection via crafted OAuth authorization URLs - Added Host header validation to OAuth callback server to mitigate DNS rebinding attacks
- Set restrictive directory permissions (
0o700) on~/.mcpc/and subdirectories to prevent local privilege escalation on shared systems
- Bridge ignores stored OAuth access token when no refresh token is provided; servers that don't issue refresh tokens now work correctly by using the access token as a static Bearer header
- Session incorrectly marked as
unauthorizedwhen access token expires but refresh token is still valid; bridge now attempts token refresh before giving up - "ESC to detach" hint now shows immediately in the spinner when using
--task, instead of waiting for the server to return a task ID
0.2.3 - 2026-03-31
0.2.2 - 2026-03-31
0.2.1 - 2026-03-30
- Secure x402 wallet storage using OS keychain integration with fallback to
wallets.jsonfor compatibility - QR code display for wallet address in
x402 init,x402 import, andx402 infocommands, allowing users to scan and fund the wallet directly from the terminal
- Auto-reconnect crashed and unauthorized bridge processes in the background when enumerating sessions (
mcpcormcpc grep), with a 10-second cooldown between reconnection attempts. Unauthorized sessions benefit from OAuth tokens refreshed by other sessions sharing the same profile.
- Fixed expired sessions falsely showing as
liveafter auto-reconnect — the bridge now detects when the server did not resume the original MCP session (including when no session ID is returned) and marks the session asexpired - Bridge sends first keepalive ping 5 seconds after startup (instead of waiting the full 30-second interval) to detect stale sessions earlier
0.2.0 - 2026-03-24
- New
mcpc grep <pattern>command to search tools, resources, prompts, and instructions across all active sessions, with regex, type filters, and single-session search support - New
tasks-list,tasks-get,tasks-cancelcommands for managing async tasks on the server --taskflag fortools-callto opt-in to task execution with progress spinner;--detachto start a task and return the task ID immediately; press ESC during--taskto detach on the fly--insecureglobal option to skip TLS certificate verification--client-idand--client-secretoptions formcpc login, for servers that don't support dynamic client registration--no-profileoption forconnectto skip OAuth profile auto-detectionmcpc loginnow falls back to accepting a pasted callback URL when the browser cannot be opened (e.g. headless servers, containers)tools-listnow shows inline parameter signatures (e.g.read_file(path: string, +4 optional)) for quick scanning without--fullmcpc @sessionnow shows available tools list from bridge cache (no extra server call)
-
Breaking: CLI syntax redesigned to command-first style. All commands now start with a verb; MCP operations require a named session.
Before After mcpc <server> tools-listmcpc connect <server> @namethenmcpc @name tools-listmcpc <server> connect @namemcpc connect <server> @namemcpc <server> loginmcpc login <server>mcpc <server> logoutmcpc logout <server>mcpc --clean=sessionsmcpc clean sessionsmcpc --config file.json entry connect @namemcpc connect file.json:entry @nameDirect one-shot URL access (e.g.
mcpc mcp.apify.com tools-list) is removed; create a session first withmcpc connect. -
Revised session states:
unauthorized(401/403),disconnected(bridge alive but server unreachable >2min), andexpired(session ID rejected), each with actionable guidance -
When
--profileis not specified, only thedefaultprofile is used; non-default profiles require an explicit--profileflag -
@napi-rs/keyringnative addon is now loaded lazily; falls back to~/.mcpc/credentials.jsonwhen unavailable -
--header/-Hoption is now specific to theconnectcommand instead of being a global option -
Tools cache now fetches all pages on startup and on
tools/list_changednotifications
- HTTP proxy support (
HTTP_PROXY/HTTPS_PROXY) now works for MCP server connections, OAuth token refresh, and x402 payment signing - Explicit
--header "Authorization: ..."now takes precedence over auto-detected OAuth profiles - Fixed auth loss when reconnecting an unauthorized session via
mcpc connect - Session restart now auto-detects the
defaultOAuth profile created after the session was established --timeoutflag now correctly propagates to MCP requests via session bridge--taskand--detachtool calls now correctly send task creation parameters to the server- Bridge now forwards
logging/messagenotifications to connected clients - IPC buffer between CLI and bridge process is now capped at 10 MB, preventing unbounded memory growth
- Fixed
mcpc help <command>showing truncated usage line
0.1.10 - 2026-03-01
- Support for
HTTPS_PROXY,HTTP_PROXY, andNO_PROXY/ lowercase variants env vars for outbound connections - CI/CD automated test pipeline
- Replaced deprecated
keytarpackage with@napi-rs/keyringfor OS keychain integration - Temp files now written to
~/.mcpc/instead of/tmp/to avoid cross-device rename errors on Linux - Improved error messages for invalid server hostnames and mistyped commands (e.g.
mcpc login) - Added
prettierformatting check to lint step
- Fixed
ExperimentalWarning: Importing JSON modules is an experimental featureon Node.js 22+ - Fixed OAuth token refresh for servers with root-based discovery (
.well-knownat/) - Fixed OAuth errors incorrectly expiring the session instead of failing gracefully
0.1.9 - 2026-02-02
- Added CHANGELOG.md for tracking changes
- Automated GitHub release creation in publish script
tools-listnow shows a compact summary by default to support dynamic tool discovery- Added
--fullflag totools-listfor detailed tool information - Publish script now automatically updates CHANGELOG.md version on release
0.1.8 - 2026-01-21
- Session is now marked as expired (not auto-reconnected) when server rejects MCP session ID
- Users must explicitly run
mcpc @session restartto recover from expired sessions
- Fixed incorrect flagging of expired sessions as crashed
- Fixed session expiration detection for various error message formats
- Fixed help command output
0.1.7 - 2026-01-03
- Documentation improvements and updates
- Various cosmetic improvements to CLI output
- Minor bug fixes
0.1.6 - 2026-01-02
- Session notifications with timestamps for tracking list changes (
tools/list_changed,resources/list_changed,prompts/list_changed)
- Renamed
_metato_mcpcin JSON output for MCP spec conformance - Improved formatting of prompts output
- Various cosmetic improvements
- Fixed proxy server issues
- Fixed screenshot URL in README
0.1.5 - 2026-01-01
- Implemented
--proxyoption for exposing sessions as local MCP servers - Added
mcpc @session restartcommand
- Renamed
sessioncommand toconnectfor clarity - Renamed "dead" session status to "crashed" for clarity
- Fixed
--timeoutoption handling
0.1.4 - 2025-12-31
- Implemented
--schemaand--schema-modeoptions for tools - Added
mcpc @session restartcommand
- Renamed
tools-schemacommand totools-get - Improved formatting for prompts and tools output
- Security review and improvements
0.1.3 - 2025-12-29
- Initial public release
- Support for Streamable HTTP and stdio transports
- Session management with persistent bridge processes
- OAuth 2.1 authentication with PKCE
- Full MCP protocol support: tools, resources, prompts
- Interactive shell mode
- JSON output mode for scripting