UNPKG

@mseep/supabase-mcp

Version:

MCP server for Supabase CRUD operations

65 lines 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleListTables = exports.handleDatabaseOperation = void 0; const mcp_js_1 = require("../services/mcp.js"); const config_js_1 = require("../config.js"); /** * Handle MCP tool call requests for database operations */ const handleDatabaseOperation = async (req, res) => { try { // Validate API key const apiKey = req.headers['x-api-key']; if (apiKey !== config_js_1.mcpConfig.apiKey) { return res.status(401).json({ error: 'Unauthorized: Invalid API key' }); } const toolCall = { name: req.params.operation, parameters: req.body }; // Only allow database operations const allowedOperations = ['queryDatabase', 'insertData', 'updateData', 'deleteData', 'listTables']; if (!allowedOperations.includes(toolCall.name)) { return res.status(400).json({ error: `Invalid database operation: ${toolCall.name}. Allowed operations are: ${allowedOperations.join(', ')}` }); } const result = await mcp_js_1.mcpService.handleToolCall(toolCall); if (result.error) { return res.status(400).json({ error: result.error }); } return res.status(200).json({ data: result.content }); } catch (error) { console.error('Database operation error:', error); return res.status(500).json({ error: `Server error: ${error.message}` }); } }; exports.handleDatabaseOperation = handleDatabaseOperation; /** * Handle listing of database tables */ const handleListTables = async (req, res) => { try { // Validate API key const apiKey = req.headers['x-api-key']; if (apiKey !== config_js_1.mcpConfig.apiKey) { return res.status(401).json({ error: 'Unauthorized: Invalid API key' }); } const toolCall = { name: 'listTables', parameters: {} }; const result = await mcp_js_1.mcpService.handleToolCall(toolCall); if (result.error) { return res.status(400).json({ error: result.error }); } return res.status(200).json({ tables: result.content }); } catch (error) { console.error('List tables error:', error); return res.status(500).json({ error: `Server error: ${error.message}` }); } }; exports.handleListTables = handleListTables; //# sourceMappingURL=database.js.map