OLX MCP Server
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., "@OLX MCP Serverfind apartments in Lisbon under 1000€ on OLX Portugal"
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.
OLX MCP Server
Why search for e-waste in your area by yourself if Claude can do it for you?
100% AI slop.
Features
🌍 Multi-Domain Support: Search across 5 OLX domains (Portugal, Poland, Bulgaria, Romania, Ukraine)
🔍 Search Listings: Search with filters for category, location, price range, and sorting
📋 Listing Details: Get detailed information about specific listings including seller info
🎭 Browser Automation: Reliable web scraping using Playwright
Related MCP server: letgo-mcp
Installation
📋 Claude Desktop Configuration
Locate your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add the OLX MCP server to your configuration:
{
"mcpServers": {
"olx-mcp": {
"command": "npx",
"args": ["olx-mcp"]
}
}
}Restart Claude Desktop to load the new configuration.
🔄 Alternative: Global Installation
If you prefer to install globally:
npm install -g olx-mcpThen use this config:
{
"mcpServers": {
"olx-mcp": {
"command": "olx-mcp"
}
}
}📦 Development: From Source
git clone https://github.com/l-margiela/olx-mcp.git
cd olx-mcp
npm install
npm run buildUse this config for development:
{
"mcpServers": {
"olx-mcp": {
"command": "node",
"args": ["/absolute/path/to/olx-mcp/dist/index.js"]
}
}
}Usage
Once configured, you can use the following tools in your MCP client:
Search Listings
Search for listings on any supported OLX domain with various filters:
Can you search for "apartments" in "Lisboa" on OLX Portugal with a maximum price of 1000 euros?Search for "telefon" in "warszawa" on OLX Poland with prices between 100-500 PLN?Parameters:
domain(required): OLX domain ('olx.pt', 'olx.pl', 'olx.bg', 'olx.ro', 'olx.ua')query(optional): Search termcategory(optional): Category filterlocation(optional): Location filterminPrice(optional): Minimum pricemaxPrice(optional): Maximum pricepage(default: 1): Page numberlimit(default: 20): Items per pagesortBy(default: 'relevance'): Sort order ('relevance', 'date', 'price-asc', 'price-desc')
Listing Details
Get detailed information about a specific listing from any supported domain:
Can you get the details for listing "ABC123" from OLX Portugal?Show me details for listing "XYZ789" from OLX Poland including images?Parameters:
domain(required): OLX domain ('olx.pt', 'olx.pl', 'olx.bg', 'olx.ro', 'olx.ua')listingId(required): The ID of the listingincludeImages(default: true): Include the listing's gallery image URLsincludeSellerInfo(default: true): Include seller information
Development
Scripts
npm run build- Build the TypeScript projectnpm run dev- Run in development mode with hot reloadnpm start- Run the built servernpm test- Run tests (when available)npm run clean- Clean build artifacts
Releasing
Releases are automated. Pushing a v* tag triggers .github/workflows/release.yml,
which runs the full CI pipeline, publishes to npm (with provenance), and creates
the GitHub Release:
npm version patch # or minor/major; creates the version commit + v-tag
git push origin main --follow-tagsDo not run npm publish manually — CI publishes on the tag push, so a local
publish always fails with "cannot publish over previously published versions".
Verify with gh run list (green "Release" run) and gh release view vX.Y.Z.
Troubleshooting
MCP Inspector
For debugging MCP communication, you can use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsLicense
MIT License - see LICENSE file for details.
Available Tools
2 toolsgetListingDetailsA
Get detailed information about a specific OLX listing from any supported domain (olx.pt, olx.pl, olx.bg, olx.ro, olx.ua) including description, seller info, and images
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| listingId | Yes | ||
| includeImages | No | ||
| includeSellerInfo | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description shoulders the burden. It discloses what data is returned (description, seller info, images) and that any supported domain works, but does not mention operational traits such as network dependence, potential failures for removed listings, rate limiting, or auth. For a non-mutating lookup this is adequate but not richly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single longish sentence with no filler. Each segment adds info: the resource, the domain scope, and the return contents. It could be shortened, but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description gives a high-level overview of return content but not enough detail for an agent to predict response shape, error cases, or exact prerequisites (e.g., a valid existing listing ID). The presence of the sibling searchListings is noted via context but not integrated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning: 'specific listing' implies the listingId param, the parenthetical enumerates domain values, and 'description, seller info, and images' hints at what includeImages and includeSellerInfo control. It does not explain the boolean toggles explicitly or the listingId pattern, so it only partially compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Get') and resource ('detailed information about a specific OLX listing'), enumerates supported domains, and names the kind of content returned. This contrasts with sibling searchListings, which would be for finding listings rather than inspecting one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when one wants details on a single known listing, but it does not state explicit conditions, prerequisites (e.g., listing ID format), or when to prefer searchListings. Because the sibling's purpose is left to inference, guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchListingsC
Search for listings on OLX domains (olx.pt, olx.pl, olx.bg, olx.ro, olx.ua) with various filters including query, category, location, and price range
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| limit | No | ||
| query | No | ||
| domain | Yes | ||
| sortBy | No | relevance | |
| category | No | ||
| location | No | ||
| maxPrice | No | ||
| minPrice | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states 'Search for listings' and lists filters, without revealing pagination behavior, response format, rate limits, or any side effects. It is not misleading but lacks essential behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core action. It is fairly concise, though slightly run-on due to the enumeration of filters and domains, which could be restructured for readability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, no output schema, and no annotations, the description is too sparse. It omits that domain is required, does not mention the valid enum values, does not address pagination limits or sorting, and gives no indication of the response structure. This leaves significant gaps for an agent to correctly use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions query, category, location, and price range, which map partially to schema properties. However, it does not clarify that domain is required, nor does it mention pagination (page, limit) or sortBy. With 0% schema description coverage, this partial compensation is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for listings on specific OLX domains with filters, which is a specific verb+resource. It distinguishes itself from sibling getListingDetails by focusing on search rather than fetching details of a single listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus the sibling getListingDetails. The description implies general search usage but does not state when to choose this over alternatives or what scenarios it is suitable for.
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 tool update
v1.0.14- Changed
getListingDetails2 fields changed- changed
Input schema / properties / includeImages / defaultPrevious value: -falseNew value: +true - added
Input schema / properties / listingId / patternAdded value: +"^[A-Za-z0-9._-]+$"
2 tool updates
v1.0.9- First observed
getListingDetails - First observed
searchListings
TDQS
Scored across 2 tools
searchListings and getListingDetails have clearly distinct purposes: one discovers listings, the other retrieves details for a specific listing. There is no overlap in their functionality.
Both tool names follow a consistent camelCase verb_noun pattern: searchListings and getListingDetails. The naming style is uniform and predictable.
With only 2 tools, the server is minimal but well-scoped for a read-only OLX listing lookup service. Slightly thin but each tool covers an essential step in the workflow.
The server covers the core read-only lifecycle: finding listings and then viewing details. Missing operations like category browsing or seller info could be gaps, but the essential search-to-detail path is complete.
Maintenance
Related MCP Connectors
Search and browse global classifieds across 80 markets. No auth required for read-only access.
Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides browser automation, AI-powered analysis, visual processing, web scraping, automated test generation, and DevTools analysis capabilities. Supports multiple AI providers (OpenAI, Anthropic, Google, Ollama) for intelligent web interaction and data extraction.-
- AlicenseAqualityCmaintenanceEnables searching, viewing details, and filtering listings on Letgo.com by using Playwright to bypass Akamai anti-bot protection.61MIT
- AlicenseAqualityDmaintenanceProvides tools for searching LinkedIn profiles and extracting names, URLs, and headlines via Playwright-based web scraping. Supports location and network filters with automatic login and cookie persistence.22MIT
- AlicenseAqualityAmaintenanceEnables AI agents to search and monitor Dutch and Belgian classifieds (Marktplaats and 2dehands) for listings, seller profiles, and categories.52MIT