Skip to main content
Glama
donanimhaber-mcp

donanimhaber-mcp

donanimhaber-mcp 🇹🇷

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

Unofficial read-only MCP server for donanimhaber.com, Türkiye's leading technology news site + forum — latest tech news, keyword search, full article text, section listings and the forum's hottest topics.

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

For AI agents

Add to your MCP client config (stdio):

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

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

Related MCP server: trendyol-mcp

Tools

Tool

Description

donanimhaber_latest

Latest tech news (homepage) — limit 1..50; articles (id, title, summary, category, views, comments, URL)

donanimhaber_search_news

Keyword search over recent news (title, summary, category) — keyword, limit 1..50

donanimhaber_get_article

Full text of one article — article: the article URL, the /<slug>--<id> path, or a bare numeric id (looked up in the latest listings); returns headline, author, dates, section, description, full body, comment count, word count

donanimhaber_section

Articles in one section/topic — slug from donanimhaber_sections (e.g. "teknoloji-haberleri", "yapay-zeka", "bitcoin", "gta-6"), limit 1..50

donanimhaber_sections

All news sections/topics (name + slug + URL) from the homepage

donanimhaber_forum_hot

Hottest topics on the DonanımHaber forum right now — limit 1..50; topics (id, title, time ago, forum, online users, URL)

Example output (donanimhaber_latest / 2026-11-07):

{"total": 39, "articles": [
  {"article_id": 212608, "title": "Yenilenen Volkswagen Virtus'un ilk fotoğrafları yayınlandı",
   "category": "Otomobil Teknolojileri",
   "url": "https://www.donanimhaber.com/yenilenen-volkswagen-virtus-un-ilk-fotograflari-yayinlandi--212608"}, …]}

Example output (donanimhaber_get_article / Aina AI Ring):

{"headline": "Ekranlı ve mikrofonlu akıllı yüzük: Aina AI Ring",
 "author": "Erkan Calp", "date_published": "2026-11-06T20:44:00+03:00",
 "section": "Giyilebilir Teknolojiler", "word_count": 223, …}

How it works

donanimhaber.com serves its news pages fully server-rendered — no login, no API key, no session cookies. Listing pages carry <article> cards (title, summary, category, Turkish-formatted views like "40,3b" = 40,300, comments; section cards also carry the publish date). Article pages carry a schema.org NewsArticle JSON-LD block (headline, author, dates, section, full articleBody, comment count). Forum popular topics are server-rendered rows on forum.donanimhaber.com. Transport uses Chrome TLS impersonation (curl-cffi, chrome120); requests are spaced ~0.8s apart; everything is read-only.

Two honest limitations, verified live 2026-11-07: (1) the site's own /ara?q=… search ignores the query string — it returns the same 2 stale "ara" articles for every keyword — and the search box is a token-gated Yandex/Elastic widget, so donanimhaber_search_news filters the freshly fetched latest + technology listings client-side instead (Turkish-aware, folds zekâ → zeka); (2) the forum search is token-gated the same way, so there is no forum keyword search — donanimhaber_forum_hot lists the server-rendered popular topics.

Install

uvx donanimhaber-mcp        # run directly (needs uv)
# or
pip install donanimhaber-mcp
donanimhaber-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 donanimhaber.com. 32/32 green at build time (18 offline + 14 live) plus an MCP stdio smoke test (39 latest articles, 80 hot forum topics).

Roadmap

  • Forum category listings (/<forum>--f<id> topic lists)

  • Most-read / most-commented rankings (the homepage carries them)

  • Article comments (the article page links them)

License

MIT — see LICENSE.

Available Tools

6 tools
donanimhaber_forum_hotA

The hottest topics on the DonanımHaber forum right now (forum.donanimhaber.com popular topics). limit 1..50. Returns topics (id, title, time ago, forum, online users, URL). The forum's own search is token-gated, so there is no keyword search for the forum.

NameRequiredDescriptionDefault
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses the limit range (1..50), the returned fields (id, title, time ago, forum, online users, URL), and the token-gated search constraint. It omits any note on rate limits, caching, or freshness semantics for 'right now'.

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?

The text is short and front-loaded with the core purpose, then the limit bound, then the return fields, then the search caveat. The line breaks are slightly awkward but no sentence is wasted.

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, bound, return shape, and the notable search limitation. Nothing essential to correct invocation is missing, though a one-line contrast with donanimhaber_latest would close the remaining gap.

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% and the schema only shows a default of 10, so the description's 'limit 1..50' adds real constraint information the schema lacks. It does not explain what happens if limit is omitted beyond the default, but the key bound is covered.

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 a specific verb and resource: 'hottest topics on the DonanımHaber forum right now', with the domain (forum.donanimhaber.com popular topics) spelled out. It is clearly distinct from siblings like donanimhaber_latest and donanimhaber_search_news, though it never explicitly contrasts itself with them.

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?

