napple
Provides tools for interacting with the App Store Connect API, enabling agents to inspect account and team details, list apps, builds, groups, and signing assets, and perform write operations such as uploading builds, creating bundle IDs, certificates, and provisioning profiles.
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., "@nappleshow signing assets for bundle ID com.nott.app"
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.
nAPPLE
nAPPLE is a Python MCP server for the App Store Connect API. It serves the NOTT apps.
It runs on SERVER (Linux). The command napple mcp serve serves it on stdio.
Tools
Read tools change nothing in Apple. Write tools create or upload a real Apple asset.
Tool | Effect | Purpose |
| Read | Shows the key, the team and any pending agreement. The agreement check is fast. |
| Read | Lists the team's apps. |
| Read | Lists builds. Also gives the next build number. |
| Read | Shows one build. |
| Read | Shows the App ID, capabilities, profiles and certificates of one bundle. |
| Read | Lists the team's groups. |
| Write | Uploads a build through the buildUploads API. It uploads, commits and polls until a terminal state. |
| Write | Creates a bundle ID. |
| Write | Creates a certificate from a CSR only. The private key stays where it signs. |
| Write | Creates a provisioning profile. |
The agent asks the owner before each write call.
Related MCP server: xcode-cloud-mcp
Configuration
The server reads three environment variables:
NOTT_NAPPLE_KEY_ID: the key ID of the team API key.NOTT_NAPPLE_ISSUER_ID: the issuer ID of the team.NOTT_NAPPLE_KEY_PATH: the path to the team API key.p8file in~/.nott/apple/.
When the environment has none of the three, the server reads ~/.nott/apple/.
That directory holds one AuthKey_<key id>.p8 file and an issuer_id file.
If the environment has only some of the three, each tool call fails with a
ConfigError that names the missing variables.
Registration
The Claude Code user scope on SERVER registers napple, with no variable.
The launcher directory is the directory where tools/mcp.sh install napple puts the MCP launchers:
claude mcp add --scope user napple -- <launcher directory>/nappleClaude Code sessions that the owner opens on SERVER get the ten tools. napple is
not in plugin/.mcp.json.
In NOTT.app nodes
A Claude worker node on the SDK route also gets napple. The host
(harness/nott_harness/acp/node.py, Host.servers and Host.napple) adds it
when all of these are true:
The node is not Guara, a recipe node or an audit parent, and the host has a base plugin root. An orchestrator node is a worker and gets napple.
~/.nott/apple/is a directory.The launcher
nappleis in the same directory as the nspawn launcher, and it is the installer's MCP entry.The node workspace is not
~/.nott, a parent of it, or a directory in it.
Codex, qwen, AGY and forked Claude nodes do not get napple. A napple failure
(the launcher, the profile capture or the 4 MiB profile limit) removes napple
only, and the node starts. When the launcher exists but fails, the host writes
napple is not available in this node <node id>: <reason> to its journal.
napple runs on the host behind its own producer port, outside the node cage.
Its environment is only PATH, HOME and LANG, and its command is
napple mcp serve --upload-root <node workspace>. The agent's own tools cannot
read ~/.nott/apple/. Each napple call is a permission request to the owner.
With --upload-root, napple_build_upload opens the path once. It continues
only when /proc/self/fd shows a regular file inside the root, and it reads
every byte from that descriptor. It refuses a symbolic link out of the root, a
path outside the root, a directory and a FIFO. A release without the flag stops
at its argument parser, so the node starts without napple.
The key file must have mode 600. The server refuses a key file that other users can read.
The key and the JWT never enter a tool result or a log.
Not covered
nAPPLE does not cover these tasks:
Creating an app record. The API has GET only on
/v1/apps. Use the App Store Connect site.Xcode Cloud.
Sales.
Reviews.
App Store submission. This is the owner's act.
Screenshots.
Behavior
The server retries a GET that returns HTTP 429 at most 3 times. It honors
Retry-After.The server never retries POST or PATCH.
Pagination never follows a link outside the API root.
Each failure raises one typed error:
ConfigError,AuthError,AgreementError,NotFoundError,ConflictError,RateLimitError,ProtocolErrororUploadError.
Install and rollback
bash tools/mcp.sh install napple
bash tools/mcp.sh rollback nappleTests
Run the tests from mcps/napple:
TMPDIR=/var/tmp uv run --group dev pytest tests -qThe tests use a local HTTP server. They never reach Apple.
Where the build comes from
The M5 signs the iOS IPA with apps/apple/Scripts/ios_archive.py.
xtool on SERVER compiles only the NottKit library today. It cannot produce a distribution IPA yet.
Documentation
Need | Page |
Contributor development setup | |
Checks and security review | |
Documentation index and a first contribution | |
Setup, operation, and restoration | |
Services and trust boundaries | |
Complete MCP and CLI inventory | |
Installation | |
Processing choices | |
Existing data | |
Failure diagnosis | |
Direction | |
Changes |
Read contributing, conduct, and support.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
MCP server for Appcircle mobile CI/CD platform.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server to communicate with the App Store Connect API for iOS Developers2593 npm331MIT
- AlicenseBqualityAmaintenanceMCP server for managing Xcode Cloud workflows, builds, and test artifacts via the App Store Connect API.1720 npm1MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes the entire Apple App Store Connect API (1,200+ operations) as MCP tools, enabling AI assistants to query apps, manage builds, handle submissions, read analytics, and more.11 npmMIT
- AlicenseNot gradedqualityAmaintenanceThis MCP server provides access to Apple's App Store Connect API. It allows users to inspect apps, versions, builds, TestFlight groups, sales, users, and optionally edit metadata and manage testers.345 npm2MIT