TestFlight Feedback MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TestFlight Feedback MCP Server Summarize the latest TestFlight feedback and crash reports"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TestFlight Feedback MCP Server
An MCP (Model Context Protocol) server that gives AI assistants access to TestFlight beta tester feedback from App Store Connect. No Xcode required.
Why?
Apple doesn't expose TestFlight feedback text/comments via their public API (fastlane discussion). This MCP server provides:
Official API access to screenshot & crash feedback submissions (JWT auth)
Optional browser automation for full text feedback via Apple's internal iris API (Playwright)
Works on any platform — Windows, Linux, macOS — no Xcode needed
Related MCP server: testflight-mcp
Tools
Tool | Description |
| List all apps in your App Store Connect account |
| List TestFlight builds (filter by version, status) |
| List beta testers (filter by app, group, email) |
| List beta tester groups for an app |
| List all feedback: screenshots, crashes, and text comments |
| Get full details for a specific feedback submission |
| Download crash log content for a crash submission |
| Email a tester that their feedback has been addressed |
Setup
1. Get App Store Connect API Keys
Click Generate API Key (requires Admin role)
Download the
.p8file (you can only download it once)Note the Key ID and Issuer ID
2. Install
cd testflight-feedback-mcp
npm install
npm run build3. Configure
Set environment variables or create a .env file:
ASC_KEY_ID=YOUR_KEY_ID
ASC_ISSUER_ID=YOUR_ISSUER_ID
ASC_PRIVATE_KEY_PATH=./AuthKey_XXXXXXXX.p8Or provide the key inline:
ASC_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIGT...your key...\n-----END PRIVATE KEY-----"4. Connect to Your AI Assistant
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"testflight-feedback": {
"command": "node",
"args": ["/absolute/path/to/testflight-feedback-mcp/dist/index.js"],
"env": {
"ASC_KEY_ID": "YOUR_KEY_ID",
"ASC_ISSUER_ID": "YOUR_ISSUER_ID",
"ASC_PRIVATE_KEY_PATH": "/path/to/AuthKey.p8"
}
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"testflight-feedback": {
"command": "node",
"args": ["/absolute/path/to/testflight-feedback-mcp/dist/index.js"],
"env": {
"ASC_KEY_ID": "YOUR_KEY_ID",
"ASC_ISSUER_ID": "YOUR_ISSUER_ID",
"ASC_PRIVATE_KEY_PATH": "/path/to/AuthKey.p8"
}
}
}
}VS Code + GitHub Copilot
Add to .vscode/mcp.json:
{
"servers": {
"testflight-feedback": {
"command": "node",
"args": ["/absolute/path/to/testflight-feedback-mcp/dist/index.js"],
"env": {
"ASC_KEY_ID": "YOUR_KEY_ID",
"ASC_ISSUER_ID": "YOUR_ISSUER_ID",
"ASC_PRIVATE_KEY_PATH": "/path/to/AuthKey.p8"
}
}
}
}Optional: Respond to Testers via Email (SMTP)
The respond_to_feedback tool looks up the tester's email from a feedback submission and sends them a response. Configure any SMTP provider:
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password # Use App Password for Gmail
SMTP_FROM=your-email@gmail.com # Optional, defaults to SMTP_USER
APP_NAME=My App # Shows in the email footerWorks with Gmail, Outlook, custom SMTP, etc. The tool:
Fetches the submission to get the tester's email + build version
Sends a nicely formatted HTML email with your message
Returns confirmation with tester name, email, and message ID
Optional: Full Text Feedback (Browser Auth)
Apple's public API only returns screenshot and crash submissions — not text comments. To access text feedback, enable Playwright-based browser authentication:
npm install playwright
npx playwright install chromium
# Add to your env:
ENABLE_BROWSER_AUTH=true
ASC_USERNAME=your@apple.id
ASC_PASSWORD=your-passwordNote: This uses Apple's internal
iris/v1/betaFeedbacksAPI. You may be prompted for 2FA on your Apple device. Session cookies are cached in memory for the server lifetime.
Example Usage
Once connected, ask your AI assistant:
"Show me the latest TestFlight feedback for my app"
"List all crash reports from the last build"
"Get the crash log for submission XYZ"
"Who are my beta testers?"
"Show feedback from build 1.2.0"
Architecture
src/
├── index.ts # MCP server entry point, tool registration
├── auth/
│ ├── jwt.ts # JWT token generation (ES256, .p8 key)
│ └── browser.ts # Optional Playwright session for iris API
├── api/
│ ├── client.ts # HTTP client with JWT auth & pagination
│ ├── types.ts # TypeScript types for API responses
│ ├── apps.ts # /v1/apps endpoints
│ ├── builds.ts # /v1/builds endpoints
│ ├── testers.ts # /v1/betaTesters, /v1/betaGroups
│ └── feedback.ts # Screenshot/crash/iris feedback endpoints
└── tools/
├── list-apps.ts
├── list-builds.ts
├── list-testers.ts
├── list-feedback.ts
├── get-feedback-detail.ts
└── get-crash-log.tsAPI Coverage
Endpoint | Auth | Status |
| JWT | ✅ |
| JWT | ✅ |
| JWT | ✅ |
| JWT | ✅ |
| JWT | ✅ |
| JWT | ✅ |
| Browser | ✅ (optional) |
License
MIT
Available Tools
8 toolsget_crash_logA
Download the crash log content for a specific beta feedback crash submission.
Inputs: crash_submission_id (required).
get_feedback_detailA
Get detailed information about a specific feedback submission, including device info, tester details, screenshot asset, or crash log reference.
Inputs: submission_id (required), type (required).
list_appsB
List all apps in your App Store Connect account. Returns app ID, name, bundle ID, and SKU.
Inputs: limit.
list_beta_groupsB
List beta tester groups for an app. Returns group name, internal/external status, and feedback settings.
Inputs: app_id (required), limit.
list_beta_testersA
List beta testers. Filter by app, group, or email. Returns tester name, email, invite type, and state.
Inputs: app_id, group_id, email, limit.
list_buildsA
List TestFlight builds for an app. Filter by version or processing state. Returns build number, version, upload date, and status.
Inputs: app_id (required), version, processing_state, limit.
list_feedbackA
List TestFlight feedback for an app. Retrieves screenshot submissions, crash reports, and (with browser auth) text comments. Filter by build or feedback type.
Inputs: app_id (required), build_id, type, limit.
respond_to_feedbackA
Send an email to a beta tester letting them know their feedback has been addressed. Looks up the tester's email from the submission and sends via SMTP.
Inputs: submission_id (required), submission_type (required), message (required), subject.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool targets a distinct resource or action (apps, groups, testers, builds, feedback, crash logs, and responses). Even the two feedback-related tools have clear separation: list_feedback retrieves items, get_feedback_detail provides in-depth detail, and get_crash_log downloads specific crash content.
All tool names follow a consistent verb_noun pattern using lowercase with underscores (e.g., list_apps, get_feedback_detail, respond_to_feedback). This makes the set predictable for an agent to learn and select tools.
8 tools is well-scoped for a TestFlight feedback MCP. Each tool serves a necessary function without redundancy, covering the essential workflows: listing resources, retrieving details, downloading crash logs, and responding to feedback.
The tool set covers the core TestFlight feedback lifecycle: listing apps/groups/testers/builds/feedback, retrieving detailed info and crash logs, and responding. Minor gaps exist, such as the ability to delete feedback or manage beta tester invitations, but these are not critical for the stated purpose.
Maintenance
Related MCP Connectors
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
Run App Store Connect from your IDE: pricing, listings, screenshots, releases, AI visibility.
Ship a new iOS app from chat. AI runs App Store Connect, builds, release, and submission through Ap…
Cloud iPhones and Macs with Xcode for AI agents: build, run and test iOS apps, use the screen.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect resources like apps, builds, TestFlight, and reviews through natural language.2014 npmMIT
- AlicenseBqualityBmaintenanceMCP server for TestFlight and App Store Connect that exposes the App Store Connect API as tools for AI agents, focusing on retrieving beta feedback (screenshots, crash logs) and related app/build/tester data, with read-only operations.5129 npmMIT
- AlicenseCqualityDmaintenanceEnables management of App Store Connect resources including app reviews, TestFlight crashes, analytics reports, and Xcode Cloud workflows through natural language or AI agents.401MIT
- AlicenseNot gradedqualityCmaintenanceEnables management of iOS/macOS apps, TestFlight builds, app metadata, analytics, and more through natural language interactions with Apple Store Connect API.49 npm59MIT