Skip to content

Commit fef9909

Browse files
committed
feat: support stdio mcp (initial messy version)
Signed-off-by: Jan Pokorný <[email protected]>
1 parent d1fe85c commit fef9909

File tree

9 files changed

+602
-19
lines changed

9 files changed

+602
-19
lines changed

apps/agentstack-server/Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
FROM python:3.13-alpine3.22 AS builder
1+
FROM python:3.13-alpine3.22
22
ENV UV_COMPILE_BYTECODE=1 \
33
HOME="/tmp" \
44
AGENT_REGISTRY__LOCATIONS__FILE="file:///app/registry.yaml"
5+
RUN apk add --no-cache kubectl nodejs npm \
6+
&& npm install -g supergateway
57
RUN --mount=type=cache,target=/tmp/.cache/uv \
68
--mount=type=bind,source=dist/requirements.txt,target=/requirements.txt \
79
--mount=type=bind,from=ghcr.io/astral-sh/uv:0.9.5,source=/uv,target=/bin/uv \

apps/agentstack-server/src/agentstack_server/api/routes/connectors.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ async def connect_connector(
9090
request: Request,
9191
user: Annotated[AuthorizedUser, Depends(RequiresPermissions(connectors={"write"}))],
9292
) -> ConnectorResponse:
93+
logger.error("[ROUTE] connect_connector called: connector_id=%s", connector_id)
9394
return _to_response(
9495
await connector_service.connect_connector(
9596
connector_id=connector_id,

apps/agentstack-server/src/agentstack_server/api/schema/connector.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ConnectorCreateRequest(BaseModel):
1919
metadata: Metadata | None = None
2020

2121
match_preset: bool = True
22+
bearer_token: str | None = None
2223

2324

2425
class AuthorizationCodeRequest(BaseModel):

apps/agentstack-server/src/agentstack_server/configuration.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,15 +219,30 @@ class ManagedProviderConfiguration(BaseModel):
219219
)
220220

221221

222+
class ConnectorStdioPreset(BaseModel):
223+
image: str
224+
command: list[str] | None = None
225+
args: list[str] | None = None
226+
env: dict[str, str] = Field(default_factory=dict)
227+
228+
222229
class ConnectorPreset(BaseModel):
223230
url: AnyUrl
224231
client_id: str | None = None
225232
client_secret: str | None = None
226233
metadata: dict[str, str] | None = None
234+
stdio: ConnectorStdioPreset | None = None
235+
236+
237+
class ConnectorRuntimeConfiguration(BaseModel):
238+
kubeconfig: Path | None = None
239+
namespace: str | None = None
240+
startup_timeout_seconds: int = 60
227241

228242

229243
class ConnectorConfiguration(BaseModel):
230244
presets: list[ConnectorPreset] = Field(default_factory=list)
245+
runtime: ConnectorRuntimeConfiguration = Field(default_factory=ConnectorRuntimeConfiguration)
231246

232247

233248
class DoclingExtractionConfiguration(BaseModel):

0 commit comments

Comments
 (0)