Skip to main content
Glama
sepehr071

iran-news-mcp

by sepehr071

iran-news-mcp: Iranian news RSS MCP server for AI agents

Let your AI agent read Iranian news (اخبار ایران) from Mehr, Khabaronline, Hamshahri, Tabnak, Zoomit and Digiato. An unofficial, read-only MCP server over the sites' public RSS feeds and article pages: latest headlines per source and category, a merged overview, keyword search across all six, and the full text of any story.

For AI agents · Quick start · Tools · Sources · فارسی


For AI agents

  • What: unofficial MCP server for the RSS feeds and article pages of Mehr (mehrnews.com), Khabaronline (khabaronline.ir), Hamshahri (hamshahrionline.ir), Tabnak (tabnak.ir), Zoomit (zoomit.ir) and Digiato (digiato.com). Persian text.

  • Install: uvx iran-news-mcp or claude mcp add iran-news -- uvx iran-news-mcp. Transport: stdio. Needs uv (Python 3.10+).

  • Auth: none. Optional IRAN_NEWS_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.

  • Access: read-only. No login or posting, so no confirmation is needed before calling any tool.

  • Tools: 5: nw_list_sources, nw_latest, nw_search, nw_latest_all, nw_article. Start with nw_list_sources for valid source ids and category slugs.

  • Use when: the user wants current Iranian headlines, a news overview, recent coverage of a keyword, or the full text of a story.

  • Do not use when: an archive is needed (only what is in the current feeds, 10 to 300 stories per feed, is searchable).

  • Output: compact JSON. Times are UTC ISO strings (Tehran is UTC+3:30); summaries are plain text cut to 200 characters (80 in nw_latest_all). Null and empty fields are omitted. Replies stay under ~15 KB: limit is capped at 15 and per_source at 3. A failing source is listed under errors while the others still answer. nw_latest sets stale: true when a feed's newest story is over 3 days old. Feeds are cached for 3 minutes.

  • Machine-readable: server.json and the awesome-iran-mcp catalog.

Related MCP server: gnews-agent

Quick start

claude mcp add iran-news -- uvx iran-news-mcp

Other clients: command uvx, args ["iran-news-mcp"].

Tools

Tool

What it does

nw_list_sources

The six sources and their category slugs.

nw_latest

Newest headlines of one source, optionally one category (source, category, limit 1-15).

nw_search

Keyword search over the current feeds of several sources (query, sources, category, limit 1-15).

nw_latest_all

Newest headlines from every source merged by time (sources, category, per_source 1-3).

nw_article

Full body text of one story from its url, in parts of 6000 characters (url, part).

Sources

id

Site

Categories

Feeds

mehr

Mehr

14

one per category (30 items)

khabaronline

Khabaronline

12

one per category (30 items)

hamshahri

Hamshahri

16

one per category (30 items)

tabnak

Tabnak

11

one per category (up to 100 items)

zoomit

Zoomit

18

one feed (300 items), categories filtered here

digiato

Digiato

14

one per topic (10 items)

Common slugs shared by most sources: politics, economy, society, culture, world, sports, science, provinces, photo. The sites offer more sub-category feeds than listed here; see the API map.

FAQ

Does it work outside Iran? Yes: the RSS endpoints answered from a Turkish exit and from a direct connection in testing. Article pages of Mehr, Khabaronline, Hamshahri, Tabnak, Zoomit and Digiato also answered from both.

Why no ISNA or IRNA? Their article pages (also /amp/ and /print/) answer every non-browser client with an ArvanCloud JavaScript check, from an Iranian connection too, so only headlines would work. They were left out.

فارسی

سرور MCP غیررسمی و فقط‌خواندنی برای خوراک RSS و صفحه‌های خبر شش سایت خبری: مهر، خبرآنلاین، همشهری، تابناک، زومیت و دیجیاتو. آخرین عناوین هر منبع و دسته، مرور ترکیبی، جست‌وجوی کلیدواژه در همه منابع و متن کامل خبر.

claude mcp add iran-news -- uvx iran-news-mcp

License

MIT

Available Tools

