mcpField
M
mcp-open-tender-rfp-finder

mcp-open-tender-rfp-finder

Local
github.com/mambalabsdevBusiness & Marketing0Updated 1w ago

About mcp-open-tender-rfp-finder

An MCP server for finding open public tenders and RFPs in official UK, EU, and Canadian notice sources. It supports keyword, code, country, deadline, and value filters, returning structured notice details for procurement research.

Key features

  1. 01Search four official tender sources
  2. 02Filter by keywords, CPV codes, and countries
  3. 03Keep only notices with open deadlines
  4. 04Filter by publication window and value
  5. 05Return notice and buyer details

Use cases

  1. 01Find current public tenders by sector
  2. 02Compare deadlines for notices in selected countries
  3. 03Identify procurement opportunities above a value threshold

MCP support

Exposes the find_open_tenders tool to MCP clients. It starts an Apify actor run and returns the resulting dataset rows.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-mambabuilt-mcp-open-tender-rfp-finder": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-open-tender-rfp-finder"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>"
}
}
}
}
Run commandnpx -y @mambalabsdev/mcp-open-tender-rfp-finder
Environment variables to set
APIFY_TOKENSecretApify API token from https://console.apify.com/account/integrations

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mambalabsdev/mcp-open-tender-rfp-finder1.0.0

Tools

1

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
portalsarrayNoPortals to read. Default all four.
keywordsarrayNoWords or phrases to find in the notice title or description, any case. A notice matches any of them. EU TED matches over the full notice text in every language. Empty: every open notice in the window. Up to 25.
only_newenumNoSkip notices an earlier run with the same state_key returned. Default false.true | false
countriesarrayNoTwo letter buyer country codes, for example GB, DE, CA. A portal that covers none of them is skipped.
min_valuestringNoDrop notices valued below this number, in the notice currency. Notices with no value are kept.
only_openenumNoDrop notices whose deadline has passed. Default true.true | false
state_keystringNoNames the seen list for only_new.
max_noticesstringNoNotice rows per run, newest first, up to 5000. Each notice row is billed. Default 100.
cpv_prefixesarrayNoKeep notices with a CPV code that starts with one of these, for example 72 or 48000000. CanadaBuys uses UNSPSC codes, so a CPV filter leaves it out.
max_charge_usdstringNoOptional. The run stops before any row that would take its charges over this amount.
exclude_keywordsarrayNoDrop a notice whose title or description contains any of these.
published_within_daysstringNoPublication window in days, 1 to 90, today included. Default 14.

Details

From the project README

Open Tender and RFP Finder MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

An MCP server for the Mamba Labs Open Tender and RFP Finder actor on Apify. Give it keywords, CPV codes, or buyer countries. Each run reads four official public notice portals and returns one row per open tender or RFP notice.

What's Inside

What it does

The actor reads UK Contracts Finder, UK Find a Tender, EU TED (Tenders Electronic Daily), and the CanadaBuys open tender file, all official open data with no key. It keeps the notices that match your keywords and filters and returns one flat row per notice: buyer, buyer country, publication day, response deadline, days to deadline, estimated value and currency, CPV or UNSPSC codes, contract type, procedure, the buyer contact email the notice publishes, and a link. Filtered notices are never billed, and when nothing matches one free row says why.

All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.

Quick start

You need Node.js 18 or newer and an Apify account with an API token.

Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:

{
  "mcpServers": {
    "mamba-open-tender-rfp-finder": {
      "command": "npx",
      "args": [
        "-y",
        "@mambalabsdev/mcp-open-tender-rfp-finder"
      ],
      "env": {
        "APIFY_TOKEN": "your-apify-token"
      }
    }
  }
}

Restart the client. The find_open_tenders tool appears.

Prerequisites

Example prompts

  • "Find open UK and Irish public tenders for software published this week."
  • "Which German and Dutch public bodies are buying IT services worth more than 100,000 EUR right now?"
  • "List open CanadaBuys RFPs for marketing services with their deadlines."

Tool

find_open_tenders. One tool. Example arguments:

{
  "keywords": [
    "software"
  ],
  "countries": [
    "GB"
  ],
  "published_within_days": "7"
}

Inputs

Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.

InputTypeDescription
keywordsarrayWords or phrases to find in the notice title or description, any case. A notice matches any of them. EU TED matches over the full notice text in every language. Empty: every open notice in the window. Up to 25.
exclude_keywordsarrayDrop a notice whose title or description contains any of these.
cpv_prefixesarrayKeep notices with a CPV code that starts with one of these, for example 72 or 48000000. CanadaBuys uses UNSPSC codes, so a CPV filter leaves it out.
countriesarrayTwo letter buyer country codes, for example GB, DE, CA. A portal that covers none of them is skipped.
portalsarrayPortals to read. Default all four.
published_within_daysstringPublication window in days, 1 to 90, today included. Default 14.
only_openstringDrop notices whose deadline has passed. Default true.
min_valuestringDrop notices valued below this number, in the notice currency. Notices with no value are kept.
max_noticesstringNotice rows per run, newest first, up to 5000. Each notice row is billed. Default 100.
only_newstringSkip notices an earlier run with the same state_key returned. Default false.
state_keystringNames the seen list for only_new.
max_charge_usdstringOptional. The run stops before any row that would take its charges over this amount.

Pricing

Pay per event on Apify, billed to your Apify account. Prices in USD.

EventFree planBronzeSilverGold
notice-row, per notice row$0.003$0.00285$0.0027$0.00255
apify-actor-start, per run start$0.002$0.002$0.002$0.002

The no results row and notices skipped by only_new are free.

Your keys

The actor needs no key. Every portal is an official open data API or file, read directly, and the actor holds no key of any kind. Mamba Labs pays the platform and proxy costs of the run.

Full actor documentation

apify.com/mambalabs/open-tender-rfp-finder

License

MIT. See LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.