Skip to main content
Glama

bim-mcp 🇹🇷

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

Unofficial read-only MCP server for bim.com.tr, BİM Birleşik Mağazalar A.Ş. — Turkey's largest hard-discount grocery chain (13,032 stores in Türkiye as of 30.06.2026). Weekly Aktüel deals with prices, product search, price statistics, the 11 product-range categories, and the 81 provinces in the store finder.

Built by Mohammad Abbasi as part of the "Turkey MCP factory" (Sepehr-style pipeline). Not affiliated with bim.com.tr or BİM.

For AI agents

Add to your MCP client config (stdio):

{
  "mcpServers": {
    "bim": {
      "command": "uvx",
      "args": ["bim-mcp==0.1.0"]
    }
  }
}

Or run locally: python -m bim_mcp.server (needs mcp<2, curl-cffi).

Related MCP server: market-fiyatlari-mcp-server

Tools

Tool

Description

bim_list_aktuel_dates

Aktüel + İndirim date periods — date key, Turkish label (e.g. "03 Kasım Salı"), kind ("aktuel"/"indirim")

bim_aktuel_products

Priced Aktüel products for one week — date_key (omit for current week); query Turkish substring filter (e.g. "yağ", "pirinç"); sort ("price_asc"/"price_desc"/"name"); limit 1..100; brand, name, size, price_try (TL), image_url, product URL, slug, BİM id

bim_product_detail

Full detail of one product — slug from a product URL (e.g. "aycicek-yagi-pet-sise-26-10"); name, size, current price_try (TL), large image_url, BİM id (no brand on the detail page — brand comes from the listing)

bim_price_stats

Price statistics for one week — count, min/median/mean/max in TL, 5 cheapest and 5 priciest products

bim_list_categories

The 11 product-range categories (Süt ve Süt Ürünleri, İçecekler, ...) with id, name, slug, URL

bim_list_cities

The 81 Turkish provinces in BİM's store finder (id + name). Per-city store addresses are NOT available — the finder lookup is session-gated on the site

Example output (bim_aktuel_products / 03 Kasım 2026 week):

{"brand": "TURNA", "name": "AYÇİÇEK YAĞI PET ŞİŞE", "size": "5 L",
 "price_try": 429.0,
 "image_url": "https://cdn1.bim.com.tr/uploads/aktuel-urunler/1697_kucuk_543X467_2080_gda_0051_vector-smart-object.jpg",
 "url": "https://www.bim.com.tr/aktuel-urunler/aycicek-yagi-pet-sise-26-10/aktuel.aspx",
 "slug": "aycicek-yagi-pet-sise-26-10", "bim_id": "72460"}

How it works

bim.com.tr serves its Aktüel pages fully server-rendered — no login, no API key, no session cookies. The Aktüel/İndirim date menu is a table inside <div class="subMenu aktuelsubmenu"> (rows link ?top=1&Bim_AktuelTarihKey=<key>). Products are <div class="product ..."> cards: brand in <h2 class="subTitle">, name in <h2 class="title">, size in <div class="gramajadet">, price split across <div class="text quantify">429,</div> + <span class="number">00</span> + <span class="curr">₺</span> (Turkish formatting: "." thousands, "," decimals). Two of the ~95 blocks per week are image-only banners with no price and are skipped. Categories come from /Markalar/<id>/<slug>.aspx links on the product-range page; provinces from the store-finder city dropdown. One site feature is documented, not worked around: the store finder posts to a KuramPortal gate with live page session tokens (bearer + page_SessionToken), so per-city store addresses are not offered. Transport uses Chrome TLS impersonation (curl-cffi, chrome120 with rotation); requests are spaced ~0.8s apart; everything is read-only.

Install

uvx bim-mcp==0.1.0        # run directly (needs uv)
# or
pip install bim-mcp==0.1.0
bim-mcp    # starts the MCP server on stdio

Tests

