Skip to main content
Glama
trthaber-mcp

trthaber-mcp

trthaber-mcp 🇹🇷

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

Unofficial read-only MCP server for trthaber.com (TRT Haber), the Turkish public broadcaster's news site — headlines by category, breaking news (son dakika), full article text, keyword search over the current listings, and the category list.

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

For AI agents

Add to your MCP client config (stdio):

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

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

Related MCP server: donanimhaber-mcp

Tools

Tool

Description

trthaber_headlines

Top headlines in one category — category: "gundem" (default), "turkiye", "dunya", "turk-dunyasi", "ekonomi", "spor", "savunma", "cocuk", "dunya-disi", "kultur-sanat", "yasam", "saglik", "bilim-teknoloji", "egitim", "cevre", "guncel", "trt-arsiv", "interaktif"; limit 1..30 (category pages list 15)

trthaber_latest

Breaking news (son dakika), newest first — limit 1..30 (the page lists ~120 articles)

trthaber_get_article

Full text of one article — article_url (as returned by the headlines/latest/search tools); returns title, spot, publish/modify dates, description, image, full body

trthaber_search_news

Keyword search over current news — scans the homepage, the breaking-news page and all 18 category listings, matching titles and summaries; limit 1..30

trthaber_list_categories

The 18 TRT Haber news categories (slug + Turkish display name), for use with trthaber_headlines

Example output (trthaber_get_article / Güney Torid meteor-shower story, 5 Nov 2026):

{"title": "Güney Torid göktaşı yağmuru bu gece nadir görülen ateş topları oluşturacak",
 "spot": "Güney Torid göktaşı yağmurunun en yoğun döneme ulaşmasıyla birlikte …",
 "date_published": "2026-11-05 07:06:00+03:00", "paragraph_count": 9,
 "image": "https://trthaberstatic.cdn.wp.trt.com.tr/resimler/2480000/necef-colu-meteor-yagmuru-aa-2481428.jpg"}

How it works

trthaber.com serves its homepage, category pages (/haber/<category>/), article pages (/haber/<category>/<slug>-<id>.html) and the breaking-news page (/son-dakika-haberleri, ~120 articles, newest first) fully server-rendered — no login, no API key, no session cookies. Category pages carry 15 headline links each in the fixtures. Article pages carry the title in <h1>, the spot in <h2 class="news-spot">, publish/modify dates in an inline JSON blob, description and image in meta tags, and the full body as consecutive <p> elements inside news-detail-container (the run ends at the news-tags block). There is no author byline anywhere on the site, and no NewsArticle JSON-LD (only an Organization block). One site feature does NOT work server-side and is documented, not faked: the site's own search (/arama.html) is JS + CSRF-token POST gated (POST /ajax/getCsrfToken/search/), and a tokenless GET returns a 200 page with an empty results container — so trthaber_search_news scans the current listings instead. Transport uses Chrome TLS impersonation (curl-cffi, chrome120); requests are spaced ~0.8s apart; everything is read-only.

Install

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

Roadmap

  • "Çok okunanlar" (most read) if the site ever exposes it server-side

  • Video/social-video listings (/sosyal-videolar/)

  • Live TV schedule (/canli-yayin-izle.html is a stream page, not data)

License

MIT — see LICENSE.


Built by Mohammad Abbasi — Almanibama · mabbasi.ir

Available Tools

6 tools
trthaber_get_articleA

Full text of one TRT Haber article. article_url: the article's trthaber.com URL (as returned by the headlines/latest/search tools, e.g. "https://www.trthaber.com/haber/bilim-teknoloji/ guney-torid-goktasi-yagmuru-bu-gece-nadir-gorulen-ates-toplari- olusturacak-962288.html"). Returns title, spot, publish date, description, image and the full body text.

Inputs: article_url (required). Returns: result

trthaber_headlinesA

Top headlines in one TRT Haber category. category: "gundem" (default), "turkiye", "dunya", "turk-dunyasi", "ekonomi", "spor", "savunma", "cocuk", "dunya-disi", "kultur-sanat", "yasam", "saglik", "bilim-teknoloji", "egitim", "cevre", "guncel", "trt-arsiv", "interaktif". limit 1..30 (category pages list 15). Returns headlines (title, article URL, summary when the listing carries one, publish time when shown).

Inputs: limit, category. Returns: result

trthaber_healthA

Check whether trthaber.com 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

trthaber_latestA

Breaking news (son dakika) from TRT Haber, newest first. limit 1..30 (the page lists ~120 articles). Returns articles (title, article URL, summary when present, publish time when shown).

Inputs: limit. Returns: result

trthaber_list_categoriesA

The 18 TRT Haber news categories (slug + Turkish display name), for use with trthaber_headlines. No arguments.

Inputs: no named parameters. Returns: result

trthaber_search_newsA

Keyword search over current TRT Haber news: scans the homepage, the breaking-news page and all 18 category listings, matching the keyword in titles and summaries. query: e.g. "ekonomi", "deprem", "COP31". limit 1..30. Note: the site's own /arama search is CSRF-token POST gated, so this searches the current listings instead of a search backend.

Inputs: query (required), limit. 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 6 tools

    Disambiguation4/5

    Each tool targets a distinct retrieval mode: category listing (headlines), breaking-news feed (latest), keyword scan (search_news), full article fetch (get_article), category metadata (list_categories), and reachability (health). The boundaries between headlines, latest, and search_news are explained but still close enough that an agent may hesitate over which to use for a broad keyword-style query.

    Naming Consistency5/5

    All six tools share the same `trthaber_` prefix and snake_case verb_noun convention (headlines, latest, list_categories, get_article, search_news, health). The pattern is predictable throughout the set.

    Tool Count5/5

    Six tools is a tight, well-scoped surface for a single-site news reader, with no redundant or filler tools. Each tool maps to a distinct retrieval need (list, browse, search, fetch, discover categories, health check).

    Completeness4/5

    The read lifecycle is complete: discover categories, browse listings, get breaking news, search, and fetch full article text. Minor gaps remain — no date-range or pagination-beyond-limit filtering, and search is limited to current listings rather than the site's full archive.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Enables read-only access to Turkish technology news and forum content, including latest articles, keyword search, full article text, section listings, and current hot forum topics.
      6
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables read-only access to sozcu.com.tr news through five tools: category headlines, the latest news from the dated archive, full article text, keyword search across today's coverage, and a market ticker with currency, gold, Bitcoin and interest-rate values. Delivered as a stdio MCP server that scrapes fully server-rendered pages without logins, API keys, or cookies.
      5
      MIT