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.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Let your AI agent ship your iOS app to TestFlight, with every write marked for your approval.
Install
nAPPLE is not part of the no.tt installer. Run it from source with
uv:
uvx --from git+https://github.com/menot-you/n-apple napple --help
claude mcp add --scope user napple -- uvx --from git+https://github.com/menot-you/n-apple napple mcp serve --upload-root ~/builds--upload-root <dir> limits uploads to regular files inside that directory.
Without it, an upload opens any readable .ipa or .pkg path.
Related MCP server: xcode-cloud-mcp
How it works
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1B1916", "primaryTextColor": "#ECE7DE", "primaryBorderColor": "#E4733A", "lineColor": "#E4733A", "secondaryColor": "#151311", "tertiaryColor": "#0F0E0D", "fontFamily": "IBM Plex Mono, monospace"}}}%%
flowchart LR
agent["Your agent<br/>(any MCP client)"] -->|"stdio, 10 tools"| server["napple mcp serve"]
key["Team API key<br/>.p8 file, mode 600"] -->|"signs a JWT"| server
server -->|"6 read tools"| read["Accounts, apps, builds,<br/>groups, signing"]
server -->|"4 write tools,<br/>marked destructive"| write["Upload a build, create a bundle ID,<br/>certificate or profile"]
read & write --> asc["App Store Connect API"]
root["--upload-root"] -.->|"limits"| writeThe key and the JWT never enter a tool result or a log.
By the numbers
Counted on 2026-10-21. Tools: the MCP tools/list request to napple mcp serve.
Tests: uv run --group dev pytest --collect-only -q in each member root.
Why
Before | With nAPPLE |
A Ruby toolchain and a Fastfile to upload one build. | One Python MCP server. The agent calls |
A script guesses the next build number. |
|
A raw HTTP error, or a retry that posts twice. | One typed error per failure. Only a GET retries, at most 3 times on HTTP 429. |
The certificate private key goes to a tool. |
|
The key or the JWT shows up in a log. | The key and the JWT never enter a tool result or a log. The server refuses a key file that other users can read. |
Read tools change nothing in Apple. Write tools create or upload a real Apple asset. The server does not ask you itself. It marks each write tool as destructive, so a client that prompts asks you first. Do not auto-approve the write tools.
Quick start
Create a team API key in App Store Connect (Users and Access, Integrations).
Set three variables:
export NOTT_NAPPLE_KEY_ID=<key id> export NOTT_NAPPLE_ISSUER_ID=<issuer id> export NOTT_NAPPLE_KEY_PATH=<path to AuthKey .p8, mode 600>Register the server (see Install) and ask your agent: "Upload build.ipa to TestFlight and tell me when it is ready."
Tools
Tool | Kind | What it does |
| Read | Checks the API key and gives the number of apps it can see ( |
| Read | Lists the team's apps. |
| Read | Lists builds and gives the next build number. |
| Read | Shows one build and its processing state. |
| Read | Shows the App ID, capabilities and profiles of one bundle, and all certificates of the team. |
| Read | Lists the beta groups of one app (needs |
| Write | Uploads a build, commits it and polls until a terminal state. |
| Write | Creates a bundle ID. |
| Write | Creates a certificate from a CSR. |
| Write | Creates a provisioning profile. |
nAPPLE does not create app records, submit to the App Store, or touch Xcode Cloud, sales, reviews or screenshots. The full list is in Architecture.
The tests use a local HTTP server. They never reach Apple:
uv run --group dev pytest tests -qThe NOTT family
For AI agents
This section is for a language model that reads this repository.
What it is. nAPPLE is an MCP server and CLI for the App Store Connect API. It reads accounts, apps, builds, groups and signing, uploads builds, and creates bundle IDs, certificates and provisioning profiles.
What it is not. It is not fastlane, Xcode or an App Store submission tool. It does not create app records or touch Xcode Cloud, sales, reviews or screenshots. It does not ask before a write. The client must ask.
Entry points. The CLI is
napple(napple --help). The MCP server isnapple mcp serve [--upload-root PATH](stdio). The 10 tool names start withnapple_. The 4 write tools arenapple_build_upload,napple_bundle_create,napple_certificate_createandnapple_profile_create. Each one carriesdestructiveHint: true.Configuration. Three variables:
NOTT_NAPPLE_KEY_ID,NOTT_NAPPLE_ISSUER_IDandNOTT_NAPPLE_KEY_PATH. When none of the three is set, the server reads~/.nott/apple/: oneAuthKey_<key id>.p8file and anissuer_idfile. The server refuses a key file that other users can read.Invariants. Get approval from the person before each write tool call. Never put the key or a JWT in a result, a log or a commit. Only a GET retries. An upload is confined to regular files inside
--upload-rootonly when you pass--upload-root.Full reference. docs/REFERENCE.md lists every tool and command. docs/ARCHITECTURE.md holds the trust boundaries. llms.txt holds the same facts in the llms.txt format.
Documentation
Need | Page |
Contributor development setup | |
Checks and security review | |
Documentation index and a first contribution | |
Setup, operation, and restoration | |
Services, trust boundaries and operation details | |
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.
Toolstile is a managed MCP gateway that connects remote MCP servers behind one endpoint, with per-agent permissions, shared accounts and activity logs. Connect at https://mcp.toolstile.com/mcp over Streamable HTTP with OAuth; sign in at https://toolstile.com, select a workspace and connect your upstream servers. Available tools, resources and prompts depend on that workspace and the agent's granted access.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server to communicate with the App Store Connect API for iOS Developers25147 npm330MIT
- AlicenseBqualityBmaintenanceMCP server for managing Xcode Cloud workflows, builds, and test artifacts via the App Store Connect API.1730 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.16 npm1MIT
- AlicenseNot gradedqualityBmaintenanceThis 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.840 npm2MIT