Skip to content

Commit f0bdd44

Browse files
committed
fix: deploy managed MCP on connect/disconnect instead
Signed-off-by: Jan Pokorný <[email protected]>
1 parent 1592599 commit f0bdd44

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

apps/agentstack-server/src/agentstack_server/service_layer/services/connector.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@ async def create_connector(
8181
auth=Authorization(client_id=client_id, client_secret=client_secret) if client_id else None,
8282
metadata=metadata,
8383
)
84-
if preset and preset.url.scheme == "mcp+stdio":
85-
await self._managed_mcp.deploy(connector=connector)
8684
async with self._uow() as uow:
8785
await uow.connectors.create(connector=connector)
8886
await uow.commit()
@@ -97,9 +95,6 @@ async def delete_connector(self, *, connector_id: UUID, user: User | None = None
9795
connector = await uow.connectors.get(connector_id=connector_id, user_id=user.id if user else None)
9896
await self._external_mcp.revoke_token(connector=connector)
9997

100-
if self._managed_mcp.is_managed(connector=connector):
101-
await self._managed_mcp.undeploy(connector=connector)
102-
10398
await uow.connectors.delete(connector_id=connector_id, user_id=user.id if user else None)
10499
await uow.commit()
105100

@@ -113,6 +108,9 @@ async def connect_connector(
113108
async with self._uow() as uow:
114109
connector = await uow.connectors.get(connector_id=connector_id, user_id=user.id if user else None)
115110

111+
if self._managed_mcp.is_managed(connector=connector):
112+
await self._managed_mcp.deploy(connector=connector)
113+
116114
try:
117115
await self.probe_connector(connector=connector)
118116
connector.state = ConnectorState.connected
@@ -161,17 +159,17 @@ async def disconnect_connector(self, *, connector_id: UUID, user: User | None =
161159

162160
await self._external_mcp.revoke_token(connector=connector)
163161

162+
if connector.auth:
163+
connector.auth.flow = None
164+
connector.state = ConnectorState.disconnected
165+
connector.disconnect_reason = "Client request"
166+
164167
if self._managed_mcp.is_managed(connector=connector):
165168
try:
166169
await self._managed_mcp.undeploy(connector=connector)
167170
except Exception:
168171
logger.warning("Failed to delete managed MCP server deployment during disconnect", exc_info=True)
169172

170-
if connector.auth:
171-
connector.auth.flow = None
172-
connector.state = ConnectorState.disconnected
173-
connector.disconnect_reason = "Client request"
174-
175173
async with self._uow() as uow:
176174
await uow.connectors.update(connector=connector)
177175
await uow.commit()

apps/agentstack-server/tests/e2e/routes/test_connectors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ async def test_stdio_connector_happy_path(test_configuration):
5656
logger.info("Connector created: connector_id=%s state=%s", connector_id, connector_data["state"])
5757

5858
assert connector_data["url"] == "mcp+stdio://test"
59-
assert connector_data["state"] in ["created", "connected"]
59+
assert connector_data["state"] == "created"
6060
assert connector_data["metadata"]["name"] == "Test MCP Server"
6161

6262
logger.info("Connecting to connector: connector_id=%s", connector_id)

0 commit comments

Comments
 (0)