Skip to main content
Glama
PonClick

marktplaats-mcp

by PonClick

Marktplaats MCP Server

Een MCP (Model Context Protocol) server voor het zoeken en bekijken van advertenties op Marktplaats.nl. Hiermee kan je AI-assistenten zoals Claude toegang geven tot Marktplaats.

Features

  • Zoeken - Zoek advertenties met uitgebreide filters (prijs, afstand, conditie, categorie, etc.)

  • Categorie filters - Filter op categorie-specifieke attributen zoals RAM, schermgrootte, merk, framehoogte, etc.

  • Advertentie details - Bekijk volledige beschrijvingen, alle afbeeldingen en kenmerken

  • Verkoper info - Bekijk verkoper beoordelingen en verificatiestatus

  • Categorieën - Blader door alle Marktplaats categorieën

Related MCP server: marktplaats-mcp

Installatie

Je kan op 2 manieren installeren: via uvx of handmatig.

uvx

claude mcp add --transport stdio marktplaats -- uvx git+https://github.com/PonClick/marktplaats-mcp marktplaats-mcp

of voeg toe in .claude.json:

"mcpServers": {
  "marktplaats": {
    "type": "stdio",
    "command": "uvx",
    "args": [
      "git+https://github.com/PonClick/marktplaats-mcp",
      "marktplaats-mcp"
    ],
    "env": {}
  }
}

Handmatige installatie

  1. Git clone en pip install.

# Clone de repository
git clone https://github.com/PonClick/marktplaats-mcp.git
cd marktplaats-mcp

# Installeer met pip
pip install -e .
  1. Voeg toe aan je Claude Desktop configuratie (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "marktplaats": {
      "command": "marktplaats-mcp"
    }
  }
}

Gebruik

Beschikbare Tools

search_listings

Zoek advertenties met filters:

  • query - Zoekterm

  • category / subcategory - Categorie filter

  • zip_code - Postcode voor afstand

  • distance_km - Maximum afstand

  • price_from / price_to - Prijsrange

  • condition - Conditie (new, used, as_good_as_new, etc.)

  • attribute_ids - Categorie-specifieke filters (gebruik get_category_filters)

get_listing_details

Haal volledige advertentie details op inclusief:

  • Volledige beschrijving

  • Alle afbeeldingen

  • Kenmerken

  • Statistieken (views, bewaard)

get_seller_info

Verkoper informatie:

  • Naam en verificatiestatus

  • Gemiddelde beoordeling

  • Aantal reviews

list_categories

Bekijk alle beschikbare categorieën.

get_category_filters

Haal beschikbare filters op voor een categorie, bijvoorbeeld:

  • Laptops: RAM, schermgrootte, processor, SSD/HDD

  • Fietsen: Merk, framehoogte, elektrisch

Voorbeelden

Zoek een laptop met 16GB RAM

search_listings(
    subcategory="laptops",
    price_to=500,
    attribute_ids=[12103]  # 16GB RAM
)

Zoek elektrische Gazelle fietsen

search_listings(
    query="gazelle",
    subcategory="elektrische fietsen",
    condition="used"
)

Credits

Open Source

Dit project is volledig open source en aangeboden door lessClick AI.

Licentie

MIT License - Zie LICENSE voor details.

Disclaimer

Dit is een onofficieel project en is niet geassocieerd met Marktplaats.nl. Gebruik op eigen risico en respecteer de gebruiksvoorwaarden van Marktplaats.

Available Tools

5 tools
get_category_filtersA

Get available filter options for a specific category (like RAM, brand, screen size, etc.).

Args: category: Main category name (e.g., "computers en software") subcategory: Subcategory name (e.g., "laptops")

Returns: Available filters with their IDs that can be used in search_listings

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
subcategoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a read-only operation, confirm no side effects, or mention any authentication or rate-limit considerations. The verb 'Get' suggests a read, but the description remains silent on behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with a clear purpose statement, an Args section, and a Returns section. It is front-loaded and every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional params, no nested objects) and the presence of an output schema, the description covers the essential purpose, parameter meaning, and usage context. The main gap is the absence of behavioral disclosure (e.g., read-only nature) because there are no annotations, but otherwise it is sufficient to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does so by describing both parameters as 'Main category name' and 'Subcategory name' with concrete examples ('computers en software', 'laptops'). It doesn't clarify optionality or interaction between the two, but the added meaning is substantial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('available filter options') with clear scope ('for a specific category') and concrete examples (RAM, brand, screen size). It does not explicitly differentiate from sibling tools like list_categories, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by noting the returned filters 'can be used in search_listings', which gives workflow context but does not state when to call this tool versus alternatives or any prerequisites. This is implied usage rather than explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listing_detailsB

Get full details of a specific listing including complete description and all images.

Args: listing_id: The listing ID (e.g., "m2340580395")

Returns: Full listing details including description, images, attributes, and seller info

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Get' implies a read-only operation and it does disclose the shape of the payload (description, images, attributes, seller info), but it says nothing about error behavior for an invalid ID, rate limits, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first sentence, followed by compact Args/Returns blocks. No filler, though the Returns section partly restates what the output schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained in depth. However, for a lookup tool that depends entirely on a valid identifier, the description omits how to source that ID and what happens on failure, leaving a workflow gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter is documented only as a bare string titled 'Listing Id'. The description compensates by supplying a concrete ID format example ('m2340580395'), which is the one piece of meaning the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieves full details of a specific listing, including description and images. This clearly distinguishes it from the search-oriented sibling search_listings, though it never names that sibling or any other explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies you need a listing_id but never says when to reach for this tool versus search_listings or get_seller_info, nor how to obtain a valid ID. No prerequisites or exclusions are stated, leaving the agent to infer the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seller_infoB

Get detailed information about a seller including ratings and verification status.

