asc-mcp
Integrates with Apple Developer Program and App Store Connect (via ASC CLI) to sign, verify, and manage iOS app builds.
Integrates with GitHub to access registered app repositories, resolve PRs/commits, and trigger build requests for specific projects.
Triggers GitHub Actions workflows on macOS runners to build, sign, and export iOS apps.
Provides tools for building, signing, and distributing iOS apps from PRs/commits.
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., "@asc-mcpbuild the latest PR for MyApp and send me the IPA link"
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.
asc-mcp
ASC CLIをクラウドから使うための認証付きMCPサービス。現在は、登録済みiOSアプリのPR/commitをMacでビルド・署名し、認証付き固定ページから私的に配布する3ツールを提供する。ASC全コマンドの公開は行っていない。
自分が別環境で使え、他の人も設定を差し替えて再構築できることを目標とする。公開コードに本人のアカウント・ドメイン・署名情報を埋め込まない。
構成
MCP client → Cloudflare Access Managed OAuth → Workers MCP → GitHub Actions → macOS runner / ASC → private R2 / install page → Bark
src/:list_apps、build_app(project, pr|commit)、get_build(job_id)。infra/: D1、非公開R2、Access / Managed OAuth。Worker本体・custom domain / DNSはWranglerが管理する。.github/workflows/build.yml: 非公開の制御repoでのみ実行する固定workflow。scripts/run.py: 登録済みproject/schemeで、SHA固定checkout → archive → Ad Hoc export → ASC署名検証 → publish。distribution/: 既存のAccess・10分署名URL・固定ページ・Bark AES通知を引き継ぐ。IPA署名検証はASC、R2への送信は公式S3 SDKを利用する。
Related MCP server: appstore-connect-mcp
必要なもの
Cloudflareアカウントとドメイン、GitHub App、非公開の制御repo。
Xcodeが対象アプリに対応するMac、署名可能なApple Developer Programのアカウント・登録端末。
ASC 5.9.2、XcodeGen(project.ymlでprojectを生成するアプリ)、Node 24、npm、Python 3、OpenTofu 1.12.6。Bark暗号化通知にはopenssl、age暗号化ファイルから読む場合はageも必要。
Mac runnerは専用ユーザー・専用キーチェーンを推奨。XcodeのRun Scriptもコードとして実行されるため、作者を許可しただけでコード隔離が保証されるわけではない。
初期構築
本repoをcloneし
npm ci。npm run checkとpython3 -m unittest discover -s tests -p '*_test.py'を実行。infra/example.tfvarsをgitignoredのinfra/config.tfvarsへコピーして値を差し替える。Cloudflare provider用CLOUDFLARE_API_TOKEN(Access・D1・R2の対象リソースへの編集権限)を設定する。加えて、独立した強いTF_VAR_state_passphraseを環境へ設定する。tofu -chdir=infra init→tofu -chdir=infra plan -var-file=config.tfvars -out=change.tfplan→ 内容確認後tofu -chdir=infra apply change.tfplan。state/planは暗号化し、Gitへ入れない。暗号鍵を別途バックアップする。複数環境/担当者で運用するときはロック対応backendも設定する。config.example.jsonをconfig.local.jsonへコピー。Tofuのdatabase ID・MCP audience・install audienceを反映しnode scripts/configure.mjs。生成される2つのproduction Wrangler設定はgitignored。GitHub App設定手順に沿ってAppを登録し、対象repoだけへinstall。制御repoのActions read/write、アプリrepoのContents read / Pull requests readを付与。App ID・installation ID・PKCS#8 PEM秘密鍵をMCP Workerの
GITHUB_APP_ID/GITHUB_INSTALLATION_ID/GITHUB_APP_PRIVATE_KEYsecretsへ設定する。Apple用APIキーは今回不要。npx wrangler d1 migrations apply asc-mcp-jobs --remote --config wrangler.production.json、npx wrangler deploy --config wrangler.production.json。配布Workerへ
DOWNLOAD_SECRET(ランダム値)を設定し、npx wrangler deploy --config distribution/wrangler.production.json。署名検証を配備する前にdownloadパスのAccess例外を利用しない。非公開制御repoを作り、
.github/workflows/build.ymlだけを配置する。varsのSERVICE_REPOSITORYに本サービスrepo、SERVICE_REVISIONに検証済み40桁commit SHAを設定する。ビルドロジックはこの固定版をcheckoutし、制御repoへ複製しない。公開repoの外部PRからrunnerを動かさない。MacへGitHub公式runnerを登録してasc-mcplabelを付ける。GUIのloginキーチェーンを使う場合はsvc.sh install後、停止中にpython3 scripts/configure-runner-keychain.py /PATH/TO/RUNNERを実行してからsvc.sh start。公式LaunchAgentの独立security sessionを作らず、ログイン中のGUIセッションを利用する。再起動後はGUIログインとキーチェーン解除が必要で、常時無人運用用の専用キーチェーンとは別の方式。ASC・Xcode・署名をrunnerの実行ユーザーでasc xcode doctorと実archive/exportで確認する。制御repoのvarsに
PROJECTS_JSON(configのprojects部分)、CLOUDFLARE_ACCOUNT_ID、OTA_PUBLIC_ORIGIN、OTA_R2_BUCKET、R2_ACCESS_KEY_IDを設定。R2_ACCESS_KEY_IDは配布用R2トークンのID、secretのCLOUDFLARE_API_TOKENはその値。対象bucketだけのObject Read & Write権限とし、S3互換APIで送信する(この権限はWranglerのREST APIでは使えない)。SDK用secretはtoken値のSHA-256から生成し別の鍵を保存しない。Cloudflareの認証仕様。privateアプリrepo取得用SOURCE_TOKENはContents readへ限定する。実行時の短命GitHub App tokenを使う形への移行は運用受け入れで確認する。Bark利用時は既存の通知設定を
BARK_ENVsecretへ登録するか、runnerのage暗号化設定ファイルをBARK_ENV_FILEvarで指定する。通知設定をXcodeプロセスへ渡さない。秘密情報をworkflowやログへ貼らない。ChatGPT / Claude / Codexへ
https://YOUR_MCP_HOST/mcpを追加しAccessログイン。Managed OAuthの許可callback URIは使うクライアントの実値だけを登録する。
アプリ追加はconfigのprojectsにrepo・scheme・project・teamId・trustedAuthorsを追加し、Worker設定とrunner側設定の両方へ反映する。commitはtrustedRefの履歴上の40桁SHAのみ。未merge変更は同repo・許可作者・open PRだけを受付時のhead SHAへ固定する。
完了の確認
未認証・別audienceのJWTは拒否される。認証後3ツールが取得できる。
fork PR / 未許可作者 / 任意shellやproject pathは拒否される。
build_appはjob IDを返し、get_buildで本人のjobだけを読める。
失敗時にlatest配布物を切り替えず、dispatch応答喪失を自動再送しない。
成功時にIPA検証・配布・Bark通知・実機installまで確認する。
元環境のconfig/秘密情報を流用せず、別設定の新しい環境で同じ手順を実行する。
Managed OAuth・D1・Workerは配備済み。CodexのOAuthログイン、認証付きMCPの3ツール、GitHub Appによるrunner起動、Macでのarchive・Ad Hoc export・ASC署名検証・R2配布・Barkサーバー受付、固定ページの更新まで実ビルドで確認した。get_build は失敗jobにinstall URLを付けず、成功jobではURLを返す。runnerの SessionCreate を無効にしてGUIの署名セッションを利用している。ChatGPT・Claudeの接続、今回の通知からの端末install、元環境の秘密情報を流用しない別環境での構築は未確認。
既存の配布サービスを併用する場合は manage_distribution=false とし、既存の配布audience/bucketを設定する。既存installサービスのリソースはまだ移管せず、運用切替時にdotfilesからstateを移す。両方から同じAccessリソースを管理しない。ASC distribute publishはS3互換ストレージへの配布物と期限付きリンクを提供するが、現在のAccess付き固定ページ・Bark通知は別途必要。
ライセンスと参照
MIT。配布コードはgigun-dev/claude-codeのカスタムOTA実装から移植。元のOTA pluginは mariosaputra/ota-deploy を基にしており、著作権表示を保持する。
This server cannot be deployed
Maintenance
Related MCP Connectors
Cloud macOS with Xcode for AI agents: run commands, build, test and ship iOS apps.
Build, run, and inspect iOS apps in disposable hosted Simulators from cloud coding agents.
Trigger and inspect Codemagic CI builds, apps and artifacts.
Create App Store screenshots, icons, ASO copy, localization, and revisions via hosted MCP.
Related MCP Servers
- AlicenseBqualityAmaintenanceMCP server for managing Xcode Cloud workflows, builds, and test artifacts via the App Store Connect API.17213 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables automated management of iOS apps, builds, TestFlight beta testing, and user access control through Apple's App Store Connect API.39 npmMIT
- AlicenseAqualityCmaintenanceAn MCP server that drives the full App Store release cycle for iOS and macOS apps: version bump, archive + TestFlight upload, metadata, review submission, and status.835 npmMIT
- AlicenseAqualityCmaintenanceEnables coding agents to build, test, archive, and run iOS apps on a remote Mac fleet from any environment, with XcodeBuildMCP-compatible tools and live simulator access.1135 npmMIT