Polish Public Tenders (e-Zamówienia/BZP) MCP avatar

Polish Public Tenders (e-Zamówienia/BZP) MCP

Pricing

from $2.00 / 1,000 find relevant polish tenders

Go to Apify Store
Polish Public Tenders (e-Zamówienia/BZP) MCP

Polish Public Tenders (e-Zamówienia/BZP) MCP

Find, analyze, and score Polish public tenders (BZP national notices): parsed requirements, deadlines, certificates, evaluation criteria, and bid-fit scoring against your company profile.

Pricing

from $2.00 / 1,000 find relevant polish tenders

Rating

0.0

(0)

Developer

Anton Aouat

Anton Aouat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

An MCP server that gives an AI agent clean access to Polish public tenders published on the national Biuletyn Zamówień Publicznych (BZP) notice board (e-Zamówienia platform). It finds tenders, parses each structured notice into requirements/deadlines/certificates, and scores bid-fit against a company profile — deterministically, with no LLM involved server-side.

Built for suppliers bidding on Polish public contracts, and the procurement-tech agencies and tools serving them.

Tools

ToolWhat it does
find_relevant_tendersSearch open BZP contract notices by CPV code, keywords, region (NUTS/województwo), order type, publication/deadline window, below-EU threshold. Pass a profile to rank results by bid-fit score. Returns concise summaries.
analyze_tenderFull structured breakdown of one tender: subject, buyer, CPV, deadlines, typed participation requirements, exclusion grounds, required documents, detected certificates, weighted evaluation criteria, submission language, bid-bond/security flags.
score_bid_opportunityScore one tender against a company profile (0–100) with a transparent factor breakdown, matches, gaps (e.g. missing certificates), and risks (short deadline, Polish-only, wadium). Unknown data is scored neutrally, never faked.
find_previous_winnersSearch awarded tenders (BZP result notices) by CPV, keywords, or buyer — competitive intelligence before bidding.
monitor_tender_changesFetch all published versions of one tender and return a structured diff of what changed: deadline, evaluation criteria, requirements, CPV. Stateless — re-call to keep watching.

Polish national (BZP) tenders only in v1 — no EU-wide TED notices.

Example

"Find road-works tenders in region PL32 under the EU threshold, closing in the next three weeks, and tell me if my company is a good fit."

// find_relevant_tenders
{ "cpvCodes": ["45233140-2"], "regions": ["PL32"], "belowEuOnly": true,
"profile": { "capabilities": ["road works"], "cpvCodes": ["45233140-2"], "regions": ["PL32"] } }
{
"count": 1,
"tenders": [{
"noticeNumber": "2026/BZP 00315918/01",
"subject": "„Wymiana nawierzchni dojazdu do windy w budynku Przychodni lekarskiej przy ul. Szpitalnej 11 w Barlinku”",
"buyer": "BARLINECKIE TOWARZYSTWO BUDOWNICTWA SPOŁECZNEGO SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ W BARLINKU",
"buyerRegion": "PL32",
"cpv": [{ "code": "45233140-2", "label": "Roboty drogowe" }],
"orderType": "Works",
"submissionDeadline": "2026-07-16T12:00:00Z",
"belowEu": true,
"matchScore": 78
}]
}

Then score_bid_opportunity with the same noticeNumber + profile returns the full factor breakdown behind that 78.

Use it

Buyers connect through a lightweight bridge package that forwards to the hosted, maintained Actor over its Standby /mcp endpoint and meters usage to your own Apify account — the same pattern every live server in this factory uses (e.g. finnish-trade-mcp-server, finnish-company-mcp-server):

{
"mcpServers": {
"ezamowienia-tenders": {
"command": "npx",
"args": ["-y", "ezamowienia-tenders-mcp-server"],
"env": { "APIFY_API_TOKEN": "your-apify-token" }
}
}
}

Get your token from Apify Console → Settings → Integrations → API token, after subscribing to the Actor on the Apify Store. Billing is per successful tool call (Pay-Per-Event).

(The ezamowienia-tenders-mcp-server bridge package and the live Actor URL land at deploy time — the bridge is built in a later task. Until then, use the Local (stdio) setup below.)

Local (stdio)

npm install
npm run build

Then register with any MCP client (e.g. Claude Desktop):

{
"mcpServers": {
"ezamowienia-tenders": { "command": "node", "args": ["/abs/path/to/servers/ezamowienia-tenders/dist/server.js"] }
}
}

No API key is required — the BZP notice board is open data.

Or run the HTTP transport locally: PORT=3999 npm run standbyPOST http://localhost:3999/mcp.

Develop

npm run typecheck # tsc --noEmit
npm test # vitest — unit tests vs recorded real fixtures (offline)
npm run smoke # live: boots the server, real MCP handshake + real BZP calls
npm run build # produces dist/

Windows: run tools directly (node ./node_modules/vitest/vitest.mjs run) or run npm scripts from PowerShell — this repo's path contains spaces, which breaks npm's .bin shims.

Architecture (small, single-purpose units):

  • src/bzp/client.ts — HTTP only: BZP mo-board notice search, throttle, TTL cache.
  • src/bzp/parse-notice.ts — the moat: parses each notice's structured HTML body into typed requirements, deadlines, exclusion grounds, certificates, and evaluation criteria.
  • src/bzp/normalize.ts — shape-mapping only: raw BZP notice → clean agent shape.
  • src/scoring/profile.ts + src/scoring/engine.ts — the CompanyProfile schema and the deterministic, weighted bid-fit scoring engine (no LLM).
  • src/tools.ts — MCP contracts only: the 5 tools + Pay-Per-Event billing hook.
  • src/server.ts — stdio transport. src/standby.ts — Apify Standby HTTP transport.

Data source & attribution

Data from Poland's Biuletyn Zamówień Publicznych (BZP), published via the e-Zamówienia platform operated by the Public Procurement Office (Urząd Zamówień Publicznych, UZP), Polish public-sector open data. This server is an independent tool and is not affiliated with, endorsed by, or sponsored by UZP or e-Zamówienia.

License

MIT