* 读取资源
(client: MCPClient, sessionId: string)
| 464 | * 读取资源 |
| 465 | */ |
| 466 | async function readResource(client: MCPClient, sessionId: string): Promise<void> { |
| 467 | try { |
| 468 | const resources = await client.listResources(sessionId); |
| 469 | |
| 470 | if (resources.length === 0) { |
| 471 | console.log(chalk.yellow('📭 没有可用的资源')); |
| 472 | return; |
| 473 | } |
| 474 | |
| 475 | const { selectedResource } = await inquirer.prompt([ |
| 476 | { |
| 477 | type: 'list', |
| 478 | name: 'selectedResource', |
| 479 | message: '选择要读取的资源:', |
| 480 | choices: resources.map(resource => ({ |
| 481 | name: `${resource.name} (${resource.uri})`, |
| 482 | value: resource.uri, |
| 483 | })), |
| 484 | }, |
| 485 | ]); |
| 486 | |
| 487 | const content = await client.readResource(sessionId, selectedResource); |
| 488 | |
| 489 | console.log(chalk.blue(`📖 资源内容 (${content.mimeType}):`)); |
| 490 | console.log(''); |
| 491 | console.log(content.text || content.blob || '[二进制内容]'); |
| 492 | } catch (error) { |
| 493 | console.error(chalk.red('❌ 读取资源失败:'), error instanceof Error ? error.message : error); |
| 494 | } |
| 495 | } |
| 496 | |
| 497 | /** |
| 498 | * 列出工具 |
no test coverage detected