Repository avatar
Other Tools
v0.1.1
active

sozcu-mcp

io.github.mohammad-abbasi-sh/sozcu-mcp

Unofficial read-only MCP server for sozcu.com.tr news: headlines, articles, rates.

Documentation

sozcu-mcp 🇹🇷

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

Unofficial read-only MCP server for sozcu.com.tr, Türkiye's #1 news site (~76M visits/month) — headlines by category, latest news from the dated archive, full article text, keyword search over the current archive, and the market ticker (USD/EUR/GBP/BTC/gold/rates).

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

For AI agents

Add to your MCP client config (stdio):

{
  "mcpServers": {
    "sozcu": {
      "command": "uvx",
      "args": ["sozcu-mcp==0.1.1"]
    }
  }
}

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

Tools

ToolDescription
sozcu_headlinesTop headlines in one category — category: "gundem" (default), "ekonomi", "dunya", "spor", "hayat", "magazin", "teknoloji", "finans", "otomotiv"; limit 1..30
sozcu_latestLatest news from the dated all-news archive, newest first — limit 1..30 (paginates, 30/page); date DD-MM-YYYY, default today (Europe/Istanbul)
sozcu_get_articleFull text of one article — article_url (as returned by the headlines/latest/search tools); returns title, author, publish/modify dates, description, image, full body
sozcu_search_newsKeyword search over today's news — scans the dated archive (up to 3 pages) + homepage headlines, matching titles and summaries; limit 1..30
sozcu_market_ratesMarket ticker from the page header: DOLAR, EURO, STERLIN, BITCOIN, ALTIN, FAİZ with value, change and change %

Example output (sozcu_get_article / green-passport story, 7 Nov 2026):

{"title": "10 meslek grubu için yeşil pasaport Meclis yolunda",
 "author": "Haber Merkezi", "date_published": "2026-11-07T08:46:29+0300",
 "date_text": "07 Kasım 2026 - 08:46", "paragraph_count": 16,
 "description": "Yeşil pasaport kapsamının genişletilmesi için Meclis'e sunulan teklifler dikkat çekti. …"}

Example output (sozcu_market_rates, 7 Nov 2026):

{"rates": [{"name": "DOLAR", "value": 50.15, "change": 0.1, "change_pct": 0.2},
           {"name": "EURO", "value": 55.92, "change": -0.35, "change_pct": -0.62}, …]}

How it works

sozcu.com.tr serves its homepage, category pages (/<category>/), article pages (/<slug>-p<id>) and the dated all-news archive (/tum-haberler?date=DD-MM-YYYY&pageNumber=N, 30 articles/page) fully server-rendered — no login, no API key, no session cookies. Category pages carry 25 headline links each in the fixtures (/gundem/ 25, /ekonomi/ 25 in the fixtures). Article pages carry title, author, publish/modify dates, description and image in meta tags, a <time> stamp, and the full body as consecutive <p> elements in the articleBody div (subheadings are ALL-CAPS paragraphs; the run ends at the reactions widget; the copyright paragraph is dropped). There is no JSON-LD on article pages. Two site features do NOT exist server-side and are documented, not faked: the site's own search (/arama?query=...) 301-redirects to the homepage for every query, so sozcu_search_news scans the dated archive instead; and there is no "most read" section anywhere (/cok-okunanlar/ and /en-cok-okunanlar/ are both 404), so the market ticker is offered as the fifth tool. Transport uses Chrome TLS impersonation (curl-cffi, chrome120); requests are spaced ~0.8s apart; everything is read-only.

Install

uvx sozcu-mcp==0.1.1        # run directly (needs uv)
# or
pip install sozcu-mcp==0.1.1
sozcu-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-07); live tests hit sozcu.com.tr. 23/23 green at build time (12 offline + 11 live) plus an MCP stdio smoke test.

Roadmap

  • Author pages (columnists under /yazarlar/)
  • "Son dakika" ticker stream (the /son-dakika/ page lists 11 items; a dedicated tool could poll it)
  • Topic pages beyond the 9 supported categories

License

MIT — see LICENSE.


Built by Mohammad Abbasi — Almanibama · mabbasi.ir