Node's util.inspect() has a default maxStringLength of 10000 characters,
causing large MCP responses to be truncated with '... N more characters'.
See: https://nodejs.org/api/util.html#utilinspectobject-options
This affects --output raw and the default output format when it falls
back to printRaw().
Fix: set maxStringLength: null to disable string truncation while
preserving depth: 2 for readable nested object summaries.
Verify (before fix shows 10000, after fix shows 15000):
node -e "console.log('x count:', (require('util').inspect({t:'x'.repeat(15000)}, {depth:2}).match(/x/g)||[]).length)"
node -e "console.log('x count:', (require('util').inspect({t:'x'.repeat(15000)}, {depth:2, maxStringLength:null}).match(/x/g)||[]).length)"
Tests cover the scenario where mcporter is run in a completely empty
environment (no config files anywhere - not in project dir, home dir,
or env vars). Before the fix, this would crash with ENOENT.
Unit tests:
- resolveConfigPath returns explicit=false when no config exists anywhere
E2E tests:
- list command succeeds with empty environment
- list --json outputs valid JSON with empty servers array
- config list succeeds
- config doctor succeeds and shows version banner
When no mcporter.json config exists, the CLI was passing the resolved
(but non-existent) config path to loadConfigLayers, which treated it
as an explicit path and tried to read the file, causing ENOENT.
Now only pass configPath when explicitly provided via --config flag
or MCPORTER_CONFIG env var. This lets loadConfigLayers fall back to
editor config imports when no explicit config is specified.
- Added Notion MCP server with OAuth auth at mcp.notion.com
- Changed Linear from API key auth to OAuth (using /sse endpoint)
- Both now use hosted OAuth flows instead of requiring API keys