get_testflight_crash_log
Get a TestFlight crash log
A crash feedback's crash log, saved whole to the server's outbox: the answer gives the file's path, SHA-256 and size, and its first 40 lines.
submission必填com.foreverworks由 foreverworks.com 发布v0.1.2更新于 Nov 7, 2026
阅读并回复 App Store 和 Google Play 的评论,并查看 TestFlight 反馈和崩溃日志。
AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。
Read and answer App Store and Google Play reviews, and see TestFlight feedback and crash logs.
App Store and Google Play 的本地 MCP 服务,由 foreverworks.com 发布;无需登录;STDIO;7 个工具。
暂无 AI 概览:以下信息来自注册中心条目和服务本身。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
Read and answer your app's App Store and Google Play reviews from your AI
assistant, and see what TestFlight testers sent you: screenshot feedback, and
crashes with their logs. It works through
App Store Connect and the
Google Play Developer API.
Two tools write: reply_app_store_review and reply_play_review publish a
reply in the developer's name, visible to everyone, so send only text you have
approved. Nothing here moves money.
You need credentials for each store you use, and one store is enough: for
the App Store, an App Store Connect API key (its .p8 file, key id and issuer
id); for Google Play, a Google Cloud service account with a JSON key, invited
to your app in Play Console. Google's API returns only the last seven days of
reviews.
[Install in VS Code] [Install in Cursor] [Download for Claude Desktop]
With Claude Code:
Claude Desktop (Settings, Developer, Edit Config) and most other clients read the same command as JSON:
Each runs the published package on Node 22.19 or newer. VS Code and the Claude Desktop bundle ask for each setting as they add the server; leave an optional one empty. Cursor reads each from your environment instead (${env:ASC_KEY_ID} and so on), so set them before you start Cursor. Every setting is optional; Configuration says which ones you need for which tools.
In a JSON configuration, the command is node and its one argument the full path of servers/app-stores/dist/index.js. To share one running copy between several clients over HTTP, see docs/deploying.md.
The commands above configure no store. Add the variables of each store you use:
A store you leave out shows as configured: false in health, and its tools
answer config. Credentials are read on the first call that needs them, so
the server starts without any. The variables every server shares (transport,
limits, what tools may do) are in
docs/configuration.md.
.p8 file. App Store Connect offers it once: save it readable
only by you (chmod 600), and point ASC_PRIVATE_KEY_FILE at it.ASC_KEY_ID, and the
Issuer ID shown above the list into ASC_ISSUER_ID.A team key does not expire; revoke it on the same page once it is unused.
chmod 600) and point
PLAY_SERVICE_ACCOUNT_FILE at it. If your organisation forbids service
account keys (iam.disableServiceAccountKeyCreation), lift that policy for
the project while you make the key.client_email in the JSON file). Give it two permissions
on the app: View app information (to read reviews) and Reply to
reviews.PLAY_PACKAGES to the app's package name (several, comma-separated).health check. For each store
it says whether the credentials work, with the apps the key sees (bundle
ids and Apple ids) and each Play package with one review read.read changes nothing in either store (a crash log is saved to the server's outbox); write publishes a reply under a review.
config: "App Store Connect is not configured" or "Google Play is not
configured". The message names the missing variables. Any other config
message names a value the store did not issue: a key id that is not 10
letters and digits, an issuer id that is not a UUID, a .p8 that is not an
EC P-256 key, or a JSON file that is not a service account's key.
auth. The store refused the credentials: the key was revoked or the
service account deleted. Check it in App Store Connect (Users and Access,
Integrations) or the service account's Google Cloud project, and replace the
file.
forbidden from the App Store. The key lacks the role: reviews need
Customer Support, TestFlight feedback needs Developer.
forbidden from Google Play. The service account cannot act on that app:
in Play Console, Users and permissions, give it View app information and
Reply to reviews on the app. A newly invited account can take hours to reach
the API. If the message says the Google Play Android Developer API is
disabled, enable it in the service account's Google Cloud project.
input: "... already has a public reply". The review has a different
reply, quoted in the message. Call again with replace: true only if you mean
yours to take its place. Other input messages name the problem: a reply over
the store's limit, or an app or package to name because there are several.
not_found. These credentials do not reach that id or app: health lists
the apps and packages they do.
outcome_unknown after a reply. The connection dropped after the reply
left, so it may already be public. List the review again (it shows its reply)
before you send it again.
rate_limited. The store is throttling these credentials; wait a minute.
api with status 0 means the store was unreachable; another status, that
it failed: retry later. drift means the store's answer changed shape:
please report it with the message.
.p8 key (ES256), lets
it live 19 of the 20 minutes Apple allows, and keeps it in memory. Google
trades an assertion signed with the service account's key (RS256, RFC 7523)
at oauth2.googleapis.com for an hour-long token. A key file that names
another token endpoint is refused, so the assertion goes nowhere else.replace is true, and sends nothing when
the text is the same.
Apple holds a new reply as pending until its own check publishes it,
usually within a day.androidpublisher v3 reference; a documented field that
goes missing fails as drift instead of travelling on as an empty value.npx tsx scripts/smoke.ts drives the built server read-only with your
credentials: health, three reviews per configured store, and three pieces
of TestFlight feedback. It never replies.
expiresAt); the server
does not download them.Searched 2026-10-22. Neither Apple nor Google publishes one.
Community servers each cover part of it, over stdio:
asc-mcp (Swift, macOS only): App Store reviews, replies, and
TestFlight feedback with crash logs.erayendes/app-store-connect-mcp): the whole App Store
Connect API.app-publish-mcp: reviews and replies in both stores, no TestFlight
feedback.google-play-developer-mcp and google-play-console-cli: Play
reviews and replies.antoniolg/play-store-mcp and shipstores do releases, not
reviews, and JoshuaRileyDev/app-store-connect-mcp-server is archived.This one does what none of them does in one place: both stores and TestFlight from one service that keeps the keys in files and runs on Linux; a reply refused when it would replace a public one, and sent once when repeated; Google's seven-day window stated in every answer; a crash log saved with its checksum; and failures typed per store, saying what to change in which console.
来源:servers/app-stores/README.md,提交 7b93f2f
Get a TestFlight crash log
A crash feedback's crash log, saved whole to the server's outbox: the answer gives the file's path, SHA-256 and size, and its first 40 lines.
submission必填Health
Whether each store's credentials work, and what they reach: the apps the App Store Connect key sees (their bundle ids and Apple ids), and each Play package this server answers for, with one review read. A store without credentials is reported as not configured.
无需输入参数。
List App Store reviews
An app's App Store reviews, newest first unless sorted otherwise: rating, title, text, the reviewer's nickname, the storefront, the date, and the developer's reply with its state (pending until Apple publishes it). Filter by star rating, storefront or whether it has a reply.
appsortlimitcursorratingrepliedterritoryList Google Play reviews
A package's Google Play reviews with text, newest first: rating, text, author, language, app version, device, the date, and the developer's reply. Google's API returns only reviews written or changed in the last 7 days; older ones are in Play Console's reports.
limitcursorpackagetranslate_toList TestFlight feedback
What testers sent from the TestFlight app, newest first: screenshot feedback (comment and screenshots, at URLs that expire) and crash feedback (comment; get_testflight_crash_log reads the log), each with the tester's e-mail, device, OS and the build number.
appkindlimitcursorReply to an App Store review
Publish a reply under an App Store review, in the developer's name and visible to everyone once Apple publishes it: send only text the user approved for this review. A review that already has a different reply is refused unless replace is true; the same text again sends nothing.
text必填review必填replaceReply to a Google Play review
Publish a reply under a Google Play review, in the developer's name and visible to everyone: send only text the user approved for this review. A review that already has a different reply is refused unless replace is true; the same text again sends nothing.
text必填review必填packagereplace已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
claude mcp add app-stores -- npx -y @foreverworks/mcp-app-stores{ "mcpServers": { "app-stores": { "command": "npx", "args": ["-y", "@foreverworks/mcp-app-stores"] } }}git clone https://github.com/foreverworks/mcps.git && cd mcpsnpm ci && npm run buildclaude mcp add app-stores -- node "$PWD/servers/app-stores/dist/index.js"claude mcp add app-stores \ -e ASC_KEY_ID=ABCDE12345 -e ASC_ISSUER_ID="<issuer id>" -e ASC_PRIVATE_KEY_FILE="<path to AuthKey.p8>" \ -e PLAY_SERVICE_ACCOUNT_FILE="<path to service account JSON>" -e PLAY_PACKAGES=com.example.app \ -- npx -y @foreverworks/mcp-app-stores