Skip to main content
Glama

mcp-google-sheets

client.ts3.21 kB
import { HttpMessageBody, HttpMethod, QueryParams, AuthenticationType, httpClient, } from '@activepieces/pieces-common'; import { AITableFieldType } from './constants'; function emptyValueFilter( accessor: (key: string) => any ): (key: string) => boolean { return (key: string) => { const val = accessor(key); return ( val !== null && val !== undefined && (typeof val != 'string' || val.length > 0) ); }; } export function prepareQuery(request?: Record<string, any>): QueryParams { const params: QueryParams = {}; if (!request) return params; Object.keys(request) .filter(emptyValueFilter((k) => request[k])) .forEach((k: string) => { params[k] = (request as Record<string, any>)[k].toString(); }); return params; } export class AITableClient { constructor(private apiTableUrl: string, private token: string) {} async makeRequest<T extends HttpMessageBody>( method: HttpMethod, resourceUri: string, query?: QueryParams, body: any | undefined = undefined ): Promise<T> { const baseUrl = this.apiTableUrl.replace(/\/$/, ''); const res = await httpClient.sendRequest<T>({ method: method, url: `${baseUrl}/fusion` + resourceUri, authentication: { type: AuthenticationType.BEARER_TOKEN, token: this.token, }, queryParams: query, body: body, }); return res.body; } async listSpaces() { return await this.makeRequest<{ data: { spaces: { id: string; name: string; }[]; }; }>(HttpMethod.GET, '/v1/spaces'); } async listDatasheets(space_id: string) { return await this.makeRequest<{ data: { nodes: { id: string; name: string; }[]; }; }>(HttpMethod.GET, `/v2/spaces/${space_id}/nodes`, { type: 'Datasheet' }); } async getDatasheetFields(datasheet_id: string) { return await this.makeRequest<{ data: { fields: { id: string; name: string; type: AITableFieldType; desc: string; property?: { format?: string; defaultValue?: string; options?: { name: string; id?: string; }[]; }; }[]; }; }>(HttpMethod.GET, `/v1/datasheets/${datasheet_id}/fields`); } async createRecord(datasheet_id: string, request: object) { return await this.makeRequest( HttpMethod.POST, `/v1/datasheets/${datasheet_id}/records`, undefined, request ); } async updateRecord(datasheet_id: string, request: object) { return await this.makeRequest( HttpMethod.PATCH, `/v1/datasheets/${datasheet_id}/records`, undefined, request ); } async listRecords(datasheet_id: string, query?: QueryParams) { return await this.makeRequest<{ data: { total: number; records: { recordId: string; createdAt: number; updatedAt: number; fields: Record<string, unknown>; }[]; }; }>(HttpMethod.GET, `/v1/datasheets/${datasheet_id}/records`, query); } }

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