Skip to main content
Glama

arabam-mcp 🇹🇷

mcp-name: io.github.mohammad-abbasi-sh/arabam-mcp

Unofficial read-only MCP server for arabam.com, Türkiye's used-car marketplace (~176k listings) — live search, full listing details with the 19-field spec table, brand/model browser, and market price stats.

Built by Mohammad Abbasi as part of the "Turkey MCP factory" (Sepehr-style pipeline). Not affiliated with arabam.com.

For AI agents

Add to your MCP client config (stdio):

{
  "mcpServers": {
    "arabam": {
      "command": "uvx",
      "args": ["arabam-mcp"]
    }
  }
}

Or run locally: python -m arabam_mcp.server (needs mcp<2, httpx).

Related MCP server: Webmotors

Tools

Tool

Description

arabam_search

Search listings — brand slug ("bmw"), model slug ("bmw-3-serisi"), page 1..50

arabam_listing_detail

Full detail of one listing (URL from search): price + 19-field spec table

arabam_list_brands

All ~77 brands with listing counts and URL slugs

arabam_list_models

Models of a brand (e.g. "bmw") with counts and slugs

arabam_price_stats

Market stats: min/max/median/average TRY price over N pages

Example output (arabam_search / bmw 3-serisi):

{"brand": "", "model": "bmw-3-serisi", "page": 1, "count": 20,
 "listings": [{"id": "45288789", "title": "214 BİN KMDE SORUNSUZ A4 TDI",
  "brand": "Audi", "year": 2019, "km": 214000, "price_try": 789900,
  "url": "https://www.arabam.com/ilan/.../45288789"}]}

Example output (arabam_listing_detail):

{"title": "Galeriden Honda Civic 1.4 S 1998 Model …", "price": 425000,
 "price_currency": "TRY", "price_text": "425.000 TL",
 "specs": {"Marka": "Honda", "Seri": "Civic", "Model": "1.4 S",
  "Yıl": "1998", "Kilometre": "330.000 KM", "Vites tipi": "Düz",
  "Yakıt tipi": "LPG & benzin", "Kimden": "Galeriden", …}}

Notes:

  • Data comes from arabam.com's public server-rendered pages (schema.org Vehicle/Car JSON-LD + spec table) — no key, no login, read-only.

  • Spec-table labels are Turkish (Marka, Seri, Model, Yıl, Kilometre, Vites tipi, Yakıt tipi, Kasa tipi, Renk, Motor hacmi, Motor gücü, Çekiş, Kimden…).

  • Requests are spaced ~0.8s apart to stay polite.

  • Environments behind an MITM proxy: set SSL_CERT_FILE to a CA bundle that trusts the proxy.

Development

python3 -m venv .venv && .venv/bin/pip install "mcp<2" httpx pytest
.venv/bin/python -m pytest tests/ -q
  • tests/test_listings.py — offline, parses real captured fixtures

  • tests/test_live.py — 5 cautious live requests against arabam.com (needs SSL_CERT_FILE behind the lab proxy)

License

MIT

Available Tools

5 tools
arabam_list_brandsA

All ~77 car brands on arabam.com with listing counts and URL slugs (use the slug with arabam_search / arabam_list_models).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the behavioral burden. It does disclose the payload shape (counts and slugs for the entire brand set, no arguments needed), which implies a complete, side-effect-free enumeration, but it never states data freshness, whether counts are site-wide totals, or result ordering/pagination.

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?

A single sentence that front-loads the core fact (all ~77 brands with counts and slugs) before the actionable parenthetical. No filler, no restatement of the tool name.

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?

With an output schema present, the description need not document return values, and for a parameterless catalog listing it covers scope and downstream usage adequately. The only minor gap is freshness/ordering of the counts, which mildly matters for an agent deciding whether to trust them.

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 for the description to disambiguate and the baseline of 4 applies. The mention of slugs is about downstream use, not about any argument.

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

Purpose5/5

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

Names the resource (car brands on arabam.com), the scope (~77, i.e. the full catalog), and exactly what each entry carries: listing counts and URL slugs. An agent can distinguish it immediately from arabam_search, arabam_list_models, and arabam_listing_detail without opening any schema.

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?