5 tools
nw_articleRead a news articleA
Read-onlyIdempotent

Fetch one article page and return its full body text, split into parts for long stories.

Works for every source. Photo and video items often have no body text. parts > 1 means call again with part=2, 3, ...

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesArticle url from nw_latest / nw_search / nw_latest_all (one of the six sites).
partNoPart number for long articles (6000 characters each); see `parts`.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), so the bar is low, and the description still adds useful behavior: long stories are split into parts and how to continue, plus the caveat that photo/video items may have no body. No permission, rate-limit, or failure-mode detail is given, but nothing contradicts the annotations.

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?

Three short sentences, front-loaded with purpose before caveats and the pagination instruction. Every sentence carries distinct information and nothing is repeated from the schema.

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?

There is no output schema, so the description must describe the return surface; it does explain the body text and the `parts` count, which is the field the caller must act on. It omits other likely metadata (title, author, date, source), leaving a small gap for an article-detail tool.

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 100% and the schema already documents both url and part (6000-character chunks), so the baseline would be 3. The description goes beyond it by explaining the retrieval loop ('parts > 1 means call again with part=2, 3...'), which tells the agent when and how to increment part.

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 and resource: 'Fetch one article page and return its full body text', including the singular scope ('one article page') and the part-splitting behavior. It is clearly the detail-fetch counterpart to the list tools, but it never names nw_latest / nw_search as the sources of the url, so sibling routing is left to the schema.

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?

Gives real operating context: works for every source, and photo/video items often return no body text (a soft when-not). It also states the follow-up rule for pagination ('parts > 1 means call again with part=2, 3...'). It stops short of explicitly telling the agent to use nw_latest/nw_search to obtain the url first.

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

nw_latestLatest news from a sourceA
Read-onlyIdempotent

Return the newest headlines of one news source, optionally of one category.

Each item has title, url, published (UTC ISO), summary (plain text) and categories. stale: true means the feed's newest story is over 3 days old (some Digiato topic feeds go quiet). Use nw_list_sources for category slugs; use nw_search to look for a topic across sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items (1-15), newest first.
sourceYesSource id: mehr, khabaronline, hamshahri, tabnak, zoomit or digiato (see nw_list_sources).
categoryNoCategory slug from nw_list_sources, e.g. 'politics', 'economy', 'sports'. Empty = the source's main latest feed.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world), so the description earns credit for adding return-field semantics (title, url, published as UTC ISO, plain-text summary, categories) and the non-obvious 'stale: true' contract meaning the feed's newest story is over 3 days old. It stops short of covering result-count edge cases or rate behavior.

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?

Front-loads the purpose in the first sentence, then a compact item-shape explanation, then routing guidance — all sentences carry weight. The repeated mention of nw_list_sources is minor redundancy.

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 no output schema, the description compensates by describing the returned fields and the stale flag, and annotations cover the safety profile. Ordering and limit bounds live in the schema, so an agent has essentially everything needed; only empty-result or pagination behavior is unaddressed.

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 description coverage is 100% and each parameter (limit, source, category) is already fully documented in the schema, including defaults, ranges and examples. The description only re-points to nw_list_sources for slugs, adding no syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('return the newest headlines of one news source, optionally of one category') and pins the scope to a single source, which cleanly separates it from the all-sources sibling nw_latest_all and from cross-source topic lookup.

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?

Explicitly routes the agent to alternatives: nw_list_sources for category slugs and nw_search for topic-across-sources searches. It does not name nw_latest_all or nw_article, so the routing is clear on context but not exhaustive over all four siblings.

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

nw_latest_allLatest news across sourcesA
Read-onlyIdempotent

Return the newest headlines from every source (or the chosen ones), merged and sorted by time.

Use it for a news overview; pass a common category slug such as 'economy' or 'sports' to narrow it. Sources that failed or lack the category are listed under errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcesNoSource ids to include. Empty = all six.
categoryNoCategory slug from nw_list_sources, e.g. 'politics', 'economy', 'sports'. Empty = the source's main latest feed.
per_sourceNoItems (1-3) taken from each source before merging.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: results are merged and time-sorted, and failed sources or sources lacking the category surface under an `errors` key.

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?

