MCPcopy Create free account
hub / github.com/freecodexyz/free-code / transformResultContent

Function transformResultContent

src/services/mcp/client.ts:2480–2593  ·  view source on GitHub ↗
(
  resultContent: PromptMessage['content'],
  serverName: string,
)

Source from the content-addressed store, hash-verified

2478 * Transform result content from an MCP tool or MCP prompt into message blocks
2479 */
2480export async function transformResultContent(
2481 resultContent: PromptMessage['content'],
2482 serverName: string,
2483): Promise<Array<ContentBlockParam>> {
2484 switch (resultContent.type) {
2485 case 'text':
2486 return [
2487 {
2488 type: 'text',
2489 text: resultContent.text,
2490 },
2491 ]
2492 case 'audio': {
2493 const audioData = resultContent as {
2494 type: 'audio'
2495 data: string
2496 mimeType?: string
2497 }
2498 return await persistBlobToTextBlock(
2499 Buffer.from(audioData.data, 'base64'),
2500 audioData.mimeType,
2501 serverName,
2502 `[Audio from ${serverName}] `,
2503 )
2504 }
2505 case 'image': {
2506 // Resize and compress image data, enforcing API dimension limits
2507 const imageBuffer = Buffer.from(String(resultContent.data), 'base64')
2508 const ext = resultContent.mimeType?.split('/')[1] || 'png'
2509 const resized = await maybeResizeAndDownsampleImageBuffer(
2510 imageBuffer,
2511 imageBuffer.length,
2512 ext,
2513 )
2514 return [
2515 {
2516 type: 'image',
2517 source: {
2518 data: resized.buffer.toString('base64'),
2519 media_type:
2520 `image/${resized.mediaType}` as Base64ImageSource['media_type'],
2521 type: 'base64',
2522 },
2523 },
2524 ]
2525 }
2526 case 'resource': {
2527 const resource = resultContent.resource
2528 const prefix = `[Resource from ${serverName} at ${resource.uri}] `
2529
2530 if ('text' in resource) {
2531 return [
2532 {
2533 type: 'text',
2534 text: `${prefix}${resource.text}`,
2535 },
2536 ]
2537 } else if ('blob' in resource) {

Callers 2

getPromptForCommandFunction · 0.85
transformMCPResultFunction · 0.85

Calls 4

persistBlobToTextBlockFunction · 0.85
toStringMethod · 0.65
hasMethod · 0.45

Tested by

no test coverage detected