appstore-api-mcp 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and the project uses
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.0.4] - 2026-06-02
8
+
9
+ ### Changed
10
+ - Agent-setup prompt now **guides the user to obtain missing credentials**
11
+ (where to find the Key ID / Issuer ID, how to generate and download the .p8)
12
+ instead of stopping with an error when values are still placeholders.
13
+
14
+ ## [1.0.3] - 2026-06-02
15
+
16
+ ### Changed
17
+ - README Quick start reworked to be agent-agnostic: the **agent-setup prompt is
18
+ now shown inline**, and manual setup leads with the universal config block
19
+ (Claude Code is presented as one shortcut among equals, not the default).
20
+
21
+ ### Fixed
22
+ - Publish workflow now triggers on tag push **only** (removed the duplicate
23
+ `release: published` trigger that caused a second, failing publish run), and
24
+ skips publishing if the version is already on npm.
25
+
7
26
  ## [1.0.2] - 2026-06-02
8
27
 
9
28
  ### Added
package/README.md CHANGED
@@ -39,33 +39,54 @@ versions — plus a raw-request tool that reaches the **entire**
39
39
  **Requirements:** Node.js ≥ 18 and an Apple Developer account with an
40
40
  [App Store Connect API key](#getting-your-api-key).
41
41
 
42
- ### 🤖 Easiest: let your agent set it up
43
-
44
- Don't want to touch config files? Paste the prompt in
45
- **[docs/AGENT-SETUP.md](docs/AGENT-SETUP.md)** into your coding agent, give it
46
- your Key ID, Issuer ID, and the **path** to your `.p8` file, and it configures
47
- everything for your client and verifies it. (Give the file *path*, not the key
48
- contents — that keeps the key off the transcript.)
49
-
50
- Prefer to do it manually? Continue below.
42
+ ### 🤖 Easiest: let your AI agent set it up (works with any agent)
43
+
44
+ Don't want to touch config files? Paste this into your coding agent (Claude,
45
+ Codex, Cursor, Windsurf, Antigravity, Gemini CLI, …), fill in your three values,
46
+ and it will configure your client and verify it:
47
+
48
+ ```text
49
+ Set up the "appstore-api-mcp" App Store Connect MCP server for me.
50
+
51
+ My App Store Connect API credentials:
52
+ - Key ID: <YOUR_KEY_ID>
53
+ - Issuer ID: <YOUR_ISSUER_ID>
54
+ - Path to my .p8 private key file: <ABSOLUTE_PATH_TO_AuthKey_XXXX.p8>
55
+
56
+ Please:
57
+ 1. If any of the three values above are still placeholders or I didn't provide
58
+ them, do NOT stop with an error — guide me to get them, then wait for me:
59
+ - Key ID & Issuer ID: go to App Store Connect → Users and Access →
60
+ Integrations tab → "App Store Connect API". The Issuer ID is shown at the
61
+ top of that page; the Key ID is listed next to each key.
62
+ - No key yet? Click the + to generate one, give it the "App Manager" role
63
+ (enough to edit metadata/keywords/screenshots), then Download the .p8
64
+ file — you can only download it once, so save it somewhere safe.
65
+ - The .p8 path is the absolute path to wherever you saved that file.
66
+ 2. Detect which MCP client I'm using and add the server to its config (run it
67
+ with: npx -y appstore-api-mcp).
68
+ 3. Pass these env vars: ASC_KEY_ID, ASC_ISSUER_ID, and ASC_PRIVATE_KEY_PATH
69
+ (point ASC_PRIVATE_KEY_PATH at my .p8 path — reference the PATH, do not
70
+ inline the key contents).
71
+ 4. Install it at user/global scope (for Claude Code use `--scope user`).
72
+ 5. Do NOT print, echo, log, or commit the key. Keep the .p8 outside any git repo.
73
+ 6. When done, verify by listing my App Store apps and report the result.
74
+
75
+ Config formats per client: https://github.com/fil-technology/appstore-api-mcp/blob/main/docs/CLIENTS.md
76
+ ```
51
77
 
52
- ### Claude Code (CLI)
78
+ > Give the file **path**, not the key contents — that keeps the private key off
79
+ > the chat transcript. More detail + a remote/cloud variant in
80
+ > [docs/AGENT-SETUP.md](docs/AGENT-SETUP.md).
53
81
 
54
- ```bash
55
- # --scope user installs it for ALL your projects (recommended).
56
- # Remove the --scope user line to install for the current project only.
57
- claude mcp add appstore-api \
58
- --scope user \
59
- --env ASC_KEY_ID=YOUR_KEY_ID \
60
- --env ASC_ISSUER_ID=YOUR_ISSUER_ID \
61
- --env ASC_PRIVATE_KEY_PATH=/absolute/path/to/AuthKey_XXXXXXXXXX.p8 \
62
- -- npx -y appstore-api-mcp
63
- ```
82
+ Prefer to do it manually? See below.
64
83
 
65
- ### Any other MCP client (Cursor, Cline, Windsurf, VS Code, Zed, Continue, …)
84
+ ### Manual setup — any MCP client
66
85
 
67
- Almost every client uses this same block (Claude Desktop config path:
68
- `~/Library/Application Support/Claude/claude_desktop_config.json`):
86
+ This is a standard stdio MCP server, so **every** MCP client uses the same
87
+ command (`npx -y appstore-api-mcp`) and the same three `ASC_*` env vars. Most
88
+ clients (Cursor, Cline, Windsurf, Claude Desktop, Gemini CLI, Antigravity, …)
89
+ take this exact block — just put it in that client's config file:
69
90
 
70
91
  ```json
71
92
  {
@@ -83,7 +104,24 @@ Almost every client uses this same block (Claude Desktop config path:
83
104
  }
84
105
  ```
85
106
 
86
- Restart the client, then ask it to *"list my App Store apps"* to confirm it works.
107
+ A few clients differ (VS Code uses `servers`, Codex uses TOML, Zed uses
108
+ `context_servers`) — see the [Supported clients](#supported-clients) table and
109
+ [docs/CLIENTS.md](docs/CLIENTS.md) for each exact format/location.
110
+
111
+ **Claude Code** has a one-line CLI shortcut instead of editing a file:
112
+
113
+ ```bash
114
+ # --scope user installs it for ALL your projects (recommended).
115
+ # Remove the --scope user line to install for the current project only.
116
+ claude mcp add appstore-api \
117
+ --scope user \
118
+ --env ASC_KEY_ID=YOUR_KEY_ID \
119
+ --env ASC_ISSUER_ID=YOUR_ISSUER_ID \
120
+ --env ASC_PRIVATE_KEY_PATH=/absolute/path/to/AuthKey_XXXXXXXXXX.p8 \
121
+ -- npx -y appstore-api-mcp
122
+ ```
123
+
124
+ After configuring, restart the client and ask it to *"list my App Store apps"* to confirm it works.
87
125
 
88
126
  ---
89
127
 
@@ -15,17 +15,26 @@ My App Store Connect API credentials:
15
15
  - Path to my .p8 private key file: <ABSOLUTE_PATH_TO_AuthKey_XXXX.p8>
16
16
 
17
17
  Please:
18
- 1. Detect which MCP client I'm using and add the server to that client's
18
+ 1. If any of the three values above are still placeholders or I didn't provide
19
+ them, do NOT stop with an error — guide me to get them, then wait for me:
20
+ - Key ID & Issuer ID: go to App Store Connect → Users and Access →
21
+ Integrations tab → "App Store Connect API". The Issuer ID is shown at the
22
+ top of that page; the Key ID is listed next to each key.
23
+ - No key yet? Click the + to generate one, give it the "App Manager" role
24
+ (enough to edit metadata/keywords/screenshots), then Download the .p8
25
+ file — you can only download it once, so save it somewhere safe.
26
+ - The .p8 path is the absolute path to wherever you saved that file.
27
+ 2. Detect which MCP client I'm using and add the server to that client's
19
28
  correct config file/command. Run it with: npx -y appstore-api-mcp
20
- 2. Pass these env vars to the server:
29
+ 3. Pass these env vars to the server:
21
30
  ASC_KEY_ID = my Key ID
22
31
  ASC_ISSUER_ID = my Issuer ID
23
32
  ASC_PRIVATE_KEY_PATH = the path to my .p8 file (reference the PATH; do not
24
33
  inline the key contents)
25
- 3. Install it at user/global scope so it's available in all my projects
34
+ 4. Install it at user/global scope so it's available in all my projects
26
35
  (for Claude Code, use `claude mcp add ... --scope user`).
27
- 4. Do NOT print, echo, log, or commit the key. Keep the .p8 outside any git repo.
28
- 5. When done, verify it works by listing my App Store apps, then tell me the
36
+ 5. Do NOT print, echo, log, or commit the key. Keep the .p8 outside any git repo.
37
+ 6. When done, verify it works by listing my App Store apps, then tell me the
29
38
  result (or any error and how to fix it).
30
39
 
31
40
  Config formats per client are documented here:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appstore-api-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "MCP server for Apple App Store Connect — manage apps, keywords, descriptions, titles, screenshots, versions and the full API from any MCP client (Claude, Codex, Cursor, Cline, Windsurf, VS Code, Zed, Continue, Gemini CLI, Google Antigravity, Amazon Q, Goose, and custom agents). Includes a fleet-wide ASO audit and dry-run previews.",
5
5
  "type": "module",
6
6
  "bin": {