Skip to content

Commit f8287f1

Browse files
author
LittleCoinCoin
committed
feat(kiro): add configuration file backup support
Integrate Kiro with the MCP host configuration backup system to provide automatic backup creation before configuration changes. Key changes: - Add 'kiro' to supported hostnames in BackupInfo validator - Update KiroHostStrategy.write_configuration() to use atomic operations - Implement backup creation with MCPHostConfigBackupManager - Add rollback capability on write failures - Support configurable backup skipping via no_backup parameter Backup files follow established naming: mcp.json.kiro.YYYYMMDD_HHMMSS_microseconds Stored in: ~/.hatch/mcp_host_config_backups/kiro/
1 parent 04b3733 commit f8287f1

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

hatch/mcp_host_config/backup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def validate_hostname(cls, v):
3737
"""Validate hostname is supported."""
3838
supported_hosts = {
3939
'claude-desktop', 'claude-code', 'vscode',
40-
'cursor', 'lmstudio', 'gemini'
40+
'cursor', 'lmstudio', 'gemini', 'kiro'
4141
}
4242
if v not in supported_hosts:
4343
raise ValueError(f"Unsupported hostname: {v}. Supported: {supported_hosts}")

hatch/mcp_host_config/strategies.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from .host_management import MCPHostStrategy, register_host_strategy
1616
from .models import MCPHostType, MCPServerConfig, HostConfiguration
17+
from .backup import MCPHostConfigBackupManager, AtomicFileOperations
1718

1819
logger = logging.getLogger(__name__)
1920

@@ -457,7 +458,7 @@ def read_configuration(self) -> HostConfiguration:
457458
return HostConfiguration(servers={})
458459

459460
def write_configuration(self, config: HostConfiguration, no_backup: bool = False) -> bool:
460-
"""Write configuration to Kiro."""
461+
"""Write configuration to Kiro with backup support."""
461462
config_path = self.get_config_path()
462463
if not config_path:
463464
return False
@@ -479,9 +480,17 @@ def write_configuration(self, config: HostConfiguration, no_backup: bool = False
479480

480481
existing_data[self.get_config_key()] = servers_data
481482

482-
# Write updated configuration
483-
with open(config_path, 'w', encoding='utf-8') as f:
484-
json.dump(existing_data, f, indent=2)
483+
# Use atomic write with backup support
484+
backup_manager = MCPHostConfigBackupManager()
485+
atomic_ops = AtomicFileOperations()
486+
487+
atomic_ops.atomic_write_with_backup(
488+
file_path=config_path,
489+
data=existing_data,
490+
backup_manager=backup_manager,
491+
hostname="kiro",
492+
skip_backup=no_backup
493+
)
485494

486495
return True
487496

0 commit comments

Comments
 (0)