Buckets:
| import { Client } from '@modelcontextprotocol/sdk/client/index.js'; | |
| import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; | |
| import { | |
| LoggingMessageNotificationSchema, | |
| ResourceListChangedNotificationSchema, | |
| ToolListChangedNotificationSchema, | |
| } from '@modelcontextprotocol/sdk/types.js'; | |
| const client = new Client( | |
| { | |
| name: 'hf-mcp-server-test-client', | |
| version: '0.0.1', | |
| }, | |
| { | |
| capabilities: {}, | |
| } | |
| ); | |
| // Track notification counts | |
| let notificationCount = 0; | |
| const notificationCounts = { | |
| logging: 0, | |
| progress: 0, | |
| resourceListChanged: 0, | |
| toolListChanged: 0, | |
| }; | |
| // Set up notification handlers for different notification types | |
| client.setNotificationHandler(LoggingMessageNotificationSchema, (notification) => { | |
| notificationCount++; | |
| notificationCounts.logging++; | |
| console.log('[NOTIFICATION - Logging]', { | |
| level: notification.params.level, | |
| data: notification.params.data, | |
| logger: notification.params.logger, | |
| timestamp: new Date().toISOString(), | |
| }); | |
| }); | |
| async function testGradioTool() { | |
| try { | |
| const transport = new StreamableHTTPClientTransport(new URL('http://localhost:3000/mcp')); | |
| await client.connect(transport); | |
| console.log('[CLIENT] Connected to MCP server at http://localhost:3000'); | |
| console.log('[CLIENT] Calling tool: gr1_evalstate_flux1_schnell'); | |
| console.log("[CLIENT] Arguments: { prompt: 'kittens in space' }"); | |
| const result = await client.callTool( | |
| { | |
| name: 'gr1_evalstate_flux1_schnell', | |
| arguments: { | |
| prompt: 'kittens in space', | |
| }, | |
| }, | |
| undefined, | |
| { | |
| onprogress: (progress) => { | |
| notificationCount++; | |
| notificationCounts.progress++; | |
| console.log('[PROGRESS]', { | |
| progress: progress.progress, | |
| total: progress.total, | |
| message: progress.message || 'Processing...', | |
| timestamp: new Date().toISOString(), | |
| }); | |
| }, | |
| } | |
| ); | |
| console.log('[CLIENT] Tool result:', JSON.stringify(result, null, 2)); | |
| // Wait a bit for any trailing notifications | |
| await new Promise((resolve) => setTimeout(resolve, 2000)); | |
| // Display notification counts | |
| console.log('\n[NOTIFICATION SUMMARY]'); | |
| console.log('─'.repeat(40)); | |
| console.log(`Total notifications received: ${notificationCount}`); | |
| console.log('Breakdown by type:'); | |
| console.log(` - Logging: ${notificationCounts.logging}`); | |
| console.log(` - Progress: ${notificationCounts.progress}`); | |
| console.log(` - Resource List Changed: ${notificationCounts.resourceListChanged}`); | |
| console.log(` - Tool List Changed: ${notificationCounts.toolListChanged}`); | |
| console.log('─'.repeat(40)); | |
| console.log('\n[CLIENT] Test completed successfully'); | |
| process.exit(0); | |
| } catch (error) { | |
| console.error('[CLIENT] Error calling tool:', error); | |
| process.exit(1); | |
| } | |
| } | |
| // Run the test | |
| testGradioTool(); | |
Xet Storage Details
- Size:
- 2.82 kB
- Xet hash:
- cb9a2ff999acd88bab769e7d958c7a39a54f09faa1eebe03c02fe273ded374de
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.