Skip to main content
Glama
Zain4391

Supabase Management API MCP Server

by Zain4391
gets-all-projects-for-the-given-organization.js3.34 kB
/** * Retrieves a paginated list of projects for a specified Supabase organization. * * @param {Object} args - The arguments for the request. * @param {string} args.slug - The organization slug. * @param {number} [args.offset=0] - Number of projects to skip. * @param {number} [args.limit=100] - Number of projects to return per page. * @param {string} [args.search] - Search projects by name. * @param {string} [args.sort] - Sort order for projects (e.g., "name_asc"). * @param {string} [args.statuses] - Comma-separated list of project statuses to filter by (e.g., "ACTIVE_HEALTHY,INACTIVE"). * @returns {Promise<Object>} The response containing the list of projects and pagination info, or an error object. */ const getAllProjectsForOrganization = async ({ slug, offset = 0, limit = 100, search, sort, statuses }) => { const baseUrl = 'https://api.supabase.com'; const token = process.env.SUPABASE_PUBLIC_API_API_KEY; if (!slug) { throw new Error('The "slug" parameter is required.'); } const url = new URL(`${baseUrl}/v1/organizations/${encodeURIComponent(slug)}/projects`); url.searchParams.append('offset', offset.toString()); url.searchParams.append('limit', limit.toString()); if (search !== undefined) url.searchParams.append('search', search); if (sort !== undefined) url.searchParams.append('sort', sort); if (statuses !== undefined) url.searchParams.append('statuses', statuses); const headers = { 'Accept': 'application/json', 'Authorization': `Bearer ${token}` }; try { const response = await fetch(url.toString(), { method: 'GET', headers }); if (!response.ok) { let errorText; try { errorText = await response.text(); } catch { errorText = 'Unknown error'; } throw new Error(`Request failed with status ${response.status}: ${errorText}`); } return await response.json(); } catch (error) { return { error: error instanceof Error ? error.message : String(error) }; } }; /** * Tool definition for retrieving all projects for a given organization in Supabase. */ const apiTool = { function: getAllProjectsForOrganization, definition: { type: 'function', function: { name: 'get_all_projects_for_organization', description: 'Returns a paginated list of projects for the specified Supabase organization.', parameters: { type: 'object', properties: { slug: { type: 'string', description: 'The organization slug.' }, offset: { type: 'integer', description: 'Number of projects to skip.' }, limit: { type: 'integer', description: 'Number of projects to return per page.' }, search: { type: 'string', description: 'Search projects by name.' }, sort: { type: 'string', description: 'Sort order for projects (e.g., "name_asc").' }, statuses: { type: 'string', description: 'A comma-separated list of project statuses to filter by. Supported values: "ACTIVE_HEALTHY", "INACTIVE".' } }, required: ['slug'] } } } }; export { apiTool };

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/Zain4391/Supabase_MCP'

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