Skip to content

Commit 87a2818

Browse files
committed
refactor(backend): remove deprecated Gateway CLI code after Satellite pivot
Remove all Gateway CLI remnants following strategic pivot to Satellite architecture (ADR-000): - Delete /routes/gateway/ folder and compiled artifacts - Remove gateway route registration from routes/index.ts - Remove gateway.config:read permission from role definitions - Remove deploystack-gateway-cli OAuth client reference - Remove gateway test mocks from unit tests - Remove requireOAuthScope('mcp:read') from web-only /mcp/installations/* routes (13 files) Web-only routes now use only requireTeamPermission() middleware, as OAuth scope checking was redundant for cookie-based authentication (skipped by middleware anyway per line 100-110 of oauthMiddleware.ts). OAuth scopes (mcp:read, mcp:tools:execute) remain valid and are kept in: - /routes/users/satellite/config.ts (MCP clients get satellite URLs) - /routes/users/satellite/clients.ts (MCP client registration) - authorizationService.ts (scope definitions)
1 parent f08e92a commit 87a2818

File tree

21 files changed

+51
-937
lines changed

21 files changed

+51
-937
lines changed

services/backend/api-spec.json

Lines changed: 12 additions & 217 deletions
Original file line numberDiff line numberDiff line change
@@ -23761,7 +23761,7 @@
2376123761
"tags": [
2376223762
"MCP Installations"
2376323763
],
23764-
"description": "Creates a new MCP server installation for the specified team. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
23764+
"description": "Creates a new MCP server installation for the specified team. Requires Content-Type: application/json header when sending request body.",
2376523765
"requestBody": {
2376623766
"content": {
2376723767
"application/json": {
@@ -24263,7 +24263,7 @@
2426324263
"tags": [
2426424264
"MCP Installations"
2426524265
],
24266-
"description": "Retrieves all MCP server installations for the specified team. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
24266+
"description": "Retrieves all MCP server installations for the specified team.",
2426724267
"parameters": [
2426824268
{
2426924269
"schema": {
@@ -24688,7 +24688,7 @@
2468824688
"tags": [
2468924689
"MCP Installations"
2469024690
],
24691-
"description": "Retrieves a specific MCP server installation by ID for the specified team. No Content-Type header required for this GET request. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
24691+
"description": "Retrieves a specific MCP server installation by ID for the specified team. No Content-Type header required for this GET request.",
2469224692
"parameters": [
2469324693
{
2469424694
"schema": {
@@ -25082,7 +25082,7 @@
2508225082
"tags": [
2508325083
"MCP Installations"
2508425084
],
25085-
"description": "Updates an existing MCP server installation. Can update installation name and environment variables. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
25085+
"description": "Updates an existing MCP server installation. Can update installation name and environment variables. Requires Content-Type: application/json header when sending request body.",
2508625086
"requestBody": {
2508725087
"content": {
2508825088
"application/json": {
@@ -25512,7 +25512,7 @@
2551225512
"tags": [
2551325513
"MCP Installations"
2551425514
],
25515-
"description": "Removes an MCP server installation from the specified team. No Content-Type header required for this DELETE request. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
25515+
"description": "Removes an MCP server installation from the specified team. No Content-Type header required for this DELETE request.",
2551625516
"parameters": [
2551725517
{
2551825518
"schema": {
@@ -25721,7 +25721,7 @@
2572125721
"tags": [
2572225722
"MCP Installations"
2572325723
],
25724-
"description": "Updates the environment variables for an existing MCP server installation. This endpoint specifically handles environment variable updates only. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
25724+
"description": "Updates the environment variables for an existing MCP server installation. This endpoint specifically handles environment variable updates only. Requires Content-Type: application/json header when sending request body.",
2572525725
"requestBody": {
2572625726
"content": {
2572725727
"application/json": {
@@ -26145,7 +26145,7 @@
2614526145
"tags": [
2614626146
"MCP Installations"
2614726147
],
26148-
"description": "Updates the headers for an existing MCP server installation. This endpoint specifically handles headers updates only. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
26148+
"description": "Updates the headers for an existing MCP server installation. This endpoint specifically handles headers updates only. Requires Content-Type: application/json header when sending request body.",
2614926149
"requestBody": {
2615026150
"content": {
2615126151
"application/json": {
@@ -26569,7 +26569,7 @@
2656926569
"tags": [
2657026570
"MCP Installations"
2657126571
],
26572-
"description": "Updates the URL query parameters for an existing MCP server installation. This endpoint specifically handles query parameters updates only. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
26572+
"description": "Updates the URL query parameters for an existing MCP server installation. This endpoint specifically handles query parameters updates only. Requires Content-Type: application/json header when sending request body.",
2657326573
"requestBody": {
2657426574
"content": {
2657526575
"application/json": {
@@ -26993,7 +26993,7 @@
2699326993
"tags": [
2699426994
"MCP Installations"
2699526995
],
26996-
"description": "Updates the command line arguments for an existing MCP server installation. This endpoint specifically handles args updates only. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
26996+
"description": "Updates the command line arguments for an existing MCP server installation. This endpoint specifically handles args updates only. Requires Content-Type: application/json header when sending request body.",
2699726997
"requestBody": {
2699826998
"content": {
2699926999
"application/json": {
@@ -27417,7 +27417,7 @@
2741727417
"tags": [
2741827418
"MCP Installations"
2741927419
],
27420-
"description": "Generates client-specific configuration for an MCP server installation. Supports claude-desktop, vscode, and cursor clients. No Content-Type header required for this GET request. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
27420+
"description": "Generates client-specific configuration for an MCP server installation. Supports claude-desktop, vscode, and cursor clients. No Content-Type header required for this GET request.",
2742127421
"parameters": [
2742227422
{
2742327423
"schema": {
@@ -27628,7 +27628,7 @@
2762827628
"MCP Installations",
2762927629
"OAuth"
2763027630
],
27631-
"description": "Creates a pending MCP server installation and returns OAuth authorization URL for user authentication. Requires Content-Type: application/json header when sending request body. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
27631+
"description": "Creates a pending MCP server installation and returns OAuth authorization URL for user authentication. Requires Content-Type: application/json header when sending request body.",
2763227632
"requestBody": {
2763327633
"content": {
2763427634
"application/json": {
@@ -27868,7 +27868,7 @@
2786827868
"MCP Installations",
2786927869
"OAuth"
2787027870
],
27871-
"description": "Initiates OAuth re-authorization for existing installation with expired or invalid tokens. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
27871+
"description": "Initiates OAuth re-authorization for existing installation with expired or invalid tokens.",
2787227872
"parameters": [
2787327873
{
2787427874
"schema": {
@@ -36159,211 +36159,6 @@
3615936159
}
3616036160
}
3616136161
},
36162-
"/api/gateway/me/mcp-configurations": {
36163-
"get": {
36164-
"summary": "Get merged MCP configurations for gateway",
36165-
"tags": [
36166-
"Gateway"
36167-
],
36168-
"description": "Retrieves all MCP server configurations for the authenticated user with merged template, team, and user-specific values. Supports both cookie-based authentication (for web users) and OAuth2 Bearer token authentication (for CLI users). Requires mcp:read scope for OAuth2 access.",
36169-
"security": [
36170-
{
36171-
"cookieAuth": []
36172-
},
36173-
{
36174-
"bearerAuth": []
36175-
}
36176-
],
36177-
"responses": {
36178-
"200": {
36179-
"description": "MCP configurations retrieved successfully",
36180-
"content": {
36181-
"application/json": {
36182-
"schema": {
36183-
"type": "object",
36184-
"properties": {
36185-
"success": {
36186-
"type": "boolean",
36187-
"default": true
36188-
},
36189-
"data": {
36190-
"type": "object",
36191-
"properties": {
36192-
"servers": {
36193-
"type": "array",
36194-
"items": {
36195-
"type": "object",
36196-
"properties": {
36197-
"id": {
36198-
"type": "string",
36199-
"description": "Server identifier"
36200-
},
36201-
"name": {
36202-
"type": "string",
36203-
"description": "Server name"
36204-
},
36205-
"command": {
36206-
"type": "string",
36207-
"description": "Command to execute"
36208-
},
36209-
"args": {
36210-
"type": "array",
36211-
"items": {
36212-
"type": "string"
36213-
},
36214-
"description": "Command arguments with user values merged"
36215-
},
36216-
"env": {
36217-
"type": "object",
36218-
"additionalProperties": {
36219-
"type": "string"
36220-
},
36221-
"description": "Environment variables with user values merged"
36222-
},
36223-
"status": {
36224-
"type": "string",
36225-
"enum": [
36226-
"ready",
36227-
"invalid"
36228-
],
36229-
"description": "Server configuration status"
36230-
}
36231-
},
36232-
"required": [
36233-
"id",
36234-
"name",
36235-
"command",
36236-
"args",
36237-
"env",
36238-
"status"
36239-
],
36240-
"additionalProperties": false
36241-
}
36242-
}
36243-
},
36244-
"required": [
36245-
"servers"
36246-
],
36247-
"additionalProperties": false
36248-
}
36249-
},
36250-
"required": [
36251-
"success",
36252-
"data"
36253-
],
36254-
"additionalProperties": false,
36255-
"description": "MCP configurations retrieved successfully"
36256-
}
36257-
}
36258-
}
36259-
},
36260-
"400": {
36261-
"description": "Bad Request - Invalid parameters",
36262-
"content": {
36263-
"application/json": {
36264-
"schema": {
36265-
"type": "object",
36266-
"properties": {
36267-
"success": {
36268-
"type": "boolean",
36269-
"default": false
36270-
},
36271-
"error": {
36272-
"type": "string",
36273-
"description": "Error message"
36274-
}
36275-
},
36276-
"required": [
36277-
"success",
36278-
"error"
36279-
],
36280-
"additionalProperties": false,
36281-
"description": "Bad Request - Invalid parameters"
36282-
}
36283-
}
36284-
}
36285-
},
36286-
"401": {
36287-
"description": "Unauthorized",
36288-
"content": {
36289-
"application/json": {
36290-
"schema": {
36291-
"type": "object",
36292-
"properties": {
36293-
"success": {
36294-
"type": "boolean",
36295-
"default": false
36296-
},
36297-
"error": {
36298-
"type": "string",
36299-
"description": "Error message"
36300-
}
36301-
},
36302-
"required": [
36303-
"success",
36304-
"error"
36305-
],
36306-
"additionalProperties": false,
36307-
"description": "Unauthorized"
36308-
}
36309-
}
36310-
}
36311-
},
36312-
"403": {
36313-
"description": "Forbidden",
36314-
"content": {
36315-
"application/json": {
36316-
"schema": {
36317-
"type": "object",
36318-
"properties": {
36319-
"success": {
36320-
"type": "boolean",
36321-
"default": false
36322-
},
36323-
"error": {
36324-
"type": "string",
36325-
"description": "Error message"
36326-
}
36327-
},
36328-
"required": [
36329-
"success",
36330-
"error"
36331-
],
36332-
"additionalProperties": false,
36333-
"description": "Forbidden"
36334-
}
36335-
}
36336-
}
36337-
},
36338-
"500": {
36339-
"description": "Internal Server Error",
36340-
"content": {
36341-
"application/json": {
36342-
"schema": {
36343-
"type": "object",
36344-
"properties": {
36345-
"success": {
36346-
"type": "boolean",
36347-
"default": false
36348-
},
36349-
"error": {
36350-
"type": "string",
36351-
"description": "Error message"
36352-
}
36353-
},
36354-
"required": [
36355-
"success",
36356-
"error"
36357-
],
36358-
"additionalProperties": false,
36359-
"description": "Internal Server Error"
36360-
}
36361-
}
36362-
}
36363-
}
36364-
}
36365-
}
36366-
},
3636736162
"/api/satellites/register": {
3636836163
"post": {
3636936164
"summary": "Register satellite with token",

0 commit comments

Comments
 (0)