@@ -30,6 +30,7 @@ class MCPHostType(str, Enum):
3030 GEMINI = "gemini"
3131 KIRO = "kiro"
3232 CODEX = "codex"
33+ MISTRAL_VIBE = "mistral-vibe"
3334 OPENCODE = "opencode"
3435 AUGMENT = "augment"
3536
@@ -62,6 +63,10 @@ class MCPServerConfig(BaseModel):
6263 type : Optional [Literal ["stdio" , "sse" , "http" ]] = Field (
6364 None , description = "Transport type (stdio for local, sse/http for remote)"
6465 )
66+ transport : Optional [Literal ["stdio" , "http" , "streamable-http" ]] = Field (
67+ None ,
68+ description = "Host-native transport discriminator (e.g. Mistral Vibe)" ,
69+ )
6570
6671 # stdio transport (local server)
6772 command : Optional [str ] = Field (
@@ -138,15 +143,15 @@ class MCPServerConfig(BaseModel):
138143 disabledTools : Optional [List [str ]] = Field (None , description = "Disabled tool names" )
139144
140145 # ========================================================================
141- # Codex-Specific Fields
146+ # Codex / Mistral Vibe -Specific Fields
142147 # ========================================================================
143148 env_vars : Optional [List [str ]] = Field (
144149 None , description = "Environment variables to whitelist/forward"
145150 )
146- startup_timeout_sec : Optional [int ] = Field (
151+ startup_timeout_sec : Optional [float ] = Field (
147152 None , description = "Server startup timeout in seconds"
148153 )
149- tool_timeout_sec : Optional [int ] = Field (
154+ tool_timeout_sec : Optional [float ] = Field (
150155 None , description = "Tool execution timeout in seconds"
151156 )
152157 enabled : Optional [bool ] = Field (
@@ -167,6 +172,19 @@ class MCPServerConfig(BaseModel):
167172 env_http_headers : Optional [Dict [str , str ]] = Field (
168173 None , description = "Header names to env var names"
169174 )
175+ prompt : Optional [str ] = Field (None , description = "Per-server prompt override" )
176+ sampling_enabled : Optional [bool ] = Field (
177+ None , description = "Whether sampling is enabled for tool calls"
178+ )
179+ api_key_env : Optional [str ] = Field (
180+ None , description = "Env var containing API key for remote server auth"
181+ )
182+ api_key_header : Optional [str ] = Field (
183+ None , description = "HTTP header name used for API key injection"
184+ )
185+ api_key_format : Optional [str ] = Field (
186+ None , description = "Formatting template for API key header values"
187+ )
170188
171189 # ========================================================================
172190 # OpenCode-Specific Fields
@@ -239,6 +257,8 @@ def is_stdio(self) -> bool:
239257 1. Explicit type="stdio" field takes precedence
240258 2. Otherwise, presence of 'command' field indicates stdio
241259 """
260+ if self .transport is not None :
261+ return self .transport == "stdio"
242262 if self .type is not None :
243263 return self .type == "stdio"
244264 return self .command is not None
@@ -253,6 +273,8 @@ def is_sse(self) -> bool:
253273 1. Explicit type="sse" field takes precedence
254274 2. Otherwise, presence of 'url' field indicates SSE
255275 """
276+ if self .transport is not None :
277+ return False
256278 if self .type is not None :
257279 return self .type == "sse"
258280 return self .url is not None
@@ -267,6 +289,8 @@ def is_http(self) -> bool:
267289 1. Explicit type="http" field takes precedence
268290 2. Otherwise, presence of 'httpUrl' field indicates HTTP streaming
269291 """
292+ if self .transport is not None :
293+ return self .transport in ("http" , "streamable-http" )
270294 if self .type is not None :
271295 return self .type == "http"
272296 return self .httpUrl is not None
@@ -278,8 +302,12 @@ def get_transport_type(self) -> Optional[str]:
278302 "stdio" for command-based local servers
279303 "sse" for URL-based remote servers (SSE transport)
280304 "http" for httpUrl-based remote servers (Gemini HTTP streaming)
305+ "streamable-http" for hosts that expose that transport natively
281306 None if transport cannot be determined
282307 """
308+ if self .transport is not None :
309+ return self .transport
310+
283311 # Explicit type takes precedence
284312 if self .type is not None :
285313 return self .type
@@ -367,6 +395,7 @@ def validate_host_names(cls, v):
367395 "gemini" ,
368396 "kiro" ,
369397 "codex" ,
398+ "mistral-vibe" ,
370399 "opencode" ,
371400 "augment" ,
372401 }
0 commit comments