donanimhaber-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@donanimhaber-mcpShow me the latest technology news from DonanımHaber"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Latest tech news (homepage) — |
| Keyword search over recent news (title, summary, category) — |
| Full text of one article — |
| Articles in one section/topic — |
| All news sections/topics (name + slug + URL) from the homepage |
| Hottest topics on the DonanımHaber forum right now — |
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 stdioTests
python -m venv .venv && .venv/bin/pip install -e .
.venv/bin/python -m unittest discover -s tests -vOffline 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 toolsdonanimhaber_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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| article | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
donanimhaber_forum_hot - First observed
donanimhaber_get_article - First observed
donanimhaber_latest - First observed
donanimhaber_search_news - First observed
donanimhaber_section - First observed
donanimhaber_sections
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Read-only access to NewTqnia news, terminology, and explainers in English and Arabic.
MCP gateway for donhuffines.com: articles, search and full text. Read-only, no auth.
Read-only access to attributed financial news and original FinPortal.mk articles.
Worldwide news search by keyword and date, Hacker News, and any RSS or Atom feed as JSON
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables 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.1992 PyPI7MIT
- AlicenseBqualityAmaintenanceEnables 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.8MIT
- AlicenseAqualityBmaintenanceEnables 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.6MIT
- AlicenseNot gradedqualityBmaintenanceEnables read-only product search, product-detail lookup, review retrieval, category browsing, and price statistics for a Turkish e-commerce marketplace.MIT