fix: preserve mcp source compatibility

This commit is contained in:
lda
2026-06-07 14:07:22 +07:00 Verified
parent 195a967527
commit ac2163bf30
8 changed files with 323 additions and 17 deletions
+20 -3
View File
@@ -39,7 +39,7 @@ class McpSourceConnection:
id: str
provider: str
account: str
transport: SourceTransport
transport: SourceTransport | None = None
enabled: bool = True
profile: str | None = None
auth_ref: str | None = None
@@ -56,6 +56,16 @@ class McpSourceConnection:
"MCP source connection id must match provider/account fields"
)
@property
def server(self) -> str:
"""Compatibility alias for older adapter code.
`provider` is the source-provider term. The old broker DTO called the
same field `server`, and several fake/custom adapters still read it.
"""
return self.provider
def mcp_source_connection_from_registry_entry(
entry: McpSourceRegistryEntry,
@@ -103,7 +113,9 @@ def mcp_source_connection_from_connection_config(
)
def _transport_from_connection_metadata(connection: ConnectionConfig) -> SourceTransport:
def _transport_from_connection_metadata(
connection: ConnectionConfig,
) -> SourceTransport | None:
transport = connection.metadata.get("transport")
if isinstance(transport, dict):
kind = transport.get("kind")
@@ -123,6 +135,11 @@ def _transport_from_connection_metadata(connection: ConnectionConfig) -> SourceT
str(key): str(value)
for key, value in dict(connection.metadata.get("env", {})).items()
},
cwd=(
str(connection.metadata["cwd"])
if connection.metadata.get("cwd") is not None
else None
),
)
if transport in _FLAT_HTTP_TRANSPORTS:
url = connection.metadata.get("url", "")
@@ -138,7 +155,7 @@ def _transport_from_connection_metadata(connection: ConnectionConfig) -> SourceT
raise ValueError(
f"connection {connection.id!r} has unrecognized metadata.transport {transport!r}"
)
raise ValueError(f"connection {connection.id!r} requires metadata.transport")
return None
__all__ = [
+1
View File
@@ -147,6 +147,7 @@ def connection_config_to_registry_entry(
"command": connection.metadata.get("command", ""),
"args": list(connection.metadata.get("args", [])),
"env": dict(connection.metadata.get("env", {})),
"cwd": connection.metadata.get("cwd"),
}
elif transport in _FLAT_HTTP_TRANSPORTS:
legacy_transport_value = transport
+1
View File
@@ -12,6 +12,7 @@ class StdioSourceTransport(SourceRegistryBaseModel):
command: str = Field(min_length=1)
args: tuple[str, ...] = ()
env: dict[str, str] = Field(default_factory=dict)
cwd: str | None = None
class HttpSourceTransport(SourceRegistryBaseModel):