diff --git a/packages/kilo-vscode/src/services/cli-backend/http-client.ts b/packages/kilo-vscode/src/services/cli-backend/http-client.ts index 64217b03d06..78e4b692983 100644 --- a/packages/kilo-vscode/src/services/cli-backend/http-client.ts +++ b/packages/kilo-vscode/src/services/cli-backend/http-client.ts @@ -7,6 +7,8 @@ import type { ProfileData, ProviderAuthAuthorization, ProviderListResponse, + McpStatus, + McpConfig, } from "./types" /** @@ -303,4 +305,36 @@ export class HttpClient { async oauthCallback(providerId: string, method: number, directory: string): Promise { return this.request("POST", `/provider/${providerId}/oauth/callback`, { method }, { directory }) } + + // ============================================ + // MCP Methods + // ============================================ + + /** + * Get the status of all MCP servers. + */ + async getMcpStatus(): Promise> { + return this.request>("GET", "/mcp") + } + + /** + * Add or update an MCP server configuration. + */ + async addMcpServer(name: string, config: McpConfig): Promise> { + return this.request>("POST", "/mcp", { name, config }) + } + + /** + * Connect an MCP server by name. + */ + async connectMcpServer(name: string): Promise { + return this.request("POST", `/mcp/${encodeURIComponent(name)}/connect`) + } + + /** + * Disconnect an MCP server by name. + */ + async disconnectMcpServer(name: string): Promise { + return this.request("POST", `/mcp/${encodeURIComponent(name)}/disconnect`) + } } diff --git a/packages/kilo-vscode/src/services/cli-backend/index.ts b/packages/kilo-vscode/src/services/cli-backend/index.ts index 63575cbc1ac..1489987a231 100644 --- a/packages/kilo-vscode/src/services/cli-backend/index.ts +++ b/packages/kilo-vscode/src/services/cli-backend/index.ts @@ -21,6 +21,10 @@ export type { Provider, ProviderListResponse, ModelSelection, + McpStatus, + McpLocalConfig, + McpRemoteConfig, + McpConfig, } from "./types" export { ServerManager } from "./server-manager" diff --git a/packages/kilo-vscode/src/services/cli-backend/types.ts b/packages/kilo-vscode/src/services/cli-backend/types.ts index 4489ca61000..c7d4c246a5c 100644 --- a/packages/kilo-vscode/src/services/cli-backend/types.ts +++ b/packages/kilo-vscode/src/services/cli-backend/types.ts @@ -169,3 +169,32 @@ export interface ProfileData { balance: KilocodeBalance | null currentOrgId: string | null } + +// MCP server status — discriminated union returned by the backend +export type McpStatus = + | { status: "connected" } + | { status: "disabled" } + | { status: "failed"; error: string } + | { status: "needs_auth" } + | { status: "needs_client_registration"; error: string } + +// MCP server configuration for local (stdio) servers +export interface McpLocalConfig { + type: "local" + command: string[] + environment?: Record + enabled?: boolean + timeout?: number +} + +// MCP server configuration for remote (SSE) servers +export interface McpRemoteConfig { + type: "remote" + url: string + enabled?: boolean + headers?: Record + timeout?: number +} + +// Union of all MCP server config types +export type McpConfig = McpLocalConfig | McpRemoteConfig