Args: seller_id: The seller's numeric ID

Returns: Seller profile with ratings, verification status, and statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
seller_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose that this is a read that returns a seller profile with ratings, verification status, and statistics, but says nothing about authentication requirements, rate limits, or what happens for an unknown seller_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first sentence. The 'Args/Returns' blocks are slightly padded and the Returns line partly duplicates the output schema, but the overall size is appropriate for a simple getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema that documents the return shape, the description supplies enough to call it correctly. Missing only edge-case behavior such as invalid or missing seller IDs, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that seller_id is the seller's numeric ID, which clarifies the bare integer property. Only one parameter exists, so there is little room for further semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (seller info) and enumerates the payload (ratings, verification status, statistics). The resource is naturally distinct from the listing/category siblings, though the description never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as get_listing_details. Retrieval intent is implied by the verb 'Get' and the single ID argument, but nothing tells the agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesB

List all available main categories and common subcategories on Marktplaats.

Returns: Dictionary with main categories and subcategories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, but it does disclose the return shape (a dictionary of main categories and subcategories), which helps an agent plan. It says nothing about read-only nature, authentication, or rate limits, though for a zero-parameter enumeration tool the behavioral risk is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose front-loaded and no filler. The 'Returns:' clause is partly redundant with the existing output schema, which slightly dilutes it but does not hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with an output schema, the description is close to sufficient, but it omits any routing guidance against get_category_filters, which is the one thing an agent actually needs to choose correctly among the sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing parameter-specific to document; the baseline for 0 params is 4. The description cannot add parameter meaning beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('main categories and common subcategories') scoped to Marktplaats, so the agent knows exactly what it returns. However, it never distinguishes itself from the close sibling get_category_filters, which also deals with categories and could easily be confused with this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no alternative tool is named, even though get_category_filters is an obvious candidate an agent might pick instead. Usage is only inferable from the tool name and the word 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_listingsA

Search for listings on Marktplaats.nl.

Args: query: Search query text (required if no category specified) category: Main category name (e.g., "computers en software", "fietsen en brommers") subcategory: Subcategory name (e.g., "laptops", "elektrische fietsen") zip_code: Dutch postal code for distance calculations (e.g., "1016LV"). Required for distance filtering! distance_km: Maximum distance in kilometers (default: 1000). Only works with zip_code. price_from: Minimum price in euros price_to: Maximum price in euros condition: Item condition: "new", "as_good_as_new", "used", "refurbished", "not_working" seller_type: Filter by seller type: "business" (zakelijk, for VAT invoices) or "private" (particulier) sort_by: Sort method: "date", "price", "optimized", "location" sort_order: Sort order: "asc" or "desc" limit: Number of results (1-100, default: 10) offset: Pagination offset offered_since_days: Only show items posted within the last X days attribute_ids: List of attribute filter IDs (use get_category_filters to find these) extract_specs: Try to extract hardware specs (RAM, storage, CPU) from descriptions (for laptops/tablets) compact: Return minimal response format (~75% smaller). Omits description, image, links. Use get_listing_details(id) for full info. Seller: B=business, P=private. Condition: N=new, Z=as good as new, G=used, R=refurbished, D=defect.

Returns: Dictionary with total_count, returned_count, and list of listings

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
compactNo
sort_byNooptimized
categoryNo
price_toNo
zip_codeNo
conditionNo
price_fromNo
sort_orderNoasc
distance_kmNo
seller_typeNo
subcategoryNo
attribute_idsNo
extract_specsNo
offered_since_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses compact mode's ~75% smaller payload and exactly what it omits (description, image, links), plus the coded abbreviations (B/P seller, N/Z/G/R/D condition) an agent must decode. It omits any note on rate limits or authentication, which keeps it short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line purpose is front-loaded and each Args entry is a single tight line. The compact-mode paragraph is dense but every sentence adds decoding value, so there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter search tool with an output schema, the description documents all inputs plus the compact return format and cross-references to sibling tools. Return values are only briefly summarized, but the output schema covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry all 17 parameters — and it does, defining each with examples, defaults (limit 1-100 default 10, distance_km default 1000), allowed enum-like values for condition/seller_type/sort_by/sort_order, and dependency constraints. This fully compensates for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (listings) scoped to Marktplaats.nl, making the domain unambiguous. It does not explicitly distinguish itself from sibling get_listing_details at the top level, though it does reference that sibling later in the compact note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives conditional guidance inline: query is 'required if no category specified', distance_km 'Only works with zip_code', and attribute_ids points to get_category_filters. It also routes to get_listing_details for full info when using compact mode. No explicit when-not-to-use-this-tool statement, but the conditions are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedget_category_filters
    • First observedget_listing_details
    • First observedget_seller_info
    • First observedlist_categories
    • First observedsearch_listings

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct resource and action: search_listings for queries, get_listing_details for a single listing, get_seller_info for sellers, list_categories for the taxonomy, and get_category_filters for filter discovery. No two tools overlap in purpose.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern (search_, get_, list_), with predictable pluralization of list-resources. No mixed conventions or vague verbs.

Tool Count5/5

Five tools is well-scoped for a browsing-focused server; each earns its place and supports a distinct step in the search workflow (discover categories/filters, search, inspect listing, inspect seller).

Completeness4/5

The read-only search surface covers the full browsing lifecycle: category discovery, filter discovery, searching, listing details, and seller info. It lacks any write/favorite/messaging operations, though those may be intentionally out of scope for a search server.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to search and monitor Dutch and Belgian classifieds (Marktplaats and 2dehands) for listings, seller profiles, and categories.
    8
    45 PyPI
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to search willhaben.at marketplace listings and retrieve full ad details, using filters for category, condition, size, color, pattern, brand, and more.
    3
    MIT