It usefully rules out keyword search ('the forum's own search is token-gated, so there is no keyword search for the forum'), which steers an agent away from a dead end. However, it gives no explicit guidance on when to pick this over donanimhaber_latest or donanimhaber_section, leaving the hot-vs-latest choice to inference.

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

donanimhaber_get_articleA

Full text of one donanimhaber.com article. article: the article URL (https://www.donanimhaber.com/--), the /-- path, or a bare numeric id (looked up in the latest listings). Returns headline, author, dates, section, description, full body, comment count and word count.

NameRequiredDescriptionDefault
articleYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that a bare numeric id is resolved against the latest listings, which is real behavioral context an agent could not guess. It omits failure behavior (what happens for an unknown id, a paywalled/removed article, or invalid URL format).

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 front-loaded sentences with no filler, and the parameter contract sits immediately after the purpose statement. The second sentence is dense and its wrapped formatting makes it slightly harder to scan, but nothing is wasted.

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?

An output schema exists, yet the description still enumerates the returned fields (headline, author, body, word count), which is helpful orientation rather than dead weight. For a single-parameter read tool this is close to complete; only error/not-found behavior is missing.

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

Parameters5/5

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

Schema coverage is 0% and the schema only says the parameter is a string, so the description supplies the entire contract: full URL, /<slug>--<id> path, or bare numeric id, including the URL pattern. This is exactly the kind of meaning the schema cannot convey.

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 first sentence names a specific verb and resource ('Full text of one donanimhaber.com article'), which is clearly distinguishable from a listing or search tool. It does not explicitly name the sibling tools (donanimhaber_latest, donanimhaber_search_news) it complements, so differentiation is inferred rather than stated.

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?

Usage is implied: use this when you already have an article reference and need the body, versus the listing/search siblings. There is no explicit when-to-use/when-not-to-use statement or named alternative for the case where the agent has only a topic rather than an id.

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

donanimhaber_latestB

The latest tech news on donanimhaber.com (homepage). limit 1..50. Returns articles (id, title, summary, category, views, comments, URL).

NameRequiredDescriptionDefault
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.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 full burden. It does disclose the return fields and the valid limit range, and 'latest news' implies a read-only fetch, but it says nothing about ordering guarantees, pagination, caching, or failure behavior for a scrape-style endpoint.

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?

Three terse fragments, front-loaded with purpose, then constraint, then return shape. Nothing is padded, though the telegraphic style ('limit 1..50') costs a little readability.

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?

An output schema exists, so listing return fields is partly redundant but harmless confirmation. With one parameter, no annotations, and a simple read operation, the description covers the essentials; the missing pieces are sibling routing and any statement of ordering or freshness semantics.

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% — the single 'limit' parameter has a default of 10 but no description and no bounds in the schema. The description partially compensates by stating 'limit 1..50', which is genuinely useful constraint information absent from the structured fields, but the meaning of the limit (article count) is only implied.

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?

States a specific verb/resource combination: the latest tech news from donanimhaber.com's homepage. The '(homepage)' qualifier distinguishes it from a section- or query-scoped feed, though it never names donanimhaber_search_news or donanimhaber_section as the filtered alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. An agent must infer from the word 'latest' and '(homepage)' that this is the unfiltered front-page feed and that donanimhaber_search_news or donanimhaber_section should be used for targeted retrieval; that inference is never confirmed.

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

donanimhaber_search_newsA

Search recent donanimhaber.com news by keyword (title, summary, category). The site's own search ignores queries, so this filters the freshly fetched latest + technology listings. limit 1..50.

NameRequiredDescriptionDefault
limitNo
keywordYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does disclose meaningful behavior: results are limited to the freshly fetched latest + technology listings, meaning older articles and other sections will not be found. That scope caveat is exactly the kind of hidden limitation an agent needs, though freshness/caching details and rate limits are not mentioned.

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?

Three short sentences, purpose front-loaded, with the justification ("the site's own search ignores queries") placed before the mechanism explanation. Every clause adds information; only the slightly compressed "latest + technology listings" phrasing costs a moment of parsing.

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?

An output schema exists, so return values needn't be described, and the tool is simple with only two parameters. The description covers purpose, match scope, result scope, and limit bounds — the remaining gap is ordering/pagination of results, which is minor for a bounded search over a fixed listing set.

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%, so the description must compensate, and it does: it names the fields keyword matches against, and specifies the limit bounds (1..50) plus the implied default behavior via the schema's default of 10. Both parameters gain meaning that the bare integer/string schema lacks.

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?

States a specific verb+resource ("Search recent donanimhaber.com news by keyword") and scopes the match fields (title, summary, category). It also reveals the underlying mechanism — filtering freshly fetched latest + technology listings — which implicitly distinguishes it from donanimhaber_latest and donanimhaber_section, though no sibling is named outright.

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?

Explains the operative condition for using this tool: the site's own search ignores queries, so this client-side filter is the way to do keyword lookup. It doesn't explicitly say when to prefer donanimhaber_latest or donanimhaber_section instead (e.g., for browsing rather than searching), so routing guidance is clear but not exhaustive.

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

donanimhaber_sectionB

Articles in one donanimhaber.com section/topic — slug from donanimhaber_sections (e.g. "teknoloji-haberleri", "yapay-zeka", "bitcoin", "gta-6", "telefon-onerileri"). limit 1..50.

NameRequiredDescriptionDefault
slugYes
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It discloses the limit bound (1..50) but says nothing about result ordering (recency vs relevance), pagination beyond the limit, or what happens with an unknown slug.

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?

Two compact sentences, front-loaded with the resource and its scope, followed by the parameter constraint. Nothing is redundant or padded.

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?

An output schema exists, so return-value explanation is not needed. For a two-parameter fetch tool it is nearly sufficient, but ordering behavior and failure mode on an invalid slug remain unaddressed.

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%, yet the description compensates well: it explains slug format with five concrete examples and states the 1..50 range for limit. The only gap is that the default (10) and the exact slug grammar are left implicit.

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?

States a specific resource ('Articles in one donanimhaber.com section/topic') and identifies the required selector as a slug. The parenthetical pointer to donanimhaber_sections partially differentiates it from siblings like donanimhaber_latest and donanimhaber_search_news, though it never explicitly contrasts with them.

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?

It usefully tells the agent where slugs come from (donanimhaber_sections) and gives concrete slug examples, which is real workflow guidance. However, it never says when to prefer this over donanimhaber_latest or donanimhaber_search_news, nor any exclusion condition.

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

donanimhaber_sectionsA

All news sections/topics on donanimhaber.com (name + slug + URL), parsed from the homepage.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/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, and it discloses only one behavioral trait: the data is "parsed from the homepage," implying a live scrape that may be incomplete or change with the page layout. It says nothing about whether the result is cached, how many sections are typical, whether the call is read-only or has side effects, or any rate/availability constraints for a scraping-backed endpoint.

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 with no filler: it identifies the resource, the domain, the returned fields, and the data source in one pass. Nothing in it is redundant or padded.

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 zero parameters and an output schema present, the description does not need to enumerate return values, and it is complete for calling the tool correctly. The remaining gap is operational: as a homepage-scraping endpoint with no annotations, a hint about reliability or when to fall back to another tool would round it out.

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 no parameter meaning to add; the baseline for a parameterless tool is 4. The description correctly does not invent inputs and instead spends its words on the return shape.

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 a specific resource (all news sections/topics on donanimhaber.com) and the exact fields returned (name + slug + URL), so an agent knows precisely what it gets. It stops short of explicitly distinguishing itself from the sibling donanimhaber_section, leaving the agent to infer that this is the discovery/index call versus the per-section news call.

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?

Usage is only implied: the phrase "all news sections/topics" suggests using this to discover available sections, but there is no explicit statement of when to call it instead of donanimhaber_section or donanimhaber_latest. No prerequisites, exclusions, or alternative routing is given.

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. 6 tool updatesv0.1.0
    • First observeddonanimhaber_forum_hot
    • First observeddonanimhaber_get_article
    • First observeddonanimhaber_latest
    • First observeddonanimhaber_search_news
    • First observeddonanimhaber_section
    • First observeddonanimhaber_sections

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: homepage latest, keyword search, full article retrieval, section listing, section article listing, and forum hot topics. Although several tools return article lists, their boundaries are explicitly clarified by source and filters.

Naming Consistency4/5

All tools use the same donanimhaber_ prefix and snake_case style. However, verbs are mixed with noun-only names such as latest, section, sections, and forum_hot, creating minor inconsistency.

Tool Count5/5

Six tools are well-scoped for a news/forum read-only MCP server, with no obvious redundant entries. Each tool covers a distinct browsing or retrieval need.

Completeness4/5

News coverage is strong: latest, search, article full text, section discovery, and section browsing are all present. Minor gaps remain around forum functionality, since only hot topics are exposed and there is no forum thread retrieval or broader forum browsing.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to search Technolife's electronics catalog, compare every seller's cash, installment and buy-now-pay-later prices, read specs and reviews, and catch current deals and campaigns. It is read-only by design, with no login, basket, orders or payment access.
    19
    92 PyPI
    7
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables sellers to read Turkish marketplace order, return, stock, review, and price data, detect SLA breaches, stock and price traps, and unanswered reviews, and generate a prioritized daily Turkish action report. It is read-only by design and never changes seller accounts.
    8
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables read-only search and browsing of Türkiye's local-services marketplace: keyword search across thousands of services, service details, top-rated professionals filtered by city, FAQs, 12-month price guides with real quote examples, and trending services. No API key or login required.
    6
    MIT