google_update_testers
Replace tester Google Groups assigned to a specific track in Google Play Console. Provide package name, edit ID, track name, and optional group emails to update.
Instructions
Update tester Google Groups for a track
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Android package name | |
| editId | Yes | Edit ID | |
| track | Yes | Track name (e.g. internal, alpha, beta) | |
| googleGroups | No | List of Google Group email addresses |
Implementation Reference
- src/google/tools.ts:189-202 (handler)Tool definition for 'google_update_testers' containing the handler that delegates to GoogleClient.updateTesters()
const updateTesters: ToolDef = { name: 'google_update_testers', description: 'Update tester Google Groups for a track', schema: z.object({ packageName: z.string().describe('Android package name'), editId: z.string().describe('Edit ID'), track: z.string().describe('Track name (e.g. internal, alpha, beta)'), googleGroups: z.array(z.string()).optional().describe('List of Google Group email addresses'), }), handler: async (client, args) => { const { packageName, editId, track, ...testers } = args; return client.updateTesters(packageName, editId, track, testers); }, }; - src/google/tools.ts:192-197 (schema)Zod schema defining the input parameters: packageName, editId, track, and optional googleGroups array
schema: z.object({ packageName: z.string().describe('Android package name'), editId: z.string().describe('Edit ID'), track: z.string().describe('Track name (e.g. internal, alpha, beta)'), googleGroups: z.array(z.string()).optional().describe('List of Google Group email addresses'), }), - src/google/tools.ts:605-626 (registration)Tool registration in the exported googleTools array, which is iterated over in src/index.ts to register with the MCP server
export const googleTools: ToolDef[] = [ // Edit lifecycle createEdit, commitEdit, validateEdit, deleteEdit, // App details getDetails, updateDetails, // Store listing listListings, getListing, updateListing, deleteListing, // Country availability & Testers getCountryAvailability, getTesters, updateTesters, // Images listImages, uploadImage, deleteImage, deleteAllImages, // Tracks & Releases listTracks, getTrack, createRelease, promoteRelease, haltRelease, // Bundle / APK uploadBundle, uploadApk, // Reviews listReviews, getReview, replyToReview, // In-App Products listInAppProducts, getInAppProduct, createInAppProduct, updateInAppProduct, deleteInAppProduct, // Subscriptions listSubscriptions, getSubscription, archiveSubscription, ]; - src/google/client.ts:129-140 (handler)GoogleClient.updateTesters() method that calls the Google Play Android Publisher API edits.testers.patch to update tester groups
async updateTesters( packageName: string, editId: string, track: string, testers: { googleGroups?: string[] }, ) { const res = await this.publisher.edits.testers.patch({ packageName, editId, track, requestBody: testers, }); return res.data; } - src/index.ts:77-92 (registration)MCP server registration loop that registers all googleTools (including google_update_testers) with the MCP server
for (const tool of googleTools) { server.tool(tool.name, tool.description, tool.schema.shape, async (args: any) => { if (!googleClient) { return { content: [{ type: 'text' as const, text: 'Google client not configured. Set GOOGLE_SERVICE_ACCOUNT_PATH env var.' }], isError: true, }; } try { const result = await tool.handler(googleClient, args); return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] }; } catch (err: any) { return { content: [{ type: 'text' as const, text: `Error: ${err.message}` }], isError: true }; } }); }