Three short sentences, front-loaded with the core return behavior, then usage, then the error caveat. No filler or repetition of the schema.

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 no output schema, the description usefully discloses the merge/sort behavior and the `errors` field. It could say more about ordering ties or how many total items result, but for a read-only aggregation tool it is essentially complete.

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 100%, with defaults, ranges and examples already documented for all three parameters, so the baseline is 3. The description only restates the source selection and illustrates category slugs, adding little beyond the schema.

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 and resource: returns newest headlines from every source, merged and sorted by time. The 'every source (or the chosen ones)' scope implicitly separates it from nw_latest, but no sibling is named explicitly.

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?

Gives a clear use context ('for a news overview') and tells the agent how to narrow with a category slug. It stops short of naming alternatives (nw_latest, nw_search) or stating when not to use it.

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

nw_list_sourcesList news sourcesA
Read-onlyIdempotent

List the six news sources and their category slugs; call this first to know valid source and category values.

Sources: mehr, khabaronline, hamshahri, tabnak, zoomit, digiato. Next: nw_latest, nw_search or nw_latest_all.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely useful context beyond that: the fixed set of six sources and the fact that this call is the lookup step for valid downstream parameter values. It doesn't disclose the actual category slugs it promises, which keeps it short of a 5.

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 tight sentences: the purpose and usage rule come first, the enumeration second, the routing last. Every clause earns its place with no filler.

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 zero-param, no-output-schema tool, the description supplies the enumeration an agent needs to act without a trial call. The only gap is that it advertises category slugs but never shows them, forcing the agent to invoke the tool to learn them.

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?

Zero parameters, so the baseline is 4 and the schema has nothing to document. The description nonetheless adds parameter-relevant meaning by naming the values that feed sibling tools' `source` and `category` fields, though it stops short of listing the category slugs themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the six news sources and their category slugs') and even enumerates the six sources by name, so the agent knows exactly what comes back. It distinguishes itself from siblings by framing itself as the prerequisite discovery call for valid `source` and `category` values.

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

Usage Guidelines5/5

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

Explicitly says 'call this first' and gives the downstream path ('Next: nw_latest, nw_search or nw_latest_all'), so both when-to-use and which alternative follows are spelled out. Nothing is left to inference.

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. 5 tool updatesv0.1.0
    • First observednw_article
    • First observednw_latest
    • First observednw_latest_all
    • First observednw_list_sources
    • First observednw_search

TDQS

A4/5.0

Scored across 5 tools

Disambiguation4/5

nw_latest vs nw_latest_all are closely related (one source vs all sources) and could be momentarily confused, but the descriptions clearly differentiate scope. nw_article, nw_search, and nw_list_sources each have distinct, non-overlapping purposes.

Naming Consistency4/5

All tools share a consistent nw_ snake_case prefix, giving a clear family identity. Minor deviation: nw_article is noun-only while others use verb or verb-like stems (latest, search, list_sources).

Tool Count5/5

Five tools is well-scoped for a read-only news aggregator, with each tool earning its place: discovery (list_sources), per-source and merged feeds (latest/latest_all), cross-source search, and full-article fetch.

Completeness4/5

For a read-only news server the surface covers source discovery, per-source and merged browsing, keyword search, and full article retrieval, which is solid. Minor gap: no way to list available categories globally other than deriving slugs from source listings, and no pagination beyond article parts.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Search, trending, topics, and local news all in one MCP server. Article previews, deduplication, source filtering, and 40+ languages built in.
    20 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A persistent news intelligence MCP server that enables AI agents to fetch, store, deduplicate, embed, and semantically query news from Google News across 141 countries and 41 languages.
    31 PyPI
    8
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server that ingests and normalizes recent AI, tech, and research news from multiple sources, exposing tools for media agents to query and retrieve article content on demand.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that aggregates AI news, academic papers from ArXiv, and trending GitHub repositories from multiple sources, enabling users to fetch, search, and filter recent AI content via natural language.
    1
    MIT