python -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m unittest discover -s tests -v

Offline tests run on recorded fixtures (real pages fetched 2026-11-10); live tests hit bim.com.tr. Tests green at build time (see repo for counts) plus an MCP stdio smoke test.

Roadmap

  • Aktüel poster (Afişler) pages — weekly brochure images per date key

  • Store lookup if BİM ever publishes a session-free endpoint

  • Price history across Aktüel weeks (compare the same product week to week)

License

MIT — see LICENSE.


Built by Mohammad Abbasi — Almanibama · mabbasi.ir

Available Tools

7 tools
bim_aktuel_productsA

Priced Aktüel products for one week. date_key: a key from bim_list_aktuel_dates; omit for the current week. query: optional Turkish substring filter over brand + name + size (e.g. "yağ", "pirinç", "süt"). sort: "price_asc", "price_desc" or "name" (default: page order). limit 1..100 (default 50). Returns brand, name, size, price_try (TL), image_url, product url, slug and BİM id per product.

Inputs: sort, limit, query, date_key. Returns: result

bim_healthA

Check whether bim.com.tr is reachable right now.

Returns status ok (HTTP 200), blocked (HTTP 403/429 — bot wall or rate limit) or error, plus the HTTP status and the probed URL. One polite request; it does not fetch any listings.

Inputs: no named parameters. Returns: result

bim_list_aktuel_datesA

Aktüel and İndirim date periods on bim.com.tr, each with its date key (Bim_AktuelTarihKey), Turkish label (e.g. "03 Kasım Salı", "03-30 Kasım") and kind ("aktuel" or "indirim"). Use a key with bim_aktuel_products / bim_price_stats. No arguments.

Inputs: no named parameters. Returns: result

bim_list_categoriesA

The 11 BİM product-range categories (Süt ve Süt Ürünleri, İçecekler, Bakliyat & Unlu Mamüller, ...), each with id, Turkish name, slug and URL. No arguments.

Inputs: no named parameters. Returns: result

bim_list_citiesA

The 81 Turkish provinces in BİM's store finder (id + name), as published on bim.com.tr. Note: per-city store addresses are NOT available — the finder lookup is session-gated on the site. No arguments.

Inputs: no named parameters. Returns: result

bim_price_statsA

Price statistics for one Aktüel week: count, min/median/mean/ max price in TL, the 5 cheapest and 5 priciest products. date_key: a key from bim_list_aktuel_dates; omit for the current week.

Inputs: date_key. Returns: result

bim_product_detailA

Full detail of one Aktüel product. slug: the slug from a product URL (e.g. "aycicek-yagi-pet-sise-26-10" from /aktuel-urunler/aycicek-yagi-pet-sise-26-10/aktuel.aspx). Returns name, size, current price_try (TL), large image_url, BİM id, slug and url. Note: the detail page shows no brand — brand comes from bim_aktuel_products.

Inputs: slug (required). Returns: result

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool targets a clearly distinct resource or action: health probe, three reference lists, weekly product listing, single-product detail, and price statistics. There is little risk of confusing bim_aktuel_products with bim_product_detail or bim_price_stats because their outputs and arguments are distinct.

    Naming Consistency4/5

    All tools share the bim_ prefix and snake_case, making the set predictable and readable. There is a minor convention split between bim_list_* reference tools and bare-noun tools such as bim_aktuel_products, bim_product_detail, and bim_price_stats.

    Tool Count5/5

    Seven tools is well-scoped for a focused BİM site wrapper, with separate utilities for health, reference data, product browsing, detail lookup, and statistics. Each tool has a clear role and none feels redundant.

    Completeness3/5

    The core Aktüel flow is covered: dates, product listing, product detail, and price stats, plus categories, cities, and health. However, categories and cities are not connected to product retrieval, and bim_list_aktuel_dates exposes both aktuel and indirim kinds while only Aktüel products have a corresponding listing tool.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers