Skip to main content
Glama
optimization-hints.ts3.36 kB
import { Tool } from '@modelcontextprotocol/sdk/types.js'; export function createOptimizationHintsTool(): Tool { return { name: 'get_optimization_hints', description: 'Get smart suggestions for efficient tool usage based on query type', inputSchema: { type: 'object', properties: { userQuery: { type: 'string', description: 'The user\'s natural language query or intent', }, conversationContext: { type: 'string', enum: ['first_interaction', 'ongoing', 'bulk_operation'], description: 'Context of the conversation for optimization', default: 'ongoing', }, }, required: ['userQuery'], }, }; } export async function handleOptimizationHints(args: any): Promise<any> { const query = args.userQuery.toLowerCase(); const context = args.conversationContext || 'ongoing'; const hints = { recommendedTool: null as string | null, parameters: {} as any, reasoning: '', contextTips: [] as string[], }; // Analyze query intent if (query.includes('find') || query.includes('search') || query.includes('which')) { hints.recommendedTool = 'find_lights'; hints.parameters = { responseSize: 'compact' }; hints.reasoning = 'Search query detected - use find_lights with compact response'; } else if (query.includes('all lights') || query.includes('what lights')) { hints.recommendedTool = 'list_lights'; hints.parameters = { responseSize: context === 'first_interaction' ? 'standard' : 'compact', includeRoom: true, includeCapabilities: false, }; hints.reasoning = 'General listing query - use list_lights with room context'; } else if (query.includes('overview') || query.includes('summary') || query.includes('status')) { hints.recommendedTool = 'get_summary'; hints.parameters = { contextLevel: context === 'first_interaction' ? 'standard' : 'minimal', }; hints.reasoning = 'Status query - use get_summary with appropriate detail level'; } else if (query.includes('turn on') || query.includes('turn off') || query.includes('set')) { if (query.includes('room') || query.includes('kitchen') || query.includes('bedroom')) { hints.recommendedTool = 'control_room_lights'; hints.reasoning = 'Room control detected - use control_room_lights for efficiency'; } else { hints.recommendedTool = 'set_light_state'; hints.reasoning = 'Individual light control detected'; } } // Add context tips if (context === 'first_interaction') { hints.contextTips.push('First interaction - include more context for user orientation'); } else if (context === 'ongoing') { hints.contextTips.push('Ongoing conversation - use compact responses to preserve context'); } else if (context === 'bulk_operation') { hints.contextTips.push('Bulk operation - consider using room-level controls when possible'); } // Add general efficiency tips if (query.includes('all') && !query.includes('room')) { hints.contextTips.push('Consider suggesting room-based organization for better UX'); } if (query.includes('color') || query.includes('mood') || query.includes('scene')) { hints.contextTips.push('Color/mood queries may benefit from scene suggestions'); } return hints; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rmrfslashbin/hue-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server