@bdmarvin/mcp-server-gbp
Version:
MCP server for Google Business Profile Performance API.
57 lines (56 loc) • 1.96 kB
JavaScript
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);
}
}