vergabe-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vergabe-mcpFind open IT tenders flagged as suitable for freelancers."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vergabe-mcp
An MCP server for oeffentlichevergabe.de, the German federal public-tender portal. Germany publishes every public tender there and offers a bulk open-data export, but that export lags a day, ships as daily ZIPs, and cannot filter — you download everything and sort it out yourself. The portal's own search API can filter (CPV code, region, deadline window, the eForms "suitable for freelancers" flag) and is current the moment a notice goes live, but it is undocumented. This server wraps it, so any MCP client can search the live feed with real filters and pull a notice in the portal's domain model, in eForms XML, or in OCDS. Anonymous, no API key, no account.
The reverse-engineered API reference is in docs/API.md — it stands on its own if you want to call the endpoints directly instead of through MCP.
Install
Nothing to install; run it with npx.
Claude Code
claude mcp add vergabe -- npx vergabe-mcpClaude Desktop — in claude_desktop_config.json:
{
"mcpServers": {
"vergabe": {
"command": "npx",
"args": ["vergabe-mcp"]
}
}
}Any other stdio client
npx vergabe-mcpStreamable HTTP, if your client wants a URL rather than a subprocess:
npx vergabe-mcp --http --port 3000Related MCP server: germany-tenders
Tools
Tool | What it does |
| Search lots with flat parameters — free text, CPV prefixes, |
| One notice by id, as a curated |
| The native |
| Resolve a CPV or NUTS code to its German or English description. |
| Build the bulk open-data export URL for a day or month, with the caveats attached. |
All five are read-only; the server writes nothing, stores nothing on disk, and holds no credentials.
Resources. vergabe://api-reference serves the API document, so a client can read what the
backend actually supports before composing a query. Templates cover single notices —
vergabe://notice/{noticeId}, .../eforms, .../ocds — and vergabe://codelist/{list}/{code}.
Prompt. find-solo-tenders (args: keywords, cpv, maxDays) searches with the
freelancer/self-employed flags, then walks the model through triaging candidates: person-days
buried in the description, whether the near deadline is a request to participate or the offer
itself, and the fact that an empty value field means nothing. That triage knowledge ships as a
prompt rather than as scoring code, so you can argue with it.
Example
You: Find open IT tenders that are flagged as suitable for freelancers.
The model calls search_tenders with cpv: ["72"], suitableFor: ["freelance"],
onlyActive: true. On 2026-08-17 that is 30 open lots, among them:
{
"noticeId": "7c70692d-dfb9-4b96-b777-4a5539eaee50",
"title": "Beschaffung einer Beratungsdienstleistung zur Fachberatung im Rahmen eines Identity and Access Management (IAM) Projektes für die Stadtwerke Bielefeld (SWB)",
"lotTitle": "Beratungsdienstleistung zur Fachberatung im Rahmen eines Identity and Access Management (IAM) Projektes",
"buyer": "Stadtwerke Bielefeld GmbH",
"cpv": "72260000",
"noticeType": "cn-standard",
"nature": "services",
"deadline": "2026-09-14T10:00:00+02:00",
"published": "2026-08-12T00:00:00+02:00"
}It then calls get_tender on the interesting ones to read the description, the estimated value,
and the exclusion grounds before telling you which are worth a bid — that judgment is the model's
job, and the server deliberately does not score anything.
Note the shape of the data in that result: the deadline on this one is
deadlineReceiptRequests, a request to participate, not an offer deadline. The
find-solo-tenders prompt exists because distinctions like that decide whether a tender is
reachable.
Development
Node 20 or newer.
npm install
npm test # vitest, no network
npm run typecheck
npm run lint # biomeIntegration tests hit the live portal and are skipped unless you ask for them:
VERGABE_LIVE=1 npm testCommits follow Conventional Commits;
release-please turns them into a release PR on
main — merging that PR tags the release, writes the changelog, publishes to npm, and attaches
the tarball to the GitHub release. The commit type decides the version bump.
License
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for German public procurement data (OCDS). Semantic search, tender matching, and company profiles — all from your local LLM105MIT
- Alicense-qualityCmaintenanceAccess official German government public procurement tenders via MCP, with keyless access.12MIT
- AlicenseAqualityAmaintenanceMCP server providing read access to Swiss public procurement data via the official simap.ch API, covering all cantons and the Confederation with intraday updates. It enables searching tenders, awards, construction codes, and procurement offices through natural language queries.9MIT

vartoofficial
Flicense-qualityBmaintenanceMCP server for Ukrainian public procurement (Prozorro) that exposes tools to search tenders, retrieve tender details and cards, list and read tender documents.
Related MCP Connectors
Germany public procurement MCP — official German government tenders (keyless).
MCP server for French (BOAMP) + EU (TED) public procurement data via TenderAPI.
Read-only MCP server for searching Japan government procurement bid information from the KKJ portal.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jocks-studio/vergabe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server