All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
4.5.0 (2026-03-03)
- disable minification for shttp bundles to improve debuggability (#685) (64de162)
- restore whoami behavior, metadata filtering, and flat pagination (#687) (c9ed674)
- show error message when tool list gets invalid connection name (#681) (50ecb00)
4.4.0 (2026-02-27)
- SMI-1567: add prefix filtering to tool list and event topics (#678) (cdb28e8)
- update dev bootstrap for SDK v4.1.0 (#676) (7a105de)
4.3.0 (2026-02-26)
- list event topics without requiring MCP handshake (#671) (760bd8a)
- warn on auth-required connections instead of silently failing (#673) (4fe8a8c)
4.2.1 (2026-02-25)
- SMI-1552: add events poll command and update SDK to 0.52.0 (#670) (cfe076d)
- use positional args for secret set command (#665) (79c310e)
4.2.0 (2026-02-25)
4.1.8 (2026-02-24)
4.1.7 (2026-02-24)
4.1.6 (2026-02-24)
- SMI-1539: add event command for MCP event subscriptions (#652) (6da0b63)
- SMI-1540: scan event topics during publish (#654) (54b8ef0)
4.1.5 (2026-02-24)
4.1.4 (2026-02-23)
4.1.3 (2026-02-23)
- prevent platform mismatch in lazy dependency install (#643) (96ea3bf)
- remove explicit biome linux binary from CI (#645) (51e872d)
4.1.2 (2026-02-22)
4.1.1 (2026-02-22)
4.1.0 (2026-02-22)
- optimize skill trigger description [SMI-1493] (#636) (3e55dde)
- SMI-1512: Add --unstableWebhookUrl option to smithery mcp add (#634) (944034e)
4.0.2 (2026-02-17)
4.0.1 (2026-02-16)
4.0.0 (2026-02-14)
- decouple build from publish, simplify auth and deploy UX (#623)
- CLI v4.0.0 — unified mcp noun, agent-friendly output, global flags [SMI-1372] (#613)
- CLI v4.0.0 — unified mcp noun, agent-friendly output, global flags [SMI-1372] (#613) (56e0e7b)
- decouple build from publish, simplify auth and deploy UX (#623) (36a6944)
3.19.0 (2026-02-09)
3.18.0 (2026-02-08)
- add skills view command (#609) (e0d3e65)
- detect createAuthAdapter export and write to manifest [SMI-1160] (#604) (f5f6b74)
3.17.0 (2026-02-06)
3.16.0 (2026-02-05)
- show welcome message when CLI runs without arguments (e2a7cc6)
3.15.1 (2026-02-05)
- add registry-url to setup-node for npm OIDC auth (7855d98)
- add workflow_dispatch to allow manual publish trigger (bcc31c1)
- use Node 24 for npm OIDC publishing support (7d7b4e2)
- use stderr for postinstall message to bypass npm suppression (df5f6c4)
3.15.0 (2026-02-05)
3.14.0 (2026-02-05)
3.13.2 (2026-02-05)
- add explicit permissions for publish workflow OIDC (a0962ec)
- move OIDC permissions to workflow-level in publish.yml (b9056f3)
3.13.1 (2026-02-05)
- add id-token permission for npm publish OIDC (#593) (3f61a2d)
- use GitHub App token for release-please to trigger CI (#592) (832fe51)
3.13.0 (2026-02-05)
- add value prop about connecting agents to Smithery registry (#591) (090f299)
- improve README clarity and accuracy (#590) (d41e65c)
3.12.1 (2026-02-05)
3.12.0 (2026-02-05)
3.11.0 (2026-02-05)
3.10.0 (2026-02-04)
- add comprehensive Smithery CLI skill [SMI-1367] (#562) (04ace79)
- add logout command to remove all local credentials (#574) (1d6db88)
- add skills review and vote commands (#568) (9251cfd)
- redesign skills review and vote CLI with gh-style commands (#572) (6463e37)
3.9.1 (2026-02-05)
- refactor skills review commands to use @smithery/api client instead of raw fetch (#570)
- update @smithery/api from 0.36.0 to 0.37.0
3.9.0 (2026-02-04)
- add skills search and install commands (#550) (2b1c2db)
smithery skills search [query]- interactive skill search and browsingsmithery skills install <skill> --agent <name>- install skills via Vercel Labs skills CLIsmithery skills agents- list available agents for installationsmithery namespace search [query]- search public namespaces- Options:
--json,--limit,--namespace,-g/--global
- add skills review commands
smithery skills reviews <skill>- list reviews for a skillsmithery skills review <skill>- submit a text review (requires login)smithery skills review <skill> --delete- delete your reviewsmithery skills vote <skill> <review-id> --up|--down- upvote/downvote a review- Options:
--json,--limit,--page,-t/--text,-m/--model
- add
--pageoption tosmithery skills searchfor pagination - add
--print-linkoption tosmithery loginfor agent-friendly authentication (prints URL without spinners/browser) - add custom ID and metadata support to connect command (#558) (11c1484)
- use MCP client for listing tools instead of raw HTTP; ref SMI-1260 (#563) (79cb44d)
- upgrade @smithery/api and use new createConnection API (#561) (9241b59)
- allow SDK client to work without API key (#556) (d883dbe)
- publish to npm in release-please workflow (#565) (94b3cdc)
--config-schemaflag forpublishcommand to specify JSON Schema for external URL servers (inline JSON or path to .json file)- Post-publish tip suggesting
--config-schemafor external URL publishes without configuration
- Renamed
deploycommand topublish(deployremains as deprecated alias with warning) - Consolidated CLI utilities into
cli-utils.ts(qualified-name parsing, config masking, JSON parsing)
- Asset bundling support for stdio deploys via
build.assetsfield insmithery.yaml- allows including non-code files (data files, templates, configs) in MCPB bundles using glob patterns (#524)
- Fixed qualified name parsing - simple names like
linearnow consistently resolve withnamespace="linear"instead of empty namespace
- Refactored
resolveServer()to accept{ namespace, serverName }instead of qualified name string - callers now use centralizedparseQualifiedName()utility
- New
parseQualifiedName()utility insrc/utils/qualified-name.tsfor consistent qualified name parsing across the codebase - Unit tests for qualified name parsing
- BREAKING: Store server configurations in OS keychain instead of remote storage for local servers. Configurations are now stored securely on the user's local machine using the system keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service)
- BREAKING: Remote server configuration handling - OAuth-capable clients now use direct HTTP URLs without API keys. Configuration is handled through OAuth flow instead of CLI prompts
- For clients that don't support OAuth but need HTTP servers, use
mcp-remoteas a fallback transport - Simplified server resolution API - removed
ResolveServerSourceenum andapiKeyparameter fromresolveServer()function - Refactored configuration handling - split
session-config.tsinto focused modules:user-config.tsfor config resolution andserver-config.tsfor server configuration formatting - Updated
runcommand to load configurations from keychain instead of remote storage
- OS keychain integration using
keytarlibrary for secure local configuration storage - New
keychain.tsmodule withsaveConfig(),getConfig(), anddeleteConfig()functions mcp-remoteintegration for non-OAuth clients connecting to HTTP servers- Test coverage for user configuration resolution, server configuration formatting, and client configuration I/O operations
- Support for HTTP URL key customization (
httpUrlKey), HTTP type overrides (httpType), and format descriptor support for client-specific configuration formats
- Remote configuration storage for local servers
session-config.tsmodule (functionality moved touser-config.tsandserver-config.ts)- Widget-related code (
widget-bundler.ts,widget-discovery.ts,widget-validation.ts) - Old test files (
install.test.ts,installation-flow.test.ts,registry.test.ts,config-to-args.test.ts) config-to-args.tsutility (functionality integrated into other modules)
- Fixed integration tests to use actual resolution functions instead of custom mocks in
prepare-stdio-connection.test.ts - Replaced subprocess calls to
npx @anthropic-ai/mcpb unpackwith direct imports from@anthropic-ai/mcpblibrary for better reliability and performance - Improved stdio command creation for bundles to properly resolve environment variables and arguments from manifest.json using actual template resolution functions
- Tests for bundle manager covering template resolution, manifest parsing, and error conditions
- Configuration validation flow during server installation with saved config detection
- Profile support across all configuration endpoints
- New tests covering installation flows and registry API calls
- Updated configuration validation endpoint from
/config/:id/validateto/config/status/:idfor better semantics - Improved configuration prompting: required fields first, then optional fields
- Enhanced installation UX with better messaging and visual indicators
- Fixed URL encoding bug for server names
- Fixed route pattern conflict in registry validation endpoint
- Fixed profile parameter not being passed to config operations
- Integration tests for stateful/stateless server behavior validation
- Fixed config schema not being passed into server bundle
- OAuth support
- Created shared
cleanupChildProcessutility for consistent process cleanup across commands - Added bun bundler support in addition to esbuild - detected automatically at runtime with optional override with
--tooloption (note: only when using bun runtime for esbuild bundle; node doesn't allow bun api)
- Updated Biome from v1.5.3 to v2.2.4 for better cross-platform binary support
- Updated biome.jsonc configuration for v2 compatibility
- Updated Node.js requirement from >=18.0.0 to >=20.0.0 to match dependency requirements
- Updated GitHub Actions to use Node.js 20
- Refactored
dev,playground, anduplinkcommands to use shared child process cleanup utility - Changed default output format from CommonJS to ESM modules
- Removed npm cache configuration from GitHub Actions workflows to resolve build issues
- Resolved
Cannot find module '@biomejs/cli-linux-x64/biome'CI error - Improve error handling in child process cleanup
- Improve race condition handling in process exit
- Fixed CI/CD build issues by removing npm cache configuration from workflow
- Refactored CLI command prompts by extracting prompt utilities from main index file to
src/utils/command-prompts.ts - Cleaned up unused dependencies: removed
@types/uuidandbufferutiloptional dependency - Improved code organization and maintainability of CLI interface
- Added short form
-coption as alias for--clientacross all commands (install, uninstall, list)
- Interactive CLI commands:
smithery install,smithery uninstall, andsmithery listnow support interactive client selection when no--clientflag is provided - New
search [term]command for interactive server discovery in the Smithery registry - Support for Codex client with TOML configuration format
- Comprehensive installation test suite covering Target × Transport matrix (json, yaml, toml, command × stdio, http)
- Improved client configuration pattern with better structure and validation
- Updated command documentation and help text to reflect interactive capabilities
- Idle timeout (30 minutes) now only logs instead of closing connection
- Heartbeat stops on idle, resumes on activity
- Refactored idle manager to use callbacks
- Updated registry endpoint access to use smithery/sdk
- Added proper process exit handling during installation
- Added new API key prompt during installation of remote servers
- Added support for profiles to allow multiple configurations per server
- Improved Streamable HTTP transport initisation by ensuring heartbeats only start after connection is established
- Removed API key requirement for local server installation
- Removed deprecated
fetchConfigWithApiKeyfunction - Updated config collection flow to skip configuration prompts when API key is provided
- Added session termination on transport close for Streamable HTTP runner
- New Streamable HTTP runner as the primary connection method
- Refactored common connection utilities into
runner-utilsfor better code organization
- WebSocket transport is now deprecated in favor of Streamable HTTP transport
- Refactored config handling to treat empty strings ("") as undefined values
- Added stricter validation for required fields in configuration
- Improved process exit handling with proper exit code 0 on transport close
- Removed redundant config validation in and index.ts
- Streamlined config validation flow in config.ts
- Renamed roo-code to roocode for consistency
- Updated Roo Code (previously Roo Cline) configuration path
- Enhanced stdio and WS runners with more gracious error handling
- Improved logging in stdio runner with timestamps
- Unified error handling between WebSocket and STDIO runners by centralizing common error handling logic
- Improved error handling flow by letting parent handle process exits during protocol errors
- Enhanced verbose logging in inspect command to track server resolution, connection selection, and runtime environment setup
- Improved security by logging only configuration structure instead of sensitive values
- Modified runtime config validation to allow empty strings for required fields
- Added separate config validation for run vs install commands
- Improved error handling for missing required fields during runtime
- Added WebSocket heartbeat mechanism that pings every 30 seconds to maintain connection
- Added 15-minute idle timeout with automatic connection shutdown
- Fixed config parsing on Windows command prompt where single quotes were being passed literally instead of being interpreted
- Added support for VS Code and VS Code Insiders
- Added
list serverscommand to display installed servers for a specific client
- Use API key for calling track
- Added random jitter (0-1000ms) to WebSocket reconnection backoff
- Refactored WebSocket runner and improved console logs
- Enhanced WebSocket runner cleanup process with improved handling of connection termination
- Added safety timeout for WebSocket transport cleanup operations
- Added better state management for clean vs unexpected shutdowns in WebSocket connections
- Enhanced cleanup process in stdio-runner with better handling of client disconnections and process termination
- Added safety timeout for transport cleanup operations to ensure process termination
- Updated @modelcontextprotocol/sdk to v1.8.0 which fixes Windows spawn issues (modelcontextprotocol/typescript-sdk#101, modelcontextprotocol/typescript-sdk#198)
- Added API key support to WebSocket runner for using saved configurations
- Silenced WebSocket error logging for non-critical errors to improve UX in clients that surface console errors
- Enhanced WebSocket error handling with specific handlers for connection errors (code -32000) and protocol errors (codes -32602, -32600)
- Added automatic reconnection attempt for server-initiated connection closures
- Updated server configuration handling to skip the
--configflag when configuration is empty, for cleaner commands
- Fixed destructuring issue in collectConfigValues() that was causing parsing error with inspect command
- Refactored the install command for better code organization and maintainability
- Enhanced API key handling to improve backward compatibility and isolate functions when API key is provided
- Optimized registry to reduce database calls by returning both server details and saved configuration in a single request
- Updated
inspectServerfunction to properly handle changes in configuration collection
- Initial support for
--keyflag to authenticate and use servers through smithery (preparatory work, not yet functional)
- Enhanced server configuration with improved validation
- Replaced
normalizeServerIdwithgetServerNameto prevent issues in Cursor due to long server names
- Support server installation for Cursor since latest update (
0.47.x) supports global mcp configuration (see Cursor Changelog)
- Test suites for WebSocket runner (ws-runner.ts)
- Removed npx resolution utility functions in favor of direct handling in stdio-runner.ts with Windows-specific workaround using
cmd /c
- Refactored command organization by moving command files to dedicated
src/commands/directory - Updated import paths and documentation
- Logging runtime environment details in verbose mode