Skip to content

Commit da6a24e

Browse files
author
Lasim
committed
feat(all): add category-specific client configuration API endpoint
1 parent 21e4833 commit da6a24e

File tree

9 files changed

+928
-83
lines changed

9 files changed

+928
-83
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ VS Code → HTTPS Request → DeployStack Satellite → MCP Server Process → E
249249
- **[Done]** Develop Analytics dashboards for tool usage and performance
250250
- **[To Do]** Implement advanced policy controls (e.g., rate limiting, request validation)
251251
- **[Done]** Improve the searchable MCP Server Catalog within the cloud UI
252+
- **[Done]** AI Instructions - ready-to-copy instruction files for AI coding assistants
252253
- **[To Do]** Deeper integration with IDEs and AI agent frameworks
253254
- **[To Do]** Per-team token budgets and cost attribution
254255
- **[To Do]** AI-powered tool recommendations based on conversation context

services/backend/api-spec.json

Lines changed: 341 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5009,13 +5009,352 @@
50095009
}
50105010
}
50115011
},
5012+
"/api/me/satellite/config/{category}/{client}": {
5013+
"get": {
5014+
"summary": "Get category-specific client configuration",
5015+
"tags": [
5016+
"User Satellite Configuration"
5017+
],
5018+
"description": "Returns configuration actions filtered by category (connection, ai-instructions) for the specified MCP client.",
5019+
"parameters": [
5020+
{
5021+
"schema": {
5022+
"type": "string"
5023+
},
5024+
"in": "path",
5025+
"name": "category",
5026+
"required": true,
5027+
"description": "The configuration category (e.g., connection, ai-instructions)"
5028+
},
5029+
{
5030+
"schema": {
5031+
"type": "string",
5032+
"enum": [
5033+
"claude-desktop",
5034+
"vscode",
5035+
"claude-code",
5036+
"cursor"
5037+
]
5038+
},
5039+
"in": "path",
5040+
"name": "client",
5041+
"required": true,
5042+
"description": "The MCP client type"
5043+
}
5044+
],
5045+
"security": [
5046+
{
5047+
"cookieAuth": []
5048+
},
5049+
{
5050+
"bearerAuth": []
5051+
}
5052+
],
5053+
"responses": {
5054+
"200": {
5055+
"description": "Category-filtered client configuration",
5056+
"content": {
5057+
"application/json": {
5058+
"schema": {
5059+
"type": "array",
5060+
"description": "Category-filtered client configuration",
5061+
"items": {
5062+
"oneOf": [
5063+
{
5064+
"type": "object",
5065+
"properties": {
5066+
"type": {
5067+
"type": "string",
5068+
"enum": [
5069+
"json"
5070+
]
5071+
},
5072+
"category": {
5073+
"type": "string"
5074+
},
5075+
"mcpServers": {
5076+
"type": "object",
5077+
"additionalProperties": {
5078+
"type": "object",
5079+
"properties": {
5080+
"url": {
5081+
"type": "string"
5082+
},
5083+
"name": {
5084+
"type": "string"
5085+
},
5086+
"description": {
5087+
"type": "string"
5088+
},
5089+
"transport": {
5090+
"type": "string"
5091+
},
5092+
"type": {
5093+
"type": "string"
5094+
}
5095+
},
5096+
"additionalProperties": true
5097+
}
5098+
},
5099+
"inputs": {
5100+
"type": "array"
5101+
},
5102+
"servers": {
5103+
"type": "object"
5104+
},
5105+
"title": {
5106+
"type": "string"
5107+
},
5108+
"description": {
5109+
"type": "string"
5110+
},
5111+
"inputType": {
5112+
"type": "string",
5113+
"enum": [
5114+
"input",
5115+
"textarea"
5116+
]
5117+
}
5118+
},
5119+
"required": [
5120+
"type"
5121+
],
5122+
"additionalProperties": false
5123+
},
5124+
{
5125+
"type": "object",
5126+
"properties": {
5127+
"type": {
5128+
"type": "string",
5129+
"enum": [
5130+
"link"
5131+
]
5132+
},
5133+
"category": {
5134+
"type": "string"
5135+
},
5136+
"url": {
5137+
"type": "string",
5138+
"format": "uri"
5139+
},
5140+
"name": {
5141+
"type": "string"
5142+
},
5143+
"description": {
5144+
"type": "string"
5145+
},
5146+
"imageUrl": {
5147+
"type": "string"
5148+
},
5149+
"buttonText": {
5150+
"type": "string"
5151+
}
5152+
},
5153+
"required": [
5154+
"type",
5155+
"url"
5156+
],
5157+
"additionalProperties": false
5158+
},
5159+
{
5160+
"type": "object",
5161+
"properties": {
5162+
"type": {
5163+
"type": "string",
5164+
"enum": [
5165+
"text"
5166+
]
5167+
},
5168+
"category": {
5169+
"type": "string"
5170+
},
5171+
"content": {
5172+
"type": "string"
5173+
},
5174+
"title": {
5175+
"type": "string"
5176+
},
5177+
"description": {
5178+
"type": "string"
5179+
}
5180+
},
5181+
"required": [
5182+
"type",
5183+
"content"
5184+
],
5185+
"additionalProperties": false
5186+
},
5187+
{
5188+
"type": "object",
5189+
"properties": {
5190+
"type": {
5191+
"type": "string",
5192+
"enum": [
5193+
"command"
5194+
]
5195+
},
5196+
"category": {
5197+
"type": "string"
5198+
},
5199+
"command": {
5200+
"type": "string"
5201+
},
5202+
"title": {
5203+
"type": "string"
5204+
},
5205+
"description": {
5206+
"type": "string"
5207+
},
5208+
"inputType": {
5209+
"type": "string",
5210+
"enum": [
5211+
"input",
5212+
"textarea"
5213+
]
5214+
}
5215+
},
5216+
"required": [
5217+
"type",
5218+
"command"
5219+
],
5220+
"additionalProperties": false
5221+
},
5222+
{
5223+
"type": "object",
5224+
"properties": {
5225+
"type": {
5226+
"type": "string",
5227+
"enum": [
5228+
"steps"
5229+
]
5230+
},
5231+
"category": {
5232+
"type": "string"
5233+
},
5234+
"steps": {
5235+
"type": "array",
5236+
"items": {
5237+
"type": "object",
5238+
"properties": {
5239+
"name": {
5240+
"type": "string"
5241+
},
5242+
"required": {
5243+
"type": "boolean"
5244+
},
5245+
"content": {
5246+
"type": "string"
5247+
}
5248+
},
5249+
"required": [
5250+
"name",
5251+
"required",
5252+
"content"
5253+
],
5254+
"additionalProperties": false
5255+
}
5256+
},
5257+
"title": {
5258+
"type": "string"
5259+
},
5260+
"description": {
5261+
"type": "string"
5262+
}
5263+
},
5264+
"required": [
5265+
"type",
5266+
"steps"
5267+
],
5268+
"additionalProperties": false
5269+
}
5270+
]
5271+
}
5272+
}
5273+
}
5274+
}
5275+
},
5276+
"400": {
5277+
"description": "Bad Request - Invalid client type or category",
5278+
"content": {
5279+
"application/json": {
5280+
"schema": {
5281+
"type": "object",
5282+
"properties": {
5283+
"success": {
5284+
"type": "boolean",
5285+
"default": false
5286+
},
5287+
"error": {
5288+
"type": "string"
5289+
}
5290+
},
5291+
"required": [
5292+
"success",
5293+
"error"
5294+
],
5295+
"description": "Bad Request - Invalid client type or category"
5296+
}
5297+
}
5298+
}
5299+
},
5300+
"401": {
5301+
"description": "Unauthorized - Authentication required",
5302+
"content": {
5303+
"application/json": {
5304+
"schema": {
5305+
"type": "object",
5306+
"properties": {
5307+
"success": {
5308+
"type": "boolean",
5309+
"default": false
5310+
},
5311+
"error": {
5312+
"type": "string"
5313+
}
5314+
},
5315+
"required": [
5316+
"success",
5317+
"error"
5318+
],
5319+
"description": "Unauthorized - Authentication required"
5320+
}
5321+
}
5322+
}
5323+
},
5324+
"403": {
5325+
"description": "Forbidden - Insufficient permissions",
5326+
"content": {
5327+
"application/json": {
5328+
"schema": {
5329+
"type": "object",
5330+
"properties": {
5331+
"success": {
5332+
"type": "boolean",
5333+
"default": false
5334+
},
5335+
"error": {
5336+
"type": "string"
5337+
}
5338+
},
5339+
"required": [
5340+
"success",
5341+
"error"
5342+
],
5343+
"description": "Forbidden - Insufficient permissions"
5344+
}
5345+
}
5346+
}
5347+
}
5348+
}
5349+
}
5350+
},
50125351
"/api/me/satellite/config/{client}": {
50135352
"get": {
5014-
"summary": "Get client-specific satellite configuration",
5353+
"summary": "Get client-specific satellite configuration (all categories)",
50155354
"tags": [
50165355
"User Satellite Configuration"
50175356
],
5018-
"description": "Returns the appropriate configuration format for connecting the specified MCP client to the DeployStack Satellite service. Requires Content-Type: application/json header when sending request body.",
5357+
"description": "Returns all configuration actions for the specified MCP client. Consider using /config/:category/:client for filtered results.",
50195358
"parameters": [
50205359
{
50215360
"schema": {

0 commit comments

Comments
 (0)