@mseep/supabase-mcp
Version:
MCP server for Supabase CRUD operations
65 lines • 2.51 kB
JavaScript
;
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