Skip to main content
Glama

mcp-google-sheets

index.ts3.35 kB
import { httpClient, HttpMethod } from '@activepieces/pieces-common'; import { Property } from '@activepieces/pieces-framework'; export const medullarCommon = { baseUrl: 'https://api.medullar.com', authUrl: 'https://api.medullar.com/auth/v1', exploratorUrl: 'https://api.medullar.com/explorator/v1', aiUrl: 'https://api.medullar.com/ai/v1', }; export async function getUser(authentication: string) { const userResponse = await httpClient.sendRequest({ method: HttpMethod.GET, url: `${medullarCommon.authUrl}/users/me/`, headers: { Authorization: `Bearer ${authentication}`, }, }); const userData = userResponse.body; if (!userData) { throw new Error('User data not found.'); } if (!userData.company) { throw new Error('User does not belong to any company.'); } return userData; } export async function getUserSpaces(authentication: string) { const userData = await getUser(authentication); const spaceListResponse = await httpClient.sendRequest({ method: HttpMethod.GET, url: `${medullarCommon.aiUrl}/spaces/?user=${userData.uuid}&limit=1000&offset=0`, headers: { Authorization: `Bearer ${authentication}`, }, }); return spaceListResponse.body.results; } export const medullarPropsCommon = { spaceId: Property.Dropdown({ displayName: 'Space', description: 'Select an Space', required: true, refreshers: ['auth'], refreshOnSearch: false, options: async ({ auth }) => { const authentication = auth as string; if (!authentication) { return { disabled: true, placeholder: 'connect your account first', options: [], }; } const spaceListResponse = await getUserSpaces(authentication); return { disabled: false, options: spaceListResponse .flat() .map((list: { name: string; uuid: string }) => { return { label: list.name, value: list.uuid, }; }), }; }, }), chatId: Property.Dropdown({ displayName: 'Chat', description: 'Optional. Select a Chat where messages will be stored, if not selected, a default chat will be created with the name `automated`', required: false, refreshers: ['auth', 'spaceId'], refreshOnSearch: false, options: async ({ auth, spaceId }) => { const authentication = auth as string; if (!authentication) { return { disabled: true, placeholder: 'connect your account first', options: [], }; } if (!spaceId) { return { disabled: true, options: [], placeholder: 'Please select a Space first', }; } const chatListResponse = await httpClient.sendRequest({ method: HttpMethod.GET, url: `${medullarCommon.aiUrl}/chats/?space=${spaceId}&limit=1000&offset=0`, headers: { Authorization: `Bearer ${authentication}`, }, }); return { disabled: false, options: chatListResponse.body.results .flat() .map((list: { name: string; uuid: string }) => { return { label: list.name, value: list.uuid, }; }), }; }, }), };

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/activepieces/activepieces'

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