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 分