Reusable local MCP server for Android and React Native release workflows powered by fastlane.
29 tools with mixed definition quality. Most tools have clear verb-noun naming (android_build_aab, ios_upload_to_testflight, etc.) and appropriate descriptions (average 85-150 chars per tool examined). All tools have input schemas with typed parameters and descriptions. However, several issues reduce overall quality: (1) Parameters lack granular constraints, many accept free-form strings where enums would be better (e.g., 'release_status' in android_upload_to_production accepts free-form when it should enumerate 'completed|draft|halted|inProgress'). (2) Output schemas are not documented in the tool definitions, LLMs cannot see what fields to expect from responses. (3) Error handling is minimal, tool calls return generic CommandResult objects with 'success' and 'message' fields but do not provide actionable recovery guidance. (4) Tool descriptions lack dependency hints and prerequisites. (5) No tool explicitly declares mutually exclusive parameters (e.g., aab_path vs apk_path in upload_to_internal). Sample tools analyzed: android_build_aab (good naming, clear description, parameters typed but not constrained), android_upload_to_production (DESTRUCTIVE but no confirmation pattern), ios_upload_to_testflight (array parameter 'groups' lacks description of expected format). The codebase shows defensive validation in helpers like validate_play_release_status and validate_rollout, but these are not surfaced in parameter schemas. Overall: solid foundation with clear tool structure, but lacks LLM-optimization patterns (enums, output schemas, error recovery guidance).
Build an Android App Bundle (AAB) for production release.
Build an Android APK for testing or distribution.
Get information about the latest Android build from Google Play.
Promote an Android build from one Google Play track to another.
Show the effective configuration resolved for an Android project.
Upload Android app changelogs to Google Play.
Upload all Android app metadata, images, and changelogs to Google Play.
Output schemas not documented. Tools return CommandResult objects but LLMs cannot see what fields are available in responses. This forces agents to guess at return structure and blocks downstream tool chaining.
Enum constraints missing on string parameters that have limited valid values. Examples: 'release_status' in android_upload_to_production (should be 'completed|draft|halted|inProgress'), 'platform' in store_listing_requirements (should be 'all|google_play|app_store'). Free-form strings invite hallucinated values and require LLMs to guess valid options.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
Upload Android app images to Google Play.
Upload Android app metadata to Google Play.
Upload an Android build to Google Play beta testing track.
Upload an Android build to Google Play internal testing track.
Upload an Android build to Google Play production track.
Validate Google Play authentication and credentials.
Run comprehensive health checks on project setup and configuration.
Check availability of required dependencies.
Create a new app in App Store Connect.
Distribute an existing TestFlight build to tester groups.
Get information about the latest iOS build from App Store Connect.
Manage TestFlight testers and groups via fastlane pilot.
Run precheck validation before submitting iOS app to App Store.
Show the effective configuration resolved for an iOS project.
Synchronize iOS code signing certificates and profiles.
Upload iOS app privacy details to App Store Connect.
Upload iOS app metadata to App Store Connect.
Upload iOS app screenshots to App Store Connect.
Upload an iOS build to the App Store for review and distribution.
Upload an iOS build to TestFlight and optionally distribute it.
List all supported MCP actions and their metadata.
Fetch static store listing requirements from Apple and Google.
Error handling does not provide recovery guidance. Tool errors return CommandResult with 'success: false' and a message string, but do not guide the LLM on next steps (retry, user fix, prerequisite lookup). Compare to pattern: 'User not found. Try search_users() with a partial name.'
Destructive operations (android_upload_to_production, ios_upload_to_app_store) lack confirmation or dry-run pattern. Agents make mistakes, these tools can publish to production with no reversibility. No 'confirm_before_execute' mechanism present.
Parameters with mutually exclusive relationships not documented. Examples: 'aab_path' vs 'apk_path' in android_upload_to_internal; 'ipa_path' vs 'changelog' overlap in ios_upload_to_testflight. Descriptions do not clarify which combinations are valid.
Array parameters lack format/item descriptions. Example: 'groups' in ios_upload_to_testflight is typed as array but no description of expected item format (strings? objects? required fields?).
Parameter descriptions lack format/constraint examples. 'Optional path to app configuration file' does not specify expected file format, location relative to project_root, or extension. LLMs must guess.
No dependency hints in descriptions. Tools that require prior setup (e.g., 'android_validate_play_auth' must run before upload tools) do not document these prerequisites or suggest next steps.
Tool 'android_upload_everything' combines multiple responsibilities (metadata, images, changelogs) in one tool. This violates single-responsibility pattern and prevents agents from selectively uploading only what changed.