The parenthetical gives explicit downstream routing: take the slug and pass it to arabam_search or arabam_list_models, which establishes this as the prerequisite lookup step. It does not state exclusions (e.g. don't call this if you already have a brand slug), so it stops just short of a full when/when-not statement.

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

arabam_listing_detailA

Full detail of one listing: title, price, 19-field spec table (Marka, Seri, Model, Yıl, Kilometre, Vites, Yakıt, Renk, Motor, hasar kaydı, Kimden…), images. url: the listing URL from arabam_search.

NameRequiredDescriptionDefault
urlYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose what content comes back and that a spec table plus images are included, which is meaningful behavioral context; however it says nothing about auth requirements, rate limiting, failure modes for expired/removed listings, or whether the call is a read-only scrape. With an output schema present, the return-value gap is forgivable, but the operational gaps remain.

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?

A single dense sentence front-loads the primary purpose, the parenthetical spec table documents scope economically, and the trailing parameter note is separated by a colon. No filler or redundant restatement of the tool name.

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 one-parameter retrieval tool with an output schema, the description supplies the essentials: what is returned, how much structure to expect, and where the url comes from. The main missing piece is robustness guidance around invalid or stale listing URLs, which matters for a scraper-style detail endpoint.

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% and the only parameter is undocumented in the schema, yet the description compensates by stating the parameter's meaning and its source ('the listing URL from arabam_search'), which tells the agent the expected format and provenance. It stops short of giving an example URL shape or saying whether relative paths are accepted.

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 opens with a precise verb+resource framing ('Full detail of one listing') and then enumerates the returned content (title, price, 19-field spec table, images), which clearly separates it from arabam_search's multi-result listing behavior. It never names the sibling tools as alternatives directly, but 'one listing' plus the url-provenance note makes the distinction inferable.

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?

The clause 'url: the listing URL from arabam_search' establishes the intended workflow: search first, then fetch detail for a single result. There is no explicit when-not guidance (e.g., do not call for bulk listing data) and no statement of what happens if the URL is invalid, but the context for use is clear.

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

arabam_list_modelsA

Models of one brand with listing counts and URL slugs. brand: slug like "bmw" (from arabam_list_brands).

NameRequiredDescriptionDefault
brandYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are supplied, so the description must carry the behavioral burden. It usefully discloses what the response contains (listing counts and URL slugs), but says nothing about error behavior for unknown slugs, pagination, or whether models with zero listings appear. Since an output schema exists, not explaining the return shape is a smaller gap, keeping this at a 3.

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 no filler; the output contents come first and the parameter guidance second, which is a sensible front-loading. The clipped noun-phrase opening is efficient rather than wasteful, though slightly more explicit phrasing would still fit within this length.

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, the description covers purpose, the parameter's format and provenance, and the gist of the return data. Remaining gaps (error behavior, whether counts reflect active listings) are minor relative to the tool's simplicity.

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%, so the description has to define the only parameter, and it does: the value is a slug in the form "bmw", obtained from arabam_list_brands. This prevents the common mistake of passing a display name like "BMW". It does not specify case sensitivity or what happens on an invalid slug.

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 names the resource (models) and constrains it to a single brand, and it also previews the payload (listing counts and URL slugs). It is distinguishable from the sibling arabam_list_brands because that tool is named as the source of the brand slug. It falls short of a 5 only because the phrasing is a noun fragment rather than stating the operation directly.

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?

The parenthetical '(from arabam_list_brands)' gives an explicit prerequisite and workflow step: call the brands tool first to obtain a slug. There is no statement of when not to use it or of alternatives such as arabam_search for cross-brand lookup, so the guidance is not exhaustive.

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

arabam_price_statsA

Market stats for a brand/model: count, min, max, median and average price (TRY) across the first N search pages (pages: 1..5, default 3).

NameRequiredDescriptionDefault
brandNo
modelNo
pagesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/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 full behavioral burden. It usefully discloses that results are computed over the first N search pages (1..5, default 3) and what metrics are returned, but it does not describe read-only safety, data freshness, performance/cost, or behavior when pages exceed available results.

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?

A single front-loaded sentence that packs metrics, scope, page range, default, and currency with no filler.

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?

The output schema covers the returned statistics, and the description explains page scope and computed metrics. Still, for a tool with no annotations and 0% schema parameter descriptions, the missing brand/model optionality leaves an agent to infer important invocation behavior.

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

Parameters3/5

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

Schema coverage is 0%, so parameter meaning must come from the description. It adds the useful pages constraint (1..5, default 3) and frames brand/model as filters, but it does not explain that brand/model default to empty strings or how empty values affect scope, leaving key semantics to inference.

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

Purpose5/5

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

States a specific aggregation ('Market stats') over a brand/model and enumerates the exact metrics: count, min, max, median, and average price in TRY. This clearly differentiates it from sibling search, listing-detail, brand-list, and model-list tools.

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 aggregation purpose implies use when summary price statistics are wanted rather than individual listings, but it never explicitly contrasts with arabam_search or states when not to use it. It also omits whether brand/model can be blank.

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 observedarabam_list_brands
    • First observedarabam_list_models
    • First observedarabam_listing_detail
    • First observedarabam_price_stats
    • First observedarabam_search

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct role: listing search, single-listing detail lookup, brand enumeration, model enumeration, and aggregate price statistics. The descriptions explicitly cross-reference slug sources and URL inputs, leaving little room for misselection between search and stats or between brand and model listing.

Naming Consistency4/5

All tools share a consistent 'arabam_' prefix and are readable, but the suffix conventions mix verb_noun (arabam_search, arabam_list_brands, arabam_list_models) with noun phrases (arabam_listing_detail, arabam_price_stats). This is a minor deviation rather than a source of confusion.

Tool Count5/5

Five tools is a tight, well-scoped surface for a read-only used-car browsing domain: taxonomy discovery, search, detail, and pricing analytics. Every tool clearly earns its place with no redundant entries.

Completeness4/5

The surface covers the core read-only lifecycle: discovering brands/models, searching listings, fetching full details, and computing price stats. Minor gaps exist—no location/city filtering, sorting controls, or seller/contact lookup—but agents can work around these with the current tools.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables users to search for vehicles and retrieve detailed listing information from the Turbo.az automotive marketplace. It supports advanced filtering by make, model, price, and other specifications through natural language queries.
    4
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching vehicle listings on Brazil's largest automotive marketplace, with full ad details (specs, photos, seller) and average market price for a model.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching over 1.8 million live Brazilian used-car and motorcycle listings with FIPE reference prices and market analytics, and provides per-listing tools for valuation, market position, and price distribution.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search and inspect Bama's Iranian car, motorcycle, and truck listings, compute asking-price statistics, browse new-car price lists and dealer inventories, and retrieve specs, ratings, and market trends without an API key.
    12
    4
    MIT