Continente MCP

io.github.andredelgado由 GitHub 帳號 andredelgado 發布v0.13.0更新於 Nov 7, 2026

Unofficial Continente.pt shopping: search products, read favorites and orders, manage the cart.

已驗證STDIO僅桌面效率與工作流商業與電商

概覽

AI 產生的概覽

非官方的 Continente.pt 購物伺服器:可搜尋商品、查看收藏與訂單,並填寫或修改購物車,結帳仍在網站上進行。

可以做什麼
  • 搜尋商品目錄,讀取商品詳情、價格、銷售規則、標籤、過敏原與營養資訊
  • 並排顯示候選商品,讓使用者自行挑選
  • 讀取帳戶收藏、近期訂單與常購商品排行
  • 讀取購物車、預覽變更,並新增、設定、移除或清空購物車項目
  • 列出 Cartão Continente 優惠券並設定購物車使用哪些
  • 在不連線網站的情況下回報本機工作階段、登入與快取狀態
適用情境
適合在 Continente.pt 購物、希望由助理規劃每週採買清單、比較包裝規格與單價、查看標籤中的過敏原,或依歷史訂單補貨的情境。搜尋與商品詳情不需帳戶;購物車、收藏與訂單則需要帳戶。
執行需求
透過 npx(需 Node.js 22 或更新版本)以 stdio 在本機執行,或在 macOS、Windows 上使用 Claude Desktop 擴充功能。購物車、收藏與訂單需要 Continente.pt 帳戶,透過 CONTINENTE_EMAIL 與 CONTINENTE_PASSWORD,或由 CONTINENTE_CREDENTIALS_FILE 指定的憑證檔案提供。首次使用會自動下載 Chromium(約 150 MB)。
安裝前請注意
伺服器會保存 Continente 電子郵件與密碼(或從憑證檔案讀取),並以無頭瀏覽器操作網站,網站改版時可能失效。它會修改真實購物車:新增、設定、移除、清空及優惠券工具都會寫入帳戶;未確認的變更可能已經生效,不能盲目重試。不處理結帳、付款與配送時段。屬非官方專案,與 Continente 無關聯。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Continente MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Continente MCP

[CI] [npm] [License: MIT]

An MCP server that lets AI assistants shop at Continente.pt: search products, check prices and sale rules, read your favorites and past orders, and fill your cart. Checkout and payment always stay on the website.

Unofficial. This project is not affiliated with, endorsed by or supported by Continente or MC Sonae. It automates the public website with a headless browser, may break when the site changes, and should be used in line with the website's terms. You are responsible for anything placed in your cart.

Features

  • Catalogue search and product details, with exact prices, unit prices, availability and sale rules for weighted and bulk products.
  • Safe cart changes. Every change is confirmed by reading the cart back. If a change cannot be confirmed, the result says so and tells the assistant to check the cart instead of retrying.
  • Your account: favorites, order history and a ranking of the products you buy most.
  • Runs locally over stdio. Your credentials and session are stored on your computer and sent only to Continente.pt.
  • Built-in guidance. The server tells the assistant the cart rules as soon as it connects, and offers a basket-planner prompt with the full shopping workflow. Nothing extra to install; the same guide also ships as a skill.

Requirements

  • A Continente.pt account for account features (search and product details work without one)
  • Claude Desktop on macOS or Windows for the one-click install, or Node.js 22 or newer for any other MCP client

The server drives the website with Chromium, which it downloads automatically the first time it needs it (about 150 MB, once).

Install in Claude Desktop (one click)

  1. Download continente-mcp.mcpb from the latest release.
  2. Open it. Claude Desktop shows an install dialog; click Install.
  3. Enter your Continente email and password when asked. Claude Desktop keeps the password in its secure settings storage.

That's it. The server is also listed in the MCP Registry as io.github.andredelgado/continente-mcp, so clients that browse the registry can find it. To use 1Password instead of storing the password in Claude Desktop, use the manual setup below.

Updates

The server checks npm once a day for a newer release. When there is one, it tells the assistant, so Claude can mention it, and get_session_status shows it.

  • Extension: download the new continente-mcp.mcpb and open it. Claude Desktop updates the extension in place and keeps your email and password.
  • npx setups: using continentept-mcp@latest picks up new versions when the client restarts.
  • Release emails: on GitHub, choose Watch → Custom → Releases.

Manual setup (any MCP client)

1. Save your credentials in ~/.continentept-mcp/credentials.env (see configuration for other options):

sh
mkdir -p ~/.continentept-mcp && chmod 700 ~/.continentept-mcpprintf '[email protected]\nCONTINENTE_PASSWORD=your-password\n' > ~/.continentept-mcp/credentials.envchmod 600 ~/.continentept-mcp/credentials.env

Using 1Password? Skip the file and pass secret references through op run instead; see Using 1Password.

Optionally check that login works:

sh
npx -y continentept-mcp login

2. Add the server to your MCP client.

