Skip to main content
Glama
approve-mcp-request.ts3.08 kB
import { ApprovalService } from '../services/approval.js'; export function approveMCPRequestTool( approvalService: ApprovalService, args: Record<string, unknown> ) { const { approval_id, decision, reason } = args as { approval_id?: string; decision?: string; reason?: string; }; if (!approval_id || !decision) { return { content: [ { type: 'text', text: '❌ Missing required parameters: approval_id and decision are required', }, ], isError: true, }; } if (!['approve', 'deny'].includes(decision)) { return { content: [ { type: 'text', text: '❌ Decision must be either "approve" or "deny"', }, ], isError: true, }; } try { // Get the request details before processing const request = approvalService.getApprovalRequest(approval_id); if (!request) { return { content: [ { type: 'text', text: `❌ Approval request ${approval_id} not found`, }, ], isError: true, }; } if (request.status !== 'pending') { return { content: [ { type: 'text', text: `❌ Request ${approval_id} is not pending (status: ${request.status})`, }, ], isError: true, }; } let success = false; let message = ''; if (decision === 'approve') { success = approvalService.approveRequest(approval_id); if (success) { message = `✅ Approved: ${request.duckName} can now call ${request.mcpServer}:${request.toolName}`; } else { message = `❌ Failed to approve request ${approval_id}`; } } else { success = approvalService.denyRequest(approval_id, reason); if (success) { message = `❌ Denied: ${request.duckName} cannot call ${request.mcpServer}:${request.toolName}`; if (reason) { message += `\nReason: ${reason}`; } } else { message = `❌ Failed to deny request ${approval_id}`; } } // Add request details for context const detailsLines = [ message, '', '📋 **Request Details:**', `- Duck: ${request.duckName}`, `- MCP Server: ${request.mcpServer}`, `- Tool: ${request.toolName}`, `- Arguments: \`${JSON.stringify(request.arguments)}\``, `- Request ID: \`${request.id}\``, ]; // Add next steps if (decision === 'approve') { detailsLines.push(''); detailsLines.push('💡 The duck can now retry their request with the approval.'); } return { content: [ { type: 'text', text: detailsLines.join('\n'), }, ], isError: !success, }; } catch (error: unknown) { return { content: [ { type: 'text', text: `❌ Error processing approval: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }

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/nesquikm/mcp-rubber-duck'

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