Prompt file imported from pfangueiro/windsurf-project-template (
.windsurf/workflows/smart-mcp-integration.md). Copyright stays with the author.
Smart MCP Integration Workflow
This workflow defines how to intelligently select and use Model Context Protocol (MCP) servers based on task requirements rather than explicit server selection.
flowchart TD
Start[Start] --> analyzeTaskIntent[analyzeTaskIntent]
analyzeTaskIntent --> identifyRequiredCapabilities[identifyRequiredCapabilities]
identifyRequiredCapabilities --> selectOptimalServer[selectOptimalServer]
selectOptimalServer --> executeOperation[executeOperation]
executeOperation --> evaluateSuccess{evaluateSuccess}
evaluateSuccess -->|Success| recordPattern[recordPattern]
evaluateSuccess -->|Failure| analyzeFailure[analyzeFailure]
analyzeFailure --> adjustParameters[adjustParameters]
adjustParameters --> retryOperation[retryOperation]
retryOperation --> checkRetrySuccess{checkRetrySuccess}
checkRetrySuccess -->|Success| recordPattern
checkRetrySuccess -->|Failure| escalateToUser[escalateToUser]
recordPattern --> updateMemoryBank[updateMemoryBank]
Steps
-
Analyze Task Intent: Determine the core purpose of the user's request
function analyzeTaskIntent(userRequest) { // Extract intent using natural language understanding return { primaryIntent, secondaryIntents }; } -
Identify Required Capabilities: Map intent to necessary capabilities
function identifyRequiredCapabilities(intent) { const capabilityMap = { 'code_creation': ['code_generation', 'documentation'], 'version_control': ['repository_management', 'code_review'], 'web_interaction': ['navigation', 'content_extraction'], 'database': ['query_execution', 'schema_management'] }; return capabilityMap[intent.primary] || []; } -
Select Optimal Server: Choose the best MCP server based on capabilities
function selectOptimalServer(capabilities, history) { // Score each server based on capabilities and past performance return bestMatchingServer; } -
Execute Operation: Perform the action using the selected server
function executeOperation(server, parameters) { return server.execute(parameters); } -
Evaluate Success: Determine if the operation was successful
function evaluateSuccess(result) { return result.status === 'success'; } -
Record Pattern: Document successful approach in memory
function recordPattern(task, server, result) { memory.savePattern({ task: task.type, server: server.id, success: true, performance: result.metrics }); } -
Update Memory Bank: Ensure memory system reflects latest learnings
function updateMemoryBank(patterns) { // Update activeContext.md with new MCP integration patterns }
Benefits
- Context Preservation: Maintains task context across different MCP servers
- Adaptability: System improves server selection based on past performance
- Transparency: Documents why specific MCP servers were chosen for tasks
- Efficiency: Reduces the need for user specification of servers