Claude Code:

sh
claude mcp add continente -- npx -y continentept-mcp

Claude Desktop, Cursor and other clients (claude_desktop_config.json, mcp.json, ...):

json
{  "mcpServers": {    "continente": {      "command": "npx",      "args": ["-y", "continentept-mcp"]    }  }}

To keep the credentials file elsewhere, add "env": { "CONTINENTE_CREDENTIALS_FILE": "/absolute/path/to/credentials.env" }.

Chromium downloads itself on first use. To fetch it ahead of time, run npx -y continentept-mcp install-browser (on Linux, add --with-deps for the system libraries it needs).

Then ask your assistant something like "Add semi-skimmed milk and a dozen eggs to my Continente cart" or "What do I usually buy? Build me a list for this week."

Tools

ToolWhat it does
search_productsSearch the catalogue in relevance order, with favorites marked and a cursor for more
get_productPrice, pack size, availability and sale rules for one product
get_product_labelsIngredients, allergens and nutrition as the label declares them
choose_productsLet the user pick between products, with photos where the client supports it
list_favoritesYour saved favorites (refresh: true fetches the latest)
get_cartCart lines, quantities, bags and totals
preview_cart_changesWhat a list of changes would do and cost, without changing the cart
add_cart_itemAdd an amount on top of what is in the cart
set_cart_item_quantityMake the cart hold exactly a quantity; zero removes
remove_cart_itemRemove a line from the cart
clear_cartEmpty the whole cart in one confirmed step
list_couponsYour Cartão Continente coupons, and which are selected in the cart
set_cart_couponsChoose which coupons the cart uses, confirmed by reading the cart back
list_ordersRecent orders with their product lines
get_orderOne order's product lines
list_frequently_bought_productsProducts ranked by how often you order them
get_session_statusLocal login, cookie and cache state (no network)

See the tool reference for inputs, outputs, error codes and limits.

About uncertain cart changes

A cart change can fail after the request has reached the website, for example on a timeout. In that case the result has mutation.outcome: "unknown" and asks the client to call get_cart before doing anything else. The server never retries such a change on its own, and clients should not either: repeating an add_cart_item could add the item twice.

Guidance for the assistant

When a client connects, the server sends short instructions with these cart rules, so the assistant follows them without any setup. For planning a shopping list, pick the basket-planner prompt from your client's prompt or attachment menu, optionally with a request such as "weekly basket for two".

The same guide is available as a skill in skills/basket-planner. Clients that support skills, such as Claude Desktop (Settings → Capabilities → Skills) or Claude Code (~/.claude/skills/), then apply it automatically whenever you ask about groceries.

Command line

text
continentept-mcp                    Start the MCP server on stdiocontinentept-mcp login              Sign in and save the session (--show-browser to watch)continentept-mcp install-browser    Download Chromium now instead of on first use (extra arguments go to Playwright)continentept-mcp --version

Limitations

  • One account per server process.
  • Searches read at most five result pages and order listings at most ten pages, so very broad queries or long histories are reported as incomplete rather than read in full.
  • Login handles the standard email and password flow. When Continente asks you to confirm you are not a robot, the server opens a sign-in window for you to tick the box; where no window can be shown, run continentept-mcp login --show-browser and do it there. The server never answers that check itself.
  • There are no checkout, payment, delivery-slot or favorites-editing tools.

Documentation

License

MIT

來源:README.md,提交 379a11a

工具

17

search_products

Search products

Search the Continente.pt catalogue. No login needed. Results keep the website's relevance order and mark saved favorites; pass favoritesFirst to move them to the top. Each shows its price with what it is for (per item, piece, kg or litre), any promotions, the pack size, brand, category and productId. Filter with category, excludeCategory or brand, and sort by unit_price to compare packs. Pass nextCursor back as cursor, with the same query, for the next products.

輸入參數sortbrandlimitquery必填cursorcategoryfavoritesFirstexcludeCategory

get_product

Get product

Get one product by productId: price, promotions with their dates, pack size, availability and sale rules (sale unit, minimum, maximum and step). A multi-buy or nth-unit offer is applied by the cart, not in the price shown. Availability is what the product page shows this session, signed in or not; it is not a delivery-slot stock check. Check this before choosing a quantity for weighted or bulk products. No login needed.

輸入參數productId必填

choose_products

Choose products

Show the user the open choices of a request side by side, with photos where the client supports it, so they pick one product for each. Use it only when the user must decide between candidates, such as two milks or 500 g against 1 kg; settle everything else yourself (favorites, usual purchases, cheapest per kg). Put all open choices of a list in one call, at most 10, each with 2 to 4 candidates and your suggestion. It changes nothing: the choices come back as a chat message, then change the cart with set_cart_item_quantity.

輸入參數decisions必填

get_product_labels

Get product labels

