( client: Client, defs: Array<McpToolDef>, options: ConvertOptions, )
| 111 | * plain `callTool` (see {@link requiresTaskExecution}). |
| 112 | */ |
| 113 | export function toServerTools( |
| 114 | client: Client, |
| 115 | defs: Array<McpToolDef>, |
| 116 | options: ConvertOptions, |
| 117 | ): Array<ServerTool> { |
| 118 | return defs |
| 119 | .filter((def) => !requiresTaskExecution(def)) |
| 120 | .map((def) => { |
| 121 | const name = options.prefix ? `${options.prefix}_${def.name}` : def.name |
| 122 | const tool: ServerTool = { |
| 123 | __toolSide: 'server', |
| 124 | name, |
| 125 | description: def.description ?? '', |
| 126 | inputSchema: (def.inputSchema as any) ?? { |
| 127 | type: 'object', |
| 128 | properties: {}, |
| 129 | }, |
| 130 | ...(def.outputSchema ? { outputSchema: def.outputSchema as any } : {}), |
| 131 | ...(options.lazy ? { lazy: true } : {}), |
| 132 | metadata: { |
| 133 | mcp: { |
| 134 | serverToolName: def.name, |
| 135 | serverId: options.prefix, |
| 136 | uiResourceUri: extractUiResourceUri(def), |
| 137 | }, |
| 138 | }, |
| 139 | execute: makeMcpExecute(client, def.name, Boolean(def.outputSchema)), |
| 140 | } |
| 141 | return tool |
| 142 | }) |
| 143 | } |
no test coverage detected