Skip to main content
Glama

give_feedback_to_desktop_commander

Open feedback form to share your experience with Desktop Commander, including usage patterns, technical comfort level, and improvement suggestions.

Instructions

Open feedback form in browser to provide feedback about Desktop Commander. IMPORTANT: This tool simply opens the feedback form - no pre-filling available. The user will fill out the form manually in their browser. WORKFLOW: 1. When user agrees to give feedback, just call this tool immediately 2. No need to ask questions or collect information 3. Tool opens form with only usage statistics pre-filled automatically: - tool_call_count: Number of commands they've made - days_using: How many days they've used Desktop Commander - platform: Their operating system (Mac/Windows/Linux) - client_id: Analytics identifier All survey questions will be answered directly in the form: - Job title and technical comfort level - Company URL for industry context - Other AI tools they use - Desktop Commander's biggest advantage - How they typically use it - Recommendation likelihood (0-10) - User study participation interest - Email and any additional feedback EXAMPLE INTERACTION: User: "sure, I'll give feedback" Claude: "Perfect! Let me open the feedback form for you." [calls tool immediately] No parameters are needed - just call the tool to open the form. This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Main handler function that opens the feedback form in the browser, captures usage stats, builds a pre-filled Tally.so URL, and handles success/error cases.
    export async function giveFeedbackToDesktopCommander(params: FeedbackParams = {}): Promise<ServerResult> { try { // Get usage stats for context const stats = await usageTracker.getStats(); // Capture feedback tool usage event await capture('feedback_tool_called', { total_calls: stats.totalToolCalls, successful_calls: stats.successfulCalls, failed_calls: stats.failedCalls, days_since_first_use: Math.floor((Date.now() - stats.firstUsed) / (1000 * 60 * 60 * 24)), total_sessions: stats.totalSessions, platform: os.platform(), }); // Build Tally.so URL with pre-filled parameters const tallyUrl = await buildTallyUrl(params, stats); // Open URL in default browser const success = await openUrlInBrowser(tallyUrl); if (success) { // Capture successful browser opening await capture('feedback_form_opened_successfully', { total_calls: stats.totalToolCalls, platform: os.platform() }); // Mark that user has given feedback (or at least opened the form) await usageTracker.markFeedbackGiven(); return { content: [{ type: "text", text: `🎉 **Feedback form opened in your browser!**\n\n` + `Thank you for taking the time to share your experience with Desktop Commander. ` + `Your feedback helps us build better features and improve the tool for everyone.\n\n` + `The form has been pre-filled with the information you provided. ` + `You can modify or add any additional details before submitting.\n\n` + `**Form URL**: ${tallyUrl.length > 100 ? tallyUrl.substring(0, 100) + '...' : tallyUrl}` }] }; } else { // Capture browser opening failure await capture('feedback_form_open_failed', { total_calls: stats.totalToolCalls, platform: os.platform(), error_type: 'browser_open_failed' }); return { content: [{ type: "text", text: `⚠️ **Couldn't open browser automatically**\n\n` + `Please copy and paste this URL into your browser to access the feedback form:\n\n` + `${tallyUrl}\n\n` + `The form has been pre-filled with your information. Thank you for your feedback!` }] }; } } catch (error) { // Capture error event await capture('feedback_tool_error', { error_message: error instanceof Error ? error.message : String(error), error_type: error instanceof Error ? error.constructor.name : 'unknown' }); return { content: [{ type: "text", text: `❌ **Error opening feedback form**: ${error instanceof Error ? error.message : String(error)}\n\n` + `You can still access our feedback form directly at: https://tally.so/r/mKqoKg\n\n` + `We appreciate your willingness to provide feedback!` }], isError: true }; } }
  • Zod schema for the tool input parameters (empty object since no user params are needed).
    export const GiveFeedbackArgsSchema = z.object({ // No parameters needed - form will be filled manually by user // Only auto-filled hidden fields remain: // - tool_call_count (auto) // - days_using (auto) // - platform (auto) // - client_id (auto) });
  • src/server.ts:969-1004 (registration)
    Tool registration in listTools handler: defines name, description, and inputSchema. Conditionally filtered out for 'desktop-commander' client.
    name: "give_feedback_to_desktop_commander", description: ` Open feedback form in browser to provide feedback about Desktop Commander. IMPORTANT: This tool simply opens the feedback form - no pre-filling available. The user will fill out the form manually in their browser. WORKFLOW: 1. When user agrees to give feedback, just call this tool immediately 2. No need to ask questions or collect information 3. Tool opens form with only usage statistics pre-filled automatically: - tool_call_count: Number of commands they've made - days_using: How many days they've used Desktop Commander - platform: Their operating system (Mac/Windows/Linux) - client_id: Analytics identifier All survey questions will be answered directly in the form: - Job title and technical comfort level - Company URL for industry context - Other AI tools they use - Desktop Commander's biggest advantage - How they typically use it - Recommendation likelihood (0-10) - User study participation interest - Email and any additional feedback EXAMPLE INTERACTION: User: "sure, I'll give feedback" Claude: "Perfect! Let me open the feedback form for you." [calls tool immediately] No parameters are needed - just call the tool to open the form. ${CMD_PREFIX_DESCRIPTION}`, inputSchema: zodToJsonSchema(GiveFeedbackArgsSchema), },
  • Execution handler in CallToolRequest switch statement: calls the giveFeedbackToDesktopCommander function.
    case "give_feedback_to_desktop_commander": try { result = await giveFeedbackToDesktopCommander(args); } catch (error) { capture('server_request_error', { message: `Error in give_feedback_to_desktop_commander handler: ${error}` }); result = { content: [{ type: "text", text: `Error: Failed to open feedback form` }], isError: true, }; }
  • Helper function to build the pre-filled Tally.so feedback URL with usage stats and platform info.
    async function buildTallyUrl(params: FeedbackParams, stats: any): Promise<string> { const baseUrl = 'https://tally.so/r/mKqoKg'; const urlParams = new URLSearchParams(); // Only auto-filled hidden fields remain urlParams.set('tool_call_count', stats.totalToolCalls.toString()); // Calculate days using const daysUsing = Math.floor((Date.now() - stats.firstUsed) / (1000 * 60 * 60 * 24)); urlParams.set('days_using', daysUsing.toString()); // Add platform info urlParams.set('platform', os.platform()); // Add client_id from analytics config try { const clientId = await configManager.getValue('clientId') || 'unknown'; urlParams.set('client_id', clientId); } catch (error) { // Fallback if config read fails urlParams.set('client_id', 'unknown'); } return `${baseUrl}?${urlParams.toString()}`; }

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/wonderwhy-er/ClaudeComputerCommander'

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