Skip to main content
Glama
danmarce

news-mcp

by danmarce

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NEWS_DBNoSQLite path (WAL; refresh and server can share it)data/news.db
NEWS_FEEDSNoCurated feed listpackaged src/news_mcp/feeds.toml
NEWS_MCP_TOKENNoBearer token required on HTTP (/healthz stays open)
NEWS_USER_AGENTNoUser agent used for feed fetchingpolite UA
NEWS_FETCH_TIMEOUTNoFetch timeout in seconds20
NEWS_RETENTION_DAYSNoRolling window in days14
NEWS_REFRESH_MINUTESNo>0: serve also refreshes in the background (no timer needed)0

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
latest_newsA

Most recent headlines, newest first. Use for "what's the news", "latest from Ecuador", "what does DW say today", "tech news". All filters are optional and combine with AND.

    Args:
        source: feed id from `sources()` (e.g. "elcomercio", "bbc-mundo", "dw-de").
        lang: ISO 639-1 language of the original items (e.g. "es", "en", "de", "fr", "ar", "ja").
        country: ISO 3166 alpha-2 country of the outlet (e.g. "EC", "US", "DE"); "INT" = international.
        category: one of general, politics, economy, science, tech, sport.
        hours: look-back window in hours (default 24; up to ~336 = two weeks).
        n: max items (default 15, max 50).
    
news_by_topicA

Search recent headlines + summaries by keyword, newest first. Use for "news about X", "what happened with X this week".

    Matching is case- and accent-insensitive substring search on the ORIGINAL-language text, so a
    Spanish word will not find German or Japanese items. Words separated by spaces must ALL appear;
    separate alternatives with "|". To search across languages give the key name/term in each
    language, e.g. "Noboa | ノボア" or "elecciones | Wahl | élection | election".
    Prefer short distinctive terms (names, places) over full sentences.

    Args:
        query: keywords; spaces = AND, "|" = OR between alternatives.
        days: look-back window in days (default 7, max ~14).
        lang: optional ISO 639-1 filter on the original language.
        n: max items (default 20, max 50).
    
compare_coverageA

How different outlets/countries covered one story - for framing comparison ("compare how the German, Qatari, US and Ecuadorian press covered X"). Returns matching items grouped by outlet, plus the active outlets with NO matching item (silence can be telling, but may also just mean the keywords were in another language).

    Same matching as `news_by_topic`: include the key term in every relevant language separated by
    "|", e.g. "Ecuador | Équateur | エクアドル | الإكوادور".
    When answering, compare emphasis, word choice and what each outlet includes or omits, citing each
    outlet by name; translate faithfully and do not inject your own view.

    Args:
        topic: keywords; spaces = AND, "|" = OR between alternatives.
        days: look-back window in days (default 7).
        per_source: max items per outlet (default 3, max 10).
    
sourcesA

List the curated feeds: id, outlet name, language, country, category, whether active, when it was last refreshed successfully, and how many items it currently holds. Use to know which ids/filters exist or to check how fresh the data is.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing feeds, browsing latest news with metadata filters, keyword search, and cross-outlet comparison. Although latest_news and news_by_topic both return news, their descriptions clearly separate browsing from searching, and compare_coverage is uniquely analytical.

Naming Consistency3/5

The names mix a bare noun (sources), a noun phrase (latest_news), a prepositional phrase (news_by_topic), and a verb_noun pattern (compare_coverage). While all are readable, there is no consistent convention across the set.

Tool Count5/5

With only 4 tools, the set is well-scoped and each tool earns its place. There is no redundancy, and the count fits the narrow domain of news retrieval and comparison.

Completeness4/5

The surface covers listing sources, browsing, searching, and comparing coverage, which are the core operations for a news server. Minor gaps exist, such as fetching full article content or paginating results beyond the n parameter, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues