TestFlight Feedback MCP Server

TestFlight Feedback MCP Server

Enables AI assistants to access TestFlight beta tester feedback, including screenshots, crash logs, and text comments from App Store Connect. It works across any platform without requiring Xcode, using official API keys and optional browser automation for full text feedback.

Category
Visit Server

README

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

Tools

Tool Description
list_apps List all apps in your App Store Connect account
list_builds List TestFlight builds (filter by version, status)
list_beta_testers List beta testers (filter by app, group, email)
list_beta_groups List beta tester groups for an app
list_feedback List all feedback: screenshots, crashes, and text comments
get_feedback_detail Get full details for a specific feedback submission
get_crash_log Download crash log content for a crash submission
respond_to_feedback Email a tester that their feedback has been addressed

Setup

1. Get App Store Connect API Keys

  1. Go to App Store Connect → Users and Access → Keys
  2. Click Generate API Key (requires Admin role)
  3. Download the .p8 file (you can only download it once)
  4. Note the Key ID and Issuer ID

2. Install

cd testflight-feedback-mcp
npm install
npm run build

3. 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.p8

Or 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 footer

Works with Gmail, Outlook, custom SMTP, etc. The tool:

  1. Fetches the submission to get the tester's email + build version
  2. Sends a nicely formatted HTML email with your message
  3. 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-password

Note: This uses Apple's internal iris/v1/betaFeedbacks API. 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.ts

API Coverage

Endpoint Auth Status
/v1/apps JWT
/v1/builds JWT
/v1/betaTesters JWT
/v1/betaGroups JWT
/v1/betaFeedbackScreenshotSubmissions JWT
/v1/betaFeedbackCrashSubmissions JWT
/iris/v1/betaFeedbacks (text comments) Browser ✅ (optional)

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured