Skip to content

Commit f8ede12

Browse files
author
LittleCoinCoin
committed
feat(mcp-host-config): add Kiro IDE support to model layer
Add MCPServerConfigKiro model with Kiro-specific fields (disabled, autoApprove, disabledTools) following established patterns. Extend MCPServerConfigOmni with Kiro fields for omni-model support. Add MCPHostType.KIRO enum value and register in HOST_MODEL_REGISTRY for automatic model dispatch. Export MCPServerConfigKiro from module __all__. This enables the model layer to support Kiro IDE configuration with proper Pydantic validation and from_omni() conversion following the established architecture.
1 parent cbc222d commit f8ede12

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

hatch/mcp_host_config/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
PackageHostConfiguration, EnvironmentPackageEntry, ConfigurationResult, SyncResult,
1212
# Host-specific configuration models
1313
MCPServerConfigBase, MCPServerConfigGemini, MCPServerConfigVSCode,
14-
MCPServerConfigCursor, MCPServerConfigClaude, MCPServerConfigOmni,
14+
MCPServerConfigCursor, MCPServerConfigClaude, MCPServerConfigKiro, MCPServerConfigOmni,
1515
HOST_MODEL_REGISTRY
1616
)
1717
from .host_management import (
@@ -30,7 +30,7 @@
3030
'PackageHostConfiguration', 'EnvironmentPackageEntry', 'ConfigurationResult', 'SyncResult',
3131
# Host-specific configuration models
3232
'MCPServerConfigBase', 'MCPServerConfigGemini', 'MCPServerConfigVSCode',
33-
'MCPServerConfigCursor', 'MCPServerConfigClaude', 'MCPServerConfigOmni',
33+
'MCPServerConfigCursor', 'MCPServerConfigClaude', 'MCPServerConfigKiro', 'MCPServerConfigOmni',
3434
'HOST_MODEL_REGISTRY',
3535
# User feedback reporting
3636
'FieldOperation', 'ConversionReport', 'generate_conversion_report', 'display_report',

hatch/mcp_host_config/models.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class MCPHostType(str, Enum):
2424
CURSOR = "cursor"
2525
LMSTUDIO = "lmstudio"
2626
GEMINI = "gemini"
27+
KIRO = "kiro"
2728

2829

2930
class MCPServerConfig(BaseModel):
@@ -192,7 +193,7 @@ def validate_host_names(cls, v):
192193
"""Validate host names are supported."""
193194
supported_hosts = {
194195
'claude-desktop', 'claude-code', 'vscode',
195-
'cursor', 'lmstudio', 'gemini'
196+
'cursor', 'lmstudio', 'gemini', 'kiro'
196197
}
197198
for host_name in v.keys():
198199
if host_name not in supported_hosts:
@@ -538,6 +539,30 @@ def from_omni(cls, omni: 'MCPServerConfigOmni') -> 'MCPServerConfigClaude':
538539
return cls.model_validate(claude_data)
539540

540541

542+
class MCPServerConfigKiro(MCPServerConfigBase):
543+
"""Kiro IDE-specific MCP server configuration.
544+
545+
Extends base model with Kiro-specific fields for server management
546+
and tool control.
547+
"""
548+
549+
# Kiro-specific fields
550+
disabled: Optional[bool] = Field(None, description="Whether server is disabled")
551+
autoApprove: Optional[List[str]] = Field(None, description="Auto-approved tool names")
552+
disabledTools: Optional[List[str]] = Field(None, description="Disabled tool names")
553+
554+
@classmethod
555+
def from_omni(cls, omni: 'MCPServerConfigOmni') -> 'MCPServerConfigKiro':
556+
"""Convert Omni model to Kiro-specific model."""
557+
# Get supported fields dynamically
558+
supported_fields = set(cls.model_fields.keys())
559+
560+
# Single-call field filtering
561+
kiro_data = omni.model_dump(include=supported_fields, exclude_unset=True)
562+
563+
return cls.model_validate(kiro_data)
564+
565+
541566
class MCPServerConfigOmni(BaseModel):
542567
"""Omni configuration supporting all host-specific fields.
543568
@@ -580,6 +605,11 @@ class MCPServerConfigOmni(BaseModel):
580605
# VS Code specific
581606
envFile: Optional[str] = None
582607
inputs: Optional[List[Dict]] = None
608+
609+
# Kiro specific
610+
disabled: Optional[bool] = None
611+
autoApprove: Optional[List[str]] = None
612+
disabledTools: Optional[List[str]] = None
583613

584614
@field_validator('url')
585615
@classmethod
@@ -599,4 +629,5 @@ def validate_url_format(cls, v):
599629
MCPHostType.VSCODE: MCPServerConfigVSCode,
600630
MCPHostType.CURSOR: MCPServerConfigCursor,
601631
MCPHostType.LMSTUDIO: MCPServerConfigCursor, # Same as CURSOR
632+
MCPHostType.KIRO: MCPServerConfigKiro,
602633
}

0 commit comments

Comments
 (0)