fix: point Claude Code profile at ~/.claude.json, not settings.json
Claude Code stores user-scope MCP servers in ~/.claude.json (what 'claude mcp add' writes); ~/.claude/settings.json is for permissions and hooks and rejects an mcpServers key with a schema error, so BCC was reading (and writing) servers where Claude Code never looks. If servers are found parked in settings.json, that file is still listed as 'Claude Code (legacy settings.json)' so they can be copied into the real config via Copy to. Docs updated; verified against docs.claude.com/en/docs/claude-code/settings.
This commit is contained in:
@@ -33,6 +33,34 @@ def test_flags_missing_config_file(fake_base):
|
||||
assert any(p.label == "Claude-Work" and not p.config_exists for p in profs)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fake_home(tmp_path, monkeypatch, fake_base):
|
||||
home = tmp_path / "home"
|
||||
(home / ".claude").mkdir(parents=True)
|
||||
monkeypatch.setattr(c.Path, "home", lambda: home)
|
||||
return home
|
||||
|
||||
|
||||
def test_claude_code_uses_dot_claude_json(fake_home):
|
||||
(fake_home / ".claude.json").write_text('{"mcpServers": {"x": {"command": "npx"}}}')
|
||||
profs = c.discover_profiles()
|
||||
cc = [p for p in profs if p.label == "Claude Code"]
|
||||
assert len(cc) == 1
|
||||
assert cc[0].path == fake_home / ".claude.json"
|
||||
assert cc[0].config_exists
|
||||
|
||||
|
||||
def test_legacy_settings_json_surfaced_only_with_servers(fake_home):
|
||||
# settings.json without mcpServers -> not listed
|
||||
(fake_home / ".claude" / "settings.json").write_text('{"permissions": {}}')
|
||||
assert not any("legacy" in p.label for p in c.discover_profiles())
|
||||
# settings.json WITH parked mcpServers -> listed so the user can migrate
|
||||
(fake_home / ".claude" / "settings.json").write_text(
|
||||
'{"mcpServers": {"old": {"command": "npx"}}}'
|
||||
)
|
||||
assert any("legacy" in p.label for p in c.discover_profiles())
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# 2. Write pipeline: preserves other keys + order, only touches mcpServers
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
Reference in New Issue
Block a user