Ingredients, allergens and nutrition for up to 20 products, as the website's copy of each label declares them: the ingredient list, the words it prints in capitals (how labels mark allergens), the allergen and "may contain traces" statements, and nutrients per 100 g or ml. Use it only when a task needs them, such as checking vegan, gluten or allergens, or adding up protein. Nothing is inferred: absence of an allergen in these fields is not a "free from" claim, and the packaging prevails. No login needed.

輸入參數productIds必填

list_favorites

List favorites

List the products saved as favorites on the account. Uses a local snapshot that is refreshed automatically when missing; snapshots older than 24 hours are marked stale. Pass refresh: true to fetch the current list from the website.

輸入參數refresh

get_cart

Get cart

Read the shopping cart: each line with productId, cartItemId, kind (product or bag), quantity, unit price (per item or per kg) and lineTotal, its promotions and lineTotalBeforeDiscount when the cart discounts the line, plus the totals (products, bags, deposit, delivery, discounts and grandTotal, the amount to pay), and checkout: the minimum order and whether the delivery fee is free with EntregaZero or set at checkout by day, slot and area (it is not in the totals until then). Use it to check current quantities before changing them and to verify any uncertain change.

無需輸入參數。

preview_cart_changes

Preview cart changes

Check products and the total wanted of each before changing the cart, without changing anything. For each: what the cart holds, what set_cart_item_quantity would do (add, increase, decrease, remove or none), why it would be refused (such as a minimum or step), availability, pack details and the estimated cost, plus the products total after the changes with its minimum order and delivery fee. Reads one product page per item, at most 30. Prices and stock can change before you apply it.

輸入參數items必填

add_cart_item

Add to cart

Add an amount of a product to the cart, on top of any quantity already there. quantity is in the product sale unit (default 1). Use set_cart_item_quantity instead when the user wants a specific total. If the result has mutation.outcome "unknown", the cart may have changed: call get_cart before any further change and never repeat the request automatically.

輸入參數quantityproductId必填cartItemId

set_cart_item_quantity

Set cart quantity

Make the cart hold exactly this quantity of a product, adding it if it is not there yet. Zero removes it. Pass cartItemId from get_cart when the product has more than one line. If the result has mutation.outcome "unknown", the cart may have changed: call get_cart before any further change and never repeat the request automatically.

輸入參數quantity必填productId必填cartItemId

remove_cart_item

Remove from cart

Remove a product line from the cart. Succeeds without changes if it is already absent. Pass cartItemId from get_cart when the product has more than one line. If the result has mutation.outcome "unknown", the cart may have changed: call get_cart before any further change and never repeat the request automatically.

輸入參數productId必填cartItemId

clear_cart

Empty cart

Remove every product from the cart in one step, with the website's own "remove all" action, and confirm the cart is empty. Only when the user asks to empty or clear the whole cart; pass confirm: true. To remove some products, use remove_cart_item. If the result has mutation.outcome "unknown", the cart may have changed: call get_cart before any further change and never repeat the request automatically.

輸入參數confirm必填

list_coupons

List coupons

List the Cartão Continente coupons on the account page, with each one's couponId, description, benefit and availability as shown, and whether it is selected in the cart (null when the cart has no coupon choices, for example because it is empty). Whether a coupon applies to the cart and whether coupons combine are not stated. Needs the account to be signed in.

無需輸入參數。

set_cart_coupons

Select cart coupons

Make exactly these coupons the cart's selection, by couponId from list_coupons; an empty list removes them all. Only when the user asks to use or stop using coupons. It submits the cart's own coupon form and confirms the result by reading the cart back. A coupon is applied at checkout, on the website. If the result has mutation.outcome "unknown", the selection may have changed: call list_coupons before any further change and never repeat the request automatically.

輸入參數couponIds必填

list_orders

List orders

List recent orders, newest first, with their product lines. Each order has an orderId for get_order. Use detailLimit or includeLines: false to read fewer details, and pass the returned nextCursor as cursor to continue.

輸入參數limitcursordetailLimitincludeLines

get_order

Get order

Get the product lines of one order by its orderId from list_orders (not the displayed order number).

輸入參數orderId必填

list_frequently_bought_products

List frequently bought products

Rank products by how many recent orders contained them, with total quantities per unit. orderLimit sets how many recent orders to read (default 10); limit caps the products returned (default 25). Useful for building a usual shopping list.

輸入參數limitorderLimit

get_session_status

Get session status

Report local state without contacting the website: browser status, whether credentials and saved cookies exist, the last observed login state and favorites snapshot freshness. Never returns secrets.

無需輸入參數。

版本歷史

9
  1. v0.13.0最新Nov 4, 2026
  2. v0.12.1Oct 26, 2026
  3. v0.11.0Oct 17, 2026
  4. v0.10.0Oct 17, 2026
  5. v0.9.0Oct 16, 2026
  6. v0.8.0Oct 16, 2026
  7. v0.6.1Oct 16, 2026
  8. v0.6.0Oct 15, 2026
  9. v0.4.0Oct 15, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分