Skip to main content
Glama
Apple Store MCP
by washedguy

Apple Store MCP

A read-only MCP server for browsing Apple Store products, configurations, prices, delivery estimates and store pickup. It uses HTTP requests and does not require an Apple account or browser. It cannot place orders or reserve products.

Install

  1. Install uv.

  2. Add this server to your MCP client's configuration:

{
  "mcpServers": {
    "apple-store": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/washedguy/apple-store-mcp.git",
        "apple-store-mcp"
      ]
    }
  }
}

Restart your MCP client. The location of this configuration depends on the client. uvx downloads and runs the server; no checkout is needed. If your client cannot find uvx, use the absolute path shown by which uvx (macOS/Linux) or where uvx (Windows).

Related MCP server: MCP-project

Use it

Ask your MCP client questions such as:

  • “Find the iPhone Duo in Germany and show its colors and storage prices.”

  • “What are the delivery estimates for these variants to postcode 60313?”

  • “Which Apple Stores near Frankfurt have this model available for pickup?”

  • “Show MacBook Pro options and the price with 48 GB of memory.”

Use list_storefronts to see the supported countries and languages. Prices, delivery estimates and pickup availability are specific to the selected storefront and can change. A delivery estimate or pickup quote is not a reservation or exact inventory count.

How the tools work together

  1. search_products finds product pages. By default it uses Apple's sitemap, which is useful for discovery but is not a complete catalog of individual products.

  2. explore_product follows a product page to buying choices. For supported pages it returns named variants or configuration options and prices. get_product also returns available product details and part numbers.

  3. Add location to explore_product for nearby store quotes and postal_code for delivery estimates. For a configurable product, pass its returned selection back as options when changing a choice to preserve the rest of the configuration. If a check fails, product data is retained and the failure appears in issues.

  4. Alternatively, use check_delivery and check_variant_pickup with part numbers, or list_apple_stores to browse a country's store directory.

Use compare_availability to check several pickup locations and delivery postcodes together. Set all_stores: true to attempt all stores in a country with at most 30 Apple Stores. The response identifies failed checks, missing stores, missing variant quotes and unknown statuses; complete refers to the requested checks, not every possible postcode or retailer. Each store and delivery result carries its own observation time. All-store checks may take a minute or longer.

The lower-level get_configuration_options, get_configuration_pickup and check_configuration_delivery tools accept Apple's collection and dimension identifiers. browse_sitemap and find_stores provide additional discovery options. The server is read-only.

Limitations

  • Apple’s interfaces are unofficial and may change or block requests. Coverage varies by product and country; unknown or missing data does not mean an item is unavailable.

  • The server has been live-tested with German, US, UK, Japanese, Swiss French, Belgian Dutch and French-Canadian product pages; this is not a guarantee for every product, carrier or storefront. Some carrier-specific details may not be represented.

  • An HTTP 541 response is reported as blocked; its precise cause is not inferred. Failed checks are not reported as out of stock.

  • The sitemap does not list every variant. Apple search is available with source: apple_search; its accessories tab can include purchasable products and prices.

  • Delivery estimates are supported for discrete part numbers and supported configurable kits. Configurable-kit delivery was verified with a German MacBook Pro; coverage for other products and storefronts is not yet established. Comparing delivery across postcodes requires choosing those postcodes.

  • Configurator prices can be starting prices. Option price changes depend on the selected configuration; upgrades may require changing other choices.

  • Search, product and store results use short process-local caches. Use fresh: true where available to bypass them.

Development

git clone https://github.com/washedguy/apple-store-mcp.git
cd apple-store-mcp
uv sync
uv run ruff check apple_store_mcp tests
uv run python -m unittest discover -s tests -v
uv build

Run uv run apple-store-mcp to start the stdio server, or uv run python -m apple_store_mcp --config to print a local client configuration. uv run python -m apple_store_mcp --check de runs a live diagnostic; Apple can block or rate-limit requests. Optional proxies use the standard HTTPS_PROXY environment variable; see .env.example.

CI runs offline fixtures and a real stdio MCP client test. Maintainers can optionally run the live Germany diagnostic through the GitHub Actions workflow's manual live_check input; a live failure may reflect Apple blocking the runner.

Unofficial project, not affiliated with Apple. Licensed under the MIT License.

Available Tools

13 tools
browse_sitemapA

Browse the Apple Store sitemap for a country and return links, optionally filtered by a keyword. Useful for discovering product pages when search is unavailable.

Inputs: fresh, query, country, language. Returns: cache, count, links, query, +4 more

check_configuration_deliveryA

Check delivery estimates for a configurable product. The returned configuration identifies the checked selections. No purchase or reservation is made; a missing estimate is unknown.

Inputs: buy_url (required), collection (required), selections (required), postal_code (required), +2 more. Returns: country, language, products, observed_at, +2 more

check_deliveryA

Read current delivery estimates for product variants and a postal code. No purchase or reservation is made. A missing estimate means unknown, not unavailable.

Inputs: buy_url (required), postal_code (required), part_numbers (required), country, +1 more. Returns: country, language, products, observed_at, +1 more

check_variant_pickupB

Read pickup availability quotes for product variants at nearby stores. Results are estimates, not reservations or stock counts.

Inputs: buy_url (required), location (required), part_numbers (required), country, +1 more. Returns: stores, country, language, location, +1 more

compare_availabilityA

Compare pickup and delivery estimates for variants. Failed, missing and unchecked results are reported as unknown. Read-only; does not reserve or purchase.

Inputs: buy_url (required), part_numbers (required), country, language, +3 more. Returns: note, errors, pickup, country, +11 more

explore_productA

Explore product choices, variants and prices; add a location for nearby store quotes or postal_code for delivery estimates. Read-only; no reservation or purchase.

Inputs: url (required), country, options, language, +2 more. Returns: url, kind, price, issues, +11 more

find_storesB

Find Apple retail stores in the selected country. Returns store names, addresses, phone numbers and coordinates where available.

Inputs: query (required), fresh, country, language. Returns: cache, count, query, stores, +4 more

get_configuration_optionsA

Get live configuration choices and relative price deltas. Upgrade choices may require changing other dimensions; they are not necessarily compatible. The selected price and deltas come from Apple and depend on the returned selected dimensions. Identifiers and coverage vary by product and storefront.

Inputs: collection (required), selections (required), country, language. Returns: reset, country, currency, language, +10 more

get_configuration_pickupA

Check price, options and nearby store availability for a configuration. Read-only: does not reserve or purchase anything. The returned configuration identifies the checked product. Apple may block or change the endpoint.

Inputs: buy_url (required), location (required), collection (required), selections (required), +2 more. Returns: note, stores, country, language, +4 more

get_productA

Read product details from an Apple Store product page by part number, slug, or URL, including price, availability, description, images and specifications where available.

Inputs: reference (required), fresh, country, language. Returns: cache, found, reason, country, +5 more

list_apple_storesB

List Apple retail stores published in the selected country's store directory.

Inputs: country, language. Returns: count, stores, country, observed_at

list_storefrontsA

List supported Apple Store countries, shop languages, currencies and URLs. Product and store IDs are country-specific.

Inputs: no named parameters. Returns: storefronts

search_productsA

Find sitemap pages by default; use apple_search for Apple search tabs and priced accessories. Sitemap results are not a complete product catalog and do not have variant prices. Apple search filters apply locally to one page.

Inputs: query (required), tab, page, brand, +6 more. Returns: tab, note, page, cache, +15 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 13 tools

    Disambiguation2/5

    Several pairs are functionally near-identical: find_stores vs list_apple_stores (both return stores for a country), and search_products vs browse_sitemap (both traverse the sitemap to discover product pages). The availability cluster (compare_availability, check_variant_pickup, check_delivery, check_configuration_delivery, get_configuration_pickup) has real pickup/delivery distinctions but enough overlap that an agent can easily pick the wrong one, especially between compare_availability and the individual check_* tools.

    Naming Consistency4/5

    All names are snake_case verb_noun (get_product, check_delivery, browse_sitemap), which is a clear predictable pattern. Minor drift: 'list_apple_stores' injects the vendor name where the sibling uses plain 'find_stores', and verbs vary broadly (find/list/search/get/explore/check/compare/browse) for similar read operations.

    Tool Count4/5

    13 tools sits comfortably in a well-scoped range for a read-only storefront/product/availability server. The count is slightly inflated by redundant store-listing and availability tools that could be consolidated into 2-3, but nothing feels gratuitous at a per-domain level.

    Completeness4/5

    The lifecycle is well covered for a read-only server: store discovery, storefront metadata, product search/detail, configuration options, and pickup/delivery estimates, with purchase explicitly out of scope. Minor gaps remain—no get_store for store details/hours by ID and no direct category or product-listing primitive beyond sitemap paging.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables product discovery, session-scoped carts, and confirmation-gated checkout through natural language, with deterministic routing and safety features.
      5 npm
      ISC
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables users to interact with an e-commerce shopping assistant using natural language to search products, check prices and ratings, compare items, and get personalized recommendations.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables agents to search a public product catalog, inspect product details and variants, browse collections, find gifts by occasion, and generate cart links for users to review and complete checkout themselves.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides LLM clients read-only access to product search, pricing, discounts, catalog categories, store locations, and per-store availability through the retailer's official integration API.
      MIT