Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the BEX Express in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
BEX Express courier (Serbia) from an AI agent: shipment status history by shipment number, address labels as PDF, the BEX address directory of municipalities, places and streets, and parcel shops and depots. Creating and cancelling shipments is included, installed switched off.
Try asking
Example prompts for BEX Express
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → BEX Express, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
BEX Express + ChatGPT
BEX Express courier (Serbia) from an AI agent: shipment status history by shipment number, address labels as PDF, the BEX address directory of municipalities, places and streets, and parcel shops and depots. Creating and cancelling shipments is included, installed switched off.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
BEX_API_TOKEN
Step 1 — Get credentials
Setting up takes about 5 minutes once BEX has sent you the key. You need a contract with BEX Express, the Serbian courier, and an API key that BEX issues for that contract.
- If you are not a BEX customer yet, ask for an offer at [email protected]: the API is only for contract customers.
- Write to [email protected], ask for API access and name the contract it is for.
- BEX replies with an API key and your KlijentId. Paste the key into
BEX_API_TOKEN; it is sent as theX-AUTH-TOKENheader. Keep the KlijentId at hand: it identifies your company as the sender of a shipment. - Install the connector and run
bex_express_list_municipalities. If it returns the list of municipalities, the key works.
What it reads: the status history of a shipment by its BEX shipment number (the one printed on the label), with every scan, status, date, place and the next expected event; the address labels of a shipment as a PDF; the BEX address directory of municipalities (opštine), places (mesta) with postcode, and streets; and about 120 parcel shops and depots with code, address, opening hours and coordinates.
Status codes: 1 registered, 11 picked up from the sender, 21 delivered, 25 to be returned to the sender, 30 returned to the sender, -21 address check by the call centre, -51 at customs. The AI tells you what they mean in plain words.
Labels: one A6 label per page, or four labels on an A4 sheet, for every parcel of a shipment or only one. The PDF is large, so the AI fetches it only when you want to print or save a label.
Addresses use BEX ids: BEX describes an address by municipality, place and street. The AI looks them up step by step, one municipality or one place at a time. The connector never asks BEX for every street of Serbia at once (almost 100,000 of them).
Two hosts and port 62503: tracking, labels and the address directory run on the normal HTTPS port, while the parcel shop list and creating and cancelling shipments run on https://api.bex.rs:62503. That port is reachable from AnythingMCP Cloud; on a self-hosted server behind a firewall that only allows port 443, those three tools fail.
Switched off at install: bex_express_create_shipments and bex_express_cancel_shipment. They announce real shipments for pickup by a courier or cancel them, so an administrator turns them on deliberately. Even then the AI first shows you the full shipment (sender, receiver, parcels, cash on delivery, insurance, who pays) or the shipment number to cancel, and waits for your yes. A shipment the courier has already picked up cannot be cancelled.
Common errors: 401 means the key is wrong or missing. 403 means the key works but that method is not enabled for your contract: ask [email protected]. Many BEX methods answer HTTP 200 with state false and a reason in err, so the AI reads those fields before reporting a result. The parcel shop list is the exception: there BEX sends state false with the text ok even when the list is complete.
The connector does not cover invoices or cash on delivery payouts, and it does not create or cancel shipments unless an administrator has turned those tools on.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in ChatGPT
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
ChatGPT adds MCP servers as plugins on its Plugins page, on the web and on paid plans. Developer mode is no longer needed. In a Business workspace only admins and owners can add one; in Enterprise and Edu an admin can grant the Create plugins with MCPs permission.
- Go to chatgpt.com/plugins, click +, then Add custom MCP server.
- Enter a name, e.g. Name:
BEX Express. - Under Connection, enter the Server URL
https://cloud.anythingmcp.com/mcp/YOUR_SERVER_IDand keep Authentication on OAuth. - Select I understand and want to continue, then Create as a plugin. When ChatGPT asks, sign in to AnythingMCP and allow access.
- Install the new plugin from your personal plugins, then type @ in a chat and pick it.
Available tools
| Tool | What it does |
|---|---|
bex_express_get_shipment_history | Get the status history of a BEX shipment by its shipment number: every scan with status name, scan and reason code, date, place, timestamp… |
bex_express_get_label | Get the address labels of a shipment as a Base64-encoded PDF (parcelLabel), with state true on success or false and an err text. page_size… |
bex_express_list_municipalities | List the municipalities (opštine) in the BEX address directory with id and name |
bex_express_list_settlements | List the places (mesta) of one municipality in the BEX address directory with id, name, postcode and municipality id |
bex_express_list_streets | List the streets of one place in the BEX address directory with id, name, old name and place id |
bex_express_list_parcel_shops | List BEX parcel shops and depots with code, region, name, city, street and house number, opening hours on weekdays and Saturday, and… |
bex_express_create_shipments | Create shipments and announce them to BEX for pickup by a courier (postShipments) |
bex_express_cancel_shipment | Cancel (delete) an announced BEX shipment by its shipment number |
Example prompts
- "Where is shipment 206897445 right now, and when is the next step expected?"
- "Which of these shipments went back to the sender: 206897445, 206897446 and 206897447?"
- "Which BEX parcel shops are there in Novi Sad, and are they open on Saturday?"
- "Get me the labels of shipment 206897445, four per A4 page, so I can print them."
- "Does BEX know Bulevar oslobođenja in Novi Sad? Give me the place and street ids for a shipment address."
FAQ
Does the free ChatGPT plan work with custom MCP servers? OpenAI documents custom MCP servers for paid plans only; the Free plan is not on its list.
Next steps
Was this guide helpful?