From 21dc3c24d9243d81fdc1c3b23aa1f160df213a50 Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Sun, 4 Jan 2026 16:12:54 +0100 Subject: feat: mcp resources (#6542) --- packages/sdk/js/src/v2/gen/sdk.gen.ts | 28 +++++++++++++++++++++++ packages/sdk/js/src/v2/gen/types.gen.ts | 38 ++++++++++++++++++++++++++++++- packages/sdk/openapi.json | 40 ++++++++++++++++++++++++++++++++- 3 files changed, 104 insertions(+), 2 deletions(-) (limited to 'packages/sdk') diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts index 01de8c183..81d50b28e 100644 --- a/packages/sdk/js/src/v2/gen/sdk.gen.ts +++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts @@ -21,6 +21,7 @@ import type { EventTuiPromptAppend, EventTuiSessionSelect, EventTuiToastShow, + ExperimentalResourceListResponses, FileListResponses, FilePartInput, FileReadResponses, @@ -2431,6 +2432,31 @@ export class Mcp extends HeyApiClient { auth = new Auth({ client: this.client }) } +export class Resource extends HeyApiClient { + /** + * Get MCP resources + * + * Get all available MCP resources from connected servers. Optionally filter by name. + */ + public list( + parameters?: { + directory?: string + }, + options?: Options, + ) { + const params = buildClientParams([parameters], [{ args: [{ in: "query", key: "directory" }] }]) + return (options?.client ?? this.client).get({ + url: "/experimental/resource", + ...options, + ...params, + }) + } +} + +export class Experimental extends HeyApiClient { + resource = new Resource({ client: this.client }) +} + export class Lsp extends HeyApiClient { /** * Get LSP status @@ -2873,6 +2899,8 @@ export class OpencodeClient extends HeyApiClient { mcp = new Mcp({ client: this.client }) + experimental = new Experimental({ client: this.client }) + lsp = new Lsp({ client: this.client }) formatter = new Formatter({ client: this.client }) diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index e42d2ed22..5ca8fa8f6 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -252,7 +252,14 @@ export type SymbolSource = { kind: number } -export type FilePartSource = FileSource | SymbolSource +export type ResourceSource = { + text: FilePartSourceText + type: "resource" + clientName: string + uri: string +} + +export type FilePartSource = FileSource | SymbolSource | ResourceSource export type FilePart = { id: string @@ -1953,6 +1960,14 @@ export type McpStatus = | McpStatusNeedsAuth | McpStatusNeedsClientRegistration +export type McpResource = { + name: string + uri: string + description?: string + mimeType?: string + client: string +} + export type LspStatus = { id: string name: string @@ -4155,6 +4170,27 @@ export type McpDisconnectResponses = { export type McpDisconnectResponse = McpDisconnectResponses[keyof McpDisconnectResponses] +export type ExperimentalResourceListData = { + body?: never + path?: never + query?: { + directory?: string + } + url: "/experimental/resource" +} + +export type ExperimentalResourceListResponses = { + /** + * MCP resources + */ + 200: { + [key: string]: McpResource + } +} + +export type ExperimentalResourceListResponse = + ExperimentalResourceListResponses[keyof ExperimentalResourceListResponses] + export type LspStatusData = { body?: never path?: never diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index bcfc98e11..596c1bd28 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -4541,6 +4541,44 @@ ] } }, + "/mcp/resources": { + "get": { + "operationId": "mcp.resources", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get MCP resources", + "description": "Get all available MCP resources from connected servers.", + "responses": { + "200": { + "description": "MCP resources", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + } + } + } + }, + "x-codeSamples": [ + { + "lang": "js", + "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.mcp.resources({\n ...\n})" + } + ] + } + }, "/lsp": { "get": { "operationId": "lsp.status", @@ -9842,7 +9880,7 @@ "maximum": 9007199254740991 } }, - "required": ["name", "mode", "permission", "options"] + "required": ["name", "mode", "builtIn", "permission", "options"] }, "MCPStatusConnected": { "type": "object", -- cgit v1.2.3