Skip to main content
Glama
ampcome-mcps

Edgee MCP Server

by ampcome-mcps
organization.ts11.4 kB
import { z } from 'zod'; import * as api from '../api/index.js'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; /** * Register organization-related tools with the MCP server */ export function registerOrganizationTools(server: McpServer): void { // List Organizations server.tool( 'edgee-listOrganizations', 'Returns a list of your Organizations. The Organizations are returned sorted by creation date, with the most recent Organizations appearing first.', { limit: z.number().optional(), name: z.string().optional(), start_key: z.string().optional(), order_direction: z.enum(['ASC', 'DESC']).optional(), }, async ({ limit, name, start_key, order_direction }) => { try { const data = await api.listOrganizations({ limit, name, start_key, order_direction, }); if (!data || !data.data) { return { content: [ { type: 'text', text: 'Failed to retrieve organizations.', }, ], }; } const organizations = data.data; // Format organizations const formattedOrganizations = organizations.map((organization) => [ `${organization.name || 'Unknown'}:`, `ID: ${organization.id}`, `Slug: ${organization.slug || 'Unknown'}`, `Type: ${organization.type || 'Unknown'}`, `Current billing plan: ${organization.current_billing_plan || 'Unknown'}`, `Created at: ${organization.created_at || 'Unknown'}`, `Updated at: ${organization.updated_at || 'Unknown'}`, '---', ].join('\n') ); const organizationsText = `Organizations:\n\n${formattedOrganizations.join('\n')}`; return { content: [ { type: 'text', text: organizationsText, }, ], }; } catch (error) { console.error('Error in edgee-listOrganizations:', error); return { content: [ { type: 'text', text: `Error retrieving organizations: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } ); // Get My Organization server.tool('edgee-getMyOrganization', 'Retrieve your personal organization.', {}, async () => { try { const organization = await api.getMyOrganization(); if (!organization) { return { content: [ { type: 'text', text: 'Failed to retrieve your organization.', }, ], }; } const organizationText = [ `Organization: ${organization.name || 'Unknown'}`, `ID: ${organization.id}`, `Slug: ${organization.slug || 'Unknown'}`, `Type: ${organization.type || 'Unknown'}`, `Current billing plan: ${organization.current_billing_plan || 'Unknown'}`, `Created at: ${organization.created_at || 'Unknown'}`, `Updated at: ${organization.updated_at || 'Unknown'}`, ].join('\n'); return { content: [ { type: 'text', text: organizationText, }, ], }; } catch (error) { console.error('Error in edgee-getMyOrganization:', error); return { content: [ { type: 'text', text: `Error retrieving your organization: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }); // Get Organization server.tool( 'edgee-getOrganization', 'Retrieve an Organization by ID.', { id: z.string(), }, async ({ id }) => { try { const organization = await api.getOrganization(id); if (!organization) { return { content: [ { type: 'text', text: `Failed to retrieve organization with ID: ${id}`, }, ], }; } const organizationText = [ `Organization: ${organization.name || 'Unknown'}`, `ID: ${organization.id}`, `Slug: ${organization.slug || 'Unknown'}`, `Type: ${organization.type || 'Unknown'}`, `Current billing plan: ${organization.current_billing_plan || 'Unknown'}`, `Created at: ${organization.created_at || 'Unknown'}`, `Updated at: ${organization.updated_at || 'Unknown'}`, ].join('\n'); return { content: [ { type: 'text', text: organizationText, }, ], }; } catch (error) { console.error('Error in edgee-getOrganization:', error); return { content: [ { type: 'text', text: `Error retrieving organization: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } ); // Create Organization server.tool( 'edgee-createOrganization', 'Create a new Organization.', { name: z.string(), slug: z.string(), }, async ({ name, slug }) => { try { const organization = await api.createOrganization({ name, slug, }); if (!organization) { return { content: [ { type: 'text', text: 'Failed to create organization.', }, ], }; } const organizationText = [ 'Organization created successfully:', `Name: ${organization.name || 'Unknown'}`, `ID: ${organization.id}`, `Slug: ${organization.slug || 'Unknown'}`, `Type: ${organization.type || 'Unknown'}`, `Current billing plan: ${organization.current_billing_plan || 'Unknown'}`, `Created at: ${organization.created_at || 'Unknown'}`, `Updated at: ${organization.updated_at || 'Unknown'}`, ].join('\n'); return { content: [ { type: 'text', text: organizationText, }, ], }; } catch (error) { console.error('Error in edgee-createOrganization:', error); return { content: [ { type: 'text', text: `Error creating organization: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } ); // Update Organization server.tool( 'edgee-updateOrganization', 'Update an existing Organization.', { id: z.string(), name: z.string().optional(), slug: z.string().optional(), }, async ({ id, name, slug }) => { try { const organization = await api.updateOrganization(id, { id, name, slug, }); if (!organization) { return { content: [ { type: 'text', text: `Failed to update organization with ID: ${id}`, }, ], }; } const organizationText = [ 'Organization updated successfully:', `Name: ${organization.name || 'Unknown'}`, `ID: ${organization.id}`, `Slug: ${organization.slug || 'Unknown'}`, `Type: ${organization.type || 'Unknown'}`, `Current billing plan: ${organization.current_billing_plan || 'Unknown'}`, `Created at: ${organization.created_at || 'Unknown'}`, `Updated at: ${organization.updated_at || 'Unknown'}`, ].join('\n'); return { content: [ { type: 'text', text: organizationText, }, ], }; } catch (error) { console.error('Error in edgee-updateOrganization:', error); return { content: [ { type: 'text', text: `Error updating organization: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } ); // Delete Organization server.tool( 'edgee-deleteOrganization', 'Delete an existing Organization.', { id: z.string(), }, async ({ id }) => { try { const result = await api.deleteOrganization(id); if (!result || !result.deleted) { return { content: [ { type: 'text', text: `Failed to delete organization with ID: ${id}`, }, ], }; } return { content: [ { type: 'text', text: `Organization with ID ${id} was successfully deleted.`, }, ], }; } catch (error) { console.error('Error in edgee-deleteOrganization:', error); return { content: [ { type: 'text', text: `Error deleting organization: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } ); // List Organization Users server.tool( 'edgee-listOrganizationUsers', 'List all users of an organization.', { id: z.string(), role: z.enum(['admin', 'editor', 'member']), limit: z.number().optional(), start_key: z.string().optional(), order_direction: z.enum(['ASC', 'DESC']).optional(), }, async ({ id, role, limit, start_key, order_direction }) => { try { const data = await api.listOrganizationUsers(id, { role, limit, start_key, order_direction, }); if (!data || !data.data) { return { content: [ { type: 'text', text: `Failed to retrieve users for organization with ID: ${id}`, }, ], }; } const users = data.data; // Format users const formattedUsers = users.map((user) => [ `${user.name || 'Unknown'}:`, `ID: ${user.id}`, `Email: ${user.email || 'Unknown'}`, `Role: ${user.role || 'Unknown'}`, `Created at: ${user.created_at || 'Unknown'}`, `Updated at: ${user.updated_at || 'Unknown'}`, '---', ].join('\n') ); const usersText = `Users for organization ${id}:\n\n${formattedUsers.join('\n')}`; return { content: [ { type: 'text', text: usersText, }, ], }; } catch (error) { console.error('Error in edgee-listOrganizationUsers:', error); return { content: [ { type: 'text', text: `Error retrieving organization users: ${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/ampcome-mcps/edgee-mcp'

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