Skip to main content
Glama
suggestions.py3.51 kB
""" Simplified Suggestion Engine - provides next-step recommendations for MCP tools. """ from typing import Dict, List import re class SuggestionEngine: """Simple, efficient suggestion engine for tool recommendations.""" def __init__(self): # Tool progression: what to try next when current tool has no/few results self.fallbacks = { "search_docs": ["search_apple_online", "search_wwdc_notes"], "search_apple_online": ["search_wwdc_notes", "search_swift_repos"], "search_swift_evolution": ["search_swift_repos", "fetch_github_file"], "search_swift_repos": ["fetch_github_file"], "search_wwdc_notes": ["search_swift_repos"], "search_human_interface_guidelines": ["search_docs", "search_apple_online"], } # Simple keyword to tool mapping self.keywords = { "performance|optimize|fast": ["search_wwdc_notes", "search_swift_repos"], "how|implement|build": ["search_swift_repos", "search_wwdc_notes"], "why|design|rationale": ["search_swift_evolution"], "class|struct|protocol": ["fetch_apple_documentation", "search_apple_online"], "design|ui|ux|interface|button|navigation|layout|color|typography": ["search_human_interface_guidelines"], } def get_suggestions(self, context: Dict) -> List[Dict]: """ Get up to 3 relevant tool suggestions based on context. Args: context: Dict with current_tool, query, results_count Returns: List of suggestions with tool name and simple reason """ suggestions = [] current_tool = context.get("current_tool", "") query = context.get("query", "").lower() results_count = context.get("results_count", 0) # If no results, suggest fallback tools if results_count == 0 and current_tool in self.fallbacks: for tool in self.fallbacks[current_tool][:2]: suggestions.append({ "tool": tool, "reason": self._get_reason(tool) }) # Add keyword-based suggestions if not already present for pattern, tools in self.keywords.items(): if re.search(pattern, query): for tool in tools: if tool != current_tool and not any(s["tool"] == tool for s in suggestions): suggestions.append({ "tool": tool, "reason": self._get_reason(tool) }) if len(suggestions) >= 3: return suggestions[:3] return suggestions[:3] def _get_reason(self, tool: str) -> str: """Simple one-line reasons for each tool.""" reasons = { "search_apple_online": "Search Apple's online documentation", "search_wwdc_notes": "Check WWDC sessions for detailed explanations", "search_swift_repos": "Find implementation examples", "fetch_github_file": "Fetch specific source files", "search_swift_evolution": "Understand feature design rationale", "fetch_apple_documentation": "Get detailed API documentation", "search_human_interface_guidelines": "Find design patterns and UI best practices", } return reasons.get(tool, f"Try {tool}") # Global instance suggestion_engine = SuggestionEngine()

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/Ahrentlov/appledeepdoc-mcp'

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