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 + Microsoft Copilot
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 Microsoft Copilot
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.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
BEX Expresstools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
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
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?