feat: make MCP config file follow Claude directory override

When users set a custom Claude configuration directory, the MCP config
file (.claude.json) is now placed alongside the overridden directory
instead of the default ~/.claude.json location.

Changes:
- Add path derivation logic to generate MCP path from override directory
  (e.g., /custom/.claude → /custom/.claude.json)
- Implement automatic migration from legacy path on first access
- Add comprehensive unit tests covering 4 edge cases
- Update UI descriptions to clarify MCP file placement
- Fix documentation: correct MCP config path from ~/.claude/mcp.json
  to ~/.claude.json

Technical details:
- New function: derive_mcp_path_from_override() extracts directory name
  and creates sibling .json file
- Migration copies ~/.claude.json to new location if override is set
- All MCP operations (read/write/sync) now use the derived path via
  user_config_path() unified entry point

Breaking changes: None (backward compatible with default behavior)
This commit is contained in:
Jason
2025-10-27 09:02:48 +08:00
parent 885dd94803
commit 76a8d1760b
4 changed files with 112 additions and 8 deletions

View File

@@ -143,7 +143,7 @@
"appConfigDirDescription": "Customize the storage location for CC-Switch configuration files (config.json, etc.)",
"browsePlaceholderApp": "e.g., C:\\Users\\Administrator\\.cc-switch",
"claudeConfigDir": "Claude Code Configuration Directory",
"claudeConfigDirDescription": "Override Claude configuration directory (settings.json).",
"claudeConfigDirDescription": "Override Claude configuration directory (settings.json) and keep claude.json (MCP) alongside it.",
"codexConfigDir": "Codex Configuration Directory",
"codexConfigDirDescription": "Override Codex configuration directory.",
"browsePlaceholderClaude": "e.g., /home/<your-username>/.claude",

View File

@@ -143,7 +143,7 @@
"appConfigDirDescription": "自定义 CC-Switch 的配置存储位置config.json 等文件)",
"browsePlaceholderApp": "例如C:\\Users\\Administrator\\.cc-switch",
"claudeConfigDir": "Claude Code 配置目录",
"claudeConfigDirDescription": "覆盖 Claude 配置目录 (settings.json)。",
"claudeConfigDirDescription": "覆盖 Claude 配置目录 (settings.json),同时会在同级存放 Claude MCP 的 claude.json。",
"codexConfigDir": "Codex 配置目录",
"codexConfigDirDescription": "覆盖 Codex 配置目录。",
"browsePlaceholderClaude": "例如:/home/<你的用户名>/.claude",