Skip to content

Commit 2dec7ed

Browse files
committed
feat: modernize MCP surface and expand ASC coverage
1 parent 6ea1c4a commit 2dec7ed

112 files changed

Lines changed: 9292 additions & 1751 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,11 @@ jobs:
2424
- name: Build
2525
run: swift build
2626

27+
- name: Release build
28+
run: swift build -c release 2>&1 | tee /tmp/asc_mcp_release.log
29+
30+
- name: Fail on release warnings
31+
run: '! grep -q "warning:" /tmp/asc_mcp_release.log'
32+
2733
- name: Test
2834
run: swift test

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ playground.xcworkspace
3737
# Swift Package Manager
3838
.swiftpm
3939
.build/
40-
Package.resolved
4140

4241
# CocoaPods
4342
Pods/

ASC-COVERAGE-MATRIX-2026-05-05.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# App Store Connect API Coverage Matrix
2+
3+
Date: 2026-05-05
4+
5+
Source baseline:
6+
- Apple App Store Connect API overview: https://developer.apple.com/documentation/appstoreconnectapi
7+
- Apple API 4.0 release notes: https://developer.apple.com/documentation/appstoreconnectapi/app-store-connect-api-4-0-release-notes
8+
- Apple Webhook notifications: https://developer.apple.com/documentation/appstoreconnectapi/webhook-notifications
9+
10+
This matrix tracks current `asc-mcp` coverage against the official App Store Connect API documentation. It is intentionally product-oriented: it names what users can do today, what is missing, and which additions should come first.
11+
12+
## Executive Priority
13+
14+
P0 additions:
15+
- Accessibility declarations, App Clips, background assets, app tags, routing app coverages, and customer review summaries.
16+
17+
P1 additions:
18+
- Automated OpenAPI spec diff against `app-store-connect-openapi-specification.zip`.
19+
- Webhook receiver-side signature verification, event payload decoder, and triage resources/prompts.
20+
- Merchant IDs and Pass Type IDs under provisioning.
21+
- Analytics/customer-review summarization and metric recommendation ergonomics.
22+
23+
## Area Matrix
24+
25+
| Area | Status | Priority | Current worker keys | Missing / next |
26+
|---|---|---:|---|---|
27+
| Essentials: auth, errors, paging, uploads, rate limits | Partial | P1 | `auth` | OpenAPI spec diff; API key inventory/revocation helpers |
28+
| App Store app metadata and release operations | Partial | P0 | `apps`, `versions`, `app_info`, `pricing`, `app_events`, `screenshots`, `custom_pages`, `ppo`, `promoted`, `review_attachments`, `reviews` | accessibility declarations; App Clips; background assets; app tags; routing app coverages; customer review summary endpoint |
29+
| TestFlight builds, testers, groups, and beta app review | Partial | P0 | `builds`, `build_processing`, `build_beta`, `beta_groups`, `beta_feedback`, `beta_testers`, `beta_app`, `pre_release`, `beta_license` | beta recruitment criteria; beta app clip invocation/localization APIs |
30+
| Webhook notifications | Covered | P2 | `webhooks` | OpenAPI drift checks and receiver-side helper ergonomics |
31+
| Webhook notification receiver resources | Missing | P1 | none | signature verification helpers; event payload decoder; prompt/resource templates for event triage |
32+
| In-app purchases, subscriptions, and offers | Covered | P2 | `iap`, `subscriptions`, `offer_codes`, `winback`, `intro_offers`, `promo_offers` | OpenAPI drift checks and schema tightening |
33+
| Provisioning and identifiers | Partial | P1 | `provisioning` | merchant IDs; pass type IDs |
34+
| Users, access, and sandbox testers | Partial | P2 | `users`, `sandbox` | API key inventory helpers; API key revocation workflow |
35+
| Reporting, analytics, metrics, and diagnostics | Partial | P1 | `analytics`, `metrics` | analytics segment discovery ergonomics; customer review summarization; perf power metric recommendations |
36+
| Xcode Cloud workflows and builds | Partial | P1 | `xcode_cloud` | workflow create/update/delete; product delete; relationship-only linkage endpoints |
37+
| Game Center | Missing | P2 | none | Game Center details; leaderboards; achievements; activities; challenges |
38+
| Alternative distribution | Missing | P2 | none | alternative marketplace and web distribution workflows |
39+
40+
## Implementation Order
41+
42+
1. Add `--read-only` runtime guard so static and live validation can run safely in production-like MCP hosts.
43+
2. Add `AccessibilityWorker` and update `AppsWorker` for `accessibilityUrl`: this closes a new compliance-oriented App Store gap.
44+
3. Add OpenAPI drift tooling so future Apple release-note changes become visible before users report missing methods.
45+
4. Add webhook receiver helpers: signature verification, event payload decoder, and triage prompts/resources.
46+
5. Add merchant/pass identifiers, App Clips, background assets, Game Center, and alternative distribution as larger domain workers.
47+
48+
## Safety Notes
49+
50+
- Mutation tools must remain statically reviewable without live App Store Connect calls.
51+
- All new write tools should carry MCP annotations with `readOnlyHint = false`; destructive operations should carry `destructiveHint = true`.
52+
- Live validation should stay read-only unless a user explicitly provides a sandbox-like target and confirms the exact mutation.
53+
- Region- or entitlement-sensitive domains, especially alternative distribution, should be opt-in and clearly documented.

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2.1.0] - 2026-05-05
9+
10+
### Added
11+
12+
- MCP 2025-11-25 tool metadata policy for all 339 tools: standard annotations plus `anthropic/maxResultSizeChars`.
13+
- Webhook notification tools for listing, reading, creating, updating, deleting, delivery inspection, redelivery, and ping testing.
14+
- TestFlight beta feedback tools for crash submissions, screenshot submissions, crash log reads, and cleanup.
15+
- Xcode Cloud tools for products, workflows, build runs, actions, artifacts, issues, test results, Xcode/macOS versions, SCM providers, repositories, git references, pull requests, and starting builds.
16+
- `--read-only` runtime mode that blocks App Store Connect mutation tools before handler execution.
17+
- App Store Connect API coverage matrix for Apple 4.0+ documentation gaps and future worker planning.
18+
- Structured JSON results for JSON-producing handlers, with `outputSchema` on stable auth, company, apps, and selected analytics tools.
19+
- Structured App Store Connect error decoding and safe rate-limit metadata capture.
20+
- Metadata validation before key ASC mutations: locale, emoji, URL, and length checks.
21+
- HTTP and upload service tests, MCP result builder tests, metadata policy tests, and docs drift coverage.
22+
23+
### Changed
24+
25+
- Migrated deprecated MCP SDK `.text(...)` usage to current `Tool.Content.text(text:annotations:_meta:)` helpers.
26+
- Refactored `WorkerManager` routing into ordered descriptors for overlapping prefixes.
27+
- Refactored uploads to stream chunks from disk with bounded concurrency and streaming MD5.
28+
- Updated SwiftPM to Swift tools 6.2 and Swift language mode v6.
29+
- Release build is now warning-clean.
30+
31+
### Security
32+
33+
- Redacts sensitive identifiers and private-key paths in runtime diagnostic output.
34+
- Keeps ASC verification read-only for production smoke checks.
35+
836
## [2.0.0] - 2026-03-24
937

1038
### Breaking Changes

Package.resolved

Lines changed: 69 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version: 6.1
1+
// swift-tools-version: 6.2
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import PackageDescription
@@ -19,6 +19,9 @@ let package = Package(
1919
name: "asc-mcp",
2020
dependencies: [
2121
.product(name: "MCP", package: "swift-sdk")
22+
],
23+
swiftSettings: [
24+
.swiftLanguageMode(.v6)
2225
]
2326
),
2427
.testTarget(
@@ -27,7 +30,10 @@ let package = Package(
2730
"asc-mcp",
2831
.product(name: "MCP", package: "swift-sdk")
2932
],
30-
resources: [.copy("Fixtures")]
33+
resources: [.copy("Fixtures")],
34+
swiftSettings: [
35+
.swiftLanguageMode(.v6)
36+
]
3137
),
3238
]
3339
)

0 commit comments

Comments
 (0)