kleinanzeigen-mcp
Provides read-only access to kleinanzeigen.de classifieds, enabling search for listings, retrieval of full listing details by ad id, browsing commercial seller profiles and listings, and lookup of category and location ids.
Click on "Deploy 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., "@kleinanzeigen-mcp Search for a used bicycle in Berlin"
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.
kleinanzeigen-mcp
A read-only, robots-clean MCP server over kleinanzeigen.de, the German classifieds site.
What it does
Tool | What it answers | Requests |
| One page of listings matching a search query. | 1 |
| One listing in full, by ad id. | 1 |
| Profile and listings for one commercial seller. | 1 |
| Category ids matching a name. | 0 — bundled dataset |
| Location ids matching a name. | 0 — bundled dataset |
| Shop slugs for commercial sellers matching a name. | 1 |
Related MCP server: marktplaats-mcp
Install
Node 22 or newer is required. Four channels install the same build from the same release — they differ only in who does the fetching, and nothing propagates between them.
Channel | Who it is for | Line |
npm / npx — primary | anyone with an MCP client |
|
Claude Code | one line, no JSON |
|
Claude Desktop | no JSON editing at all | download the |
Claude Code plugin | the server and the skill together |
|
run-from-clone | development |
npm / npx — any MCP client
The package is kanzeigen-mcp.
There is no install step and nothing to build. Point your client at npx and let it fetch the package on first run:
{
"mcpServers": {
"kleinanzeigen": {
"command": "npx",
"args": ["-y", "kanzeigen-mcp"]
}
}
}That block goes in your client's config file — claude_desktop_config.json for Claude Desktop, .mcp.json for Claude Code, the equivalent for anything else. Restart the client afterwards.
To verify by hand, without a client:
npx -y kanzeigen-mcpClaude Code
claude mcp add kleinanzeigen -- npx -y kanzeigen-mcpAny environment assignment goes before the --. Everything after the -- is the command Claude Code runs, so a variable placed there becomes an argument to npx rather than an environment variable:
claude mcp add kleinanzeigen -e KLEINANZEIGEN_MCP_RATE_LIMIT_MS=3000 -- npx -y kanzeigen-mcpClaude Desktop — the MCPB
Download kanzeigen-mcp-<version>.mcpb from the latest release and open it. Claude Desktop installs it and offers the one knob below as a form field, so nothing here needs a config file.
Two things are worth knowing before you pick it. The bundle ships unsigned, so the install dialog warns — self-signing fails its own verification, and a real certificate is a purchase nobody has made. And the format has no update mechanism: an installed .mcpb is as current as the day it was downloaded, and nothing will ever prompt you.
Claude Code plugin — the server and the skill
/plugin marketplace add IIxauII/kleinanzeigen-mcp
/plugin install kanzeigen@kanzeigenConfiguration
KLEINANZEIGEN_MCP_RATE_LIMIT_MS — the minimum gap between requests, in milliseconds.
Unset means 1500 ms.
{
"mcpServers": {
"kleinanzeigen": {
"command": "npx",
"args": ["-y", "kanzeigen-mcp"],
"env": { "KLEINANZEIGEN_MCP_RATE_LIMIT_MS": "3000" }
}
}
}Development
Run from a clone. This is the development path rather than an install channel — it is the only one that yields a tree the drift check and the fixture-capture scripts can run in.
git clone git@github.com:IIxauII/kleinanzeigen-mcp.git
cd kleinanzeigen-mcp
npm install
npm run buildnpm run build produces a single-file ESM bundle at dist/index.js plus two sidecar datasets beside it. Point a client at it by absolute path:
{
"mcpServers": {
"kleinanzeigen": {
"command": "node",
"args": ["/absolute/path/to/kleinanzeigen-mcp/dist/index.js"]
}
}
}npm test # the whole suite
npm run typecheck # tsc --noEmit, which is the real typecheck
npm run build # tsup, into dist/Parser tests run against committed fixtures: hand-captured out of band by a dev-time script — never by the server — minimised to the DOM the parser actually reads, and redacted. The redaction rule is everything personal or identifying in the captured markup, including attributes the parser never reads: a pass aimed only at the fields the parser touches is how partner-ad ids and shop names once survived in tracking attributes. A test pins the rule.
Maintainer procedure — regenerating the two bundled datasets, running the drift check, and cutting a release — lives in docs/maintenance.md, because it addresses someone standing in a clone rather than someone who installed this.
Further reading: SPEC.md for the full contract, CONTEXT.md for the vocabulary every name in the codebase uses, and docs/adr/ for the decisions behind the posture.
Available Tools
6 toolsfind_categoryFind categoriesARead-only
Category ids matching a name. Always returns candidates — names and slugs collide, so only the numeric id identifies a category.
Inputs: query (required). Returns: count, stale, matches, fetched_at, +2 more
find_locationFind locationsARead-only
Location ids matching a name or postcode. Always returns candidates — a postcode can map to several locations.
Inputs: query (required). Returns: count, stale, matches, fetched_at, +2 more
find_shopFind shopsARead-only
Shop slugs for COMMERCIAL sellers matching a name. Makes a live request, unlike the other resolvers. A match may be a mention in a shop's profile text rather than its name, so check before using one.
Inputs: name (required), page, category_id, location_id. Returns: page, count, stale, matches, +4 more
get_listingGet listingARead-only
One listing in full, by ad id.
Inputs: ad_id (required). Returns: url, ad_id, flags, price, +17 more
get_shopGet shop page and inventoryARead-only
Profile and listings for one COMMERCIAL seller. Private sellers have no shop page and cannot be reached by this server.
Inputs: shop_slug (required), page, keywords, max_price, +3 more. Returns: page, shop, count, stale, +5 more
search_listingsSearch listingsARead-only
One page of listings matching a search query. Promoted listings repeat on every page; high-volume queries drift between pages, so a listing can be missed or seen twice across a walk.
Inputs: page, sort, radius, ad_type, +10 more. Returns: page, sort, range, stale, +10 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool targets a distinct action: searching listings, fetching a listing, fetching a shop, or resolving category/location/shop identifiers. The only potential confusion is between find_shop and get_shop, but their descriptions make the resolver-vs-retrieval distinction clear.
All tool names use a consistent lowercase snake_case verb_noun pattern: search_, get_, and find_ prefixes map predictably to their behavior. The naming convention is uniform and easy to infer.
Six tools is a well-scoped size for a classifieds browsing server. Each tool serves a clear purpose without redundancy or unnecessary bloat.
The core read-oriented workflows are covered: search listings, view listing details, resolve categories/locations, and inspect commercial shops. Minor gaps exist around reliable pagination and private-seller profile access, but agents can work around these using the available tools.
Maintenance
Related MCP Connectors
Live kleinanzeigen.de search, ad, seller, category and location data for AI clients
Search and browse global classifieds across 80 markets. No auth required for read-only access.
Search MCP servers, MCP clients and AI agents, and retrieve listing details. Free, read-only access.
Hosted MCP server for 3Dsellers, the multichannel selling platform. Connect Claude, ChatGPT, Cursor, VS Code or any MCP client and manage your eBay, Amazon, Walmart, Etsy, Shopify, WooCommerce and TikTok Shop stores in plain language: search and update products, publish listings, sync inventory, tag and track orders, run bulk actions and CSV imports, and reply to customer messages. 120+ tools. Sign in with OAuth or a personal token. No eBay developer account and nothing to install. Setup guides and config examples for every client: https://github.com/3dsellers/ebay-mcp-server
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceSearch Kleinanzeigen.de, Germany's largest classifieds site, via MCP tools without API keys.2MIT
- AlicenseAqualityDmaintenanceRead-only MCP server for Marktplaats.nl (Dutch classifieds) that lets agents search listings and read price, specs, condition, delivery, location, and seller details.312 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables read-only access to Kleinanzeigen.de listings, including compact search, listing details, availability checks, and route calculations with optional distance and driving information.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search Kleinanzeigen listings by keyword, category, location, price and seller type, with extra server-side filtering for title matches and required or excluded terms. It also retrieves full ad details, downloadable photos for visual inspection, category attributes, and seller reputation information.3MIT