Skip to main content
Glama

mcp-google-sheets

index.ts1.84 kB
import { JWT } from 'google-auth-library'; export const common = { getClient(authJson: string) { const email = common.getEmail(authJson); const privateKey = common.getPrivateKey(authJson); const gaxios = new JWT({ email, key: privateKey.replace(/\\n/g, '\n'), // remove duplicate '\' from client side scopes: ['https://www.googleapis.com/auth/pubsub'], }); return gaxios; }, getProjectId(json: string) { return JSON.parse(json).project_id; }, getPrivateKey(json: string) { return JSON.parse(json).private_key; }, getEmail(json: string) { return JSON.parse(json).client_email; }, /** * @returns options topics, topic value contain project name: projects/{pname}/topics/{tname} */ async getTopics(json: string) { const client = common.getClient(json); const topics = { disabled: true, options: [] as { label: string; value: string }[], placeholder: 'Need authentication' as string | undefined, }; try { const response = await client.request<ITopicsInfo>({ url: `https://pubsub.googleapis.com/v1/projects/${this.getProjectId( json )}/topics`, method: 'GET', }); topics.options = response.data.topics.map((topic) => { const topicName = topic.name.split('topics/')[1]; return { label: `${topicName}`, value: topic.name }; }); delete topics.placeholder; topics.disabled = false; } catch (e: any) { if ('response' in e) { topics.placeholder = `Get topics error: ${e.response.data.error}`; console.debug(e.response.data.error); } } return topics; }, }; export interface IAuth { email: string; privateKey: string; projectId: string; } export interface ITopicsInfo { topics: { name: string }[]; }

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