UNPKG

@bdmarvin/mcp-server-gbp

Version:

MCP server for Google Business Profile Performance API.

57 lines (56 loc) 1.96 kB
import { google } from 'googleapis'; export class GbpQaService { constructor() { } getOAuth2Client(accessToken) { const oauth2Client = new google.auth.OAuth2(); oauth2Client.setCredentials({ access_token: accessToken }); return oauth2Client; } getMyBusinessQaApi(accessToken) { const authClient = this.getOAuth2Client(accessToken); return google.mybusinessqanda({ version: 'v1', auth: authClient, }); } async listQuestions(accessToken, params) { const gbpQaApi = this.getMyBusinessQaApi(accessToken); const { locationName, pageSize, pageToken } = params; const requestParams = { parent: `${locationName}/questions`, pageSize, pageToken, }; try { return await gbpQaApi.locations.questions.list(requestParams); } catch (error) { console.error('Error listing questions:', JSON.stringify(error.response.data, null, 2)); throw new Error(`Failed to list questions: ${error.response.data.error.message}`); } } async createQuestion(accessToken, params) { const gbpQaApi = this.getMyBusinessQaApi(accessToken); const { locationName, text } = params; const requestParams = { parent: `${locationName}/questions`, requestBody: { text, }, }; return gbpQaApi.locations.questions.create(requestParams); } async answerQuestion(accessToken, params) { const gbpQaApi = this.getMyBusinessQaApi(accessToken); const { questionName, text } = params; const requestParams = { parent: questionName, requestBody: { answer: { text, }, }, }; return gbpQaApi.locations.questions.answers.upsert(requestParams); } }