Skip to main content
Glama
HappyMonkeyAI

article-research-mcp

article-research-mcp

MCP server for article/tutorial research during agent planning — dev.to search, deduped ranked briefs, methodology aligned with Hermes deep-research.

Agent docs: CONTEXT.md, HERMES.md, docs/adr/, research/

Sources (v0.2)

Source

Id

dev.to

devto

Hacker News (Algolia)

hn

RSS/Atom (configurable)

rss

Default: devto + hn. Add rss via sources=["devto","hn","rss"].

RSS feedsARTICLE_RESEARCH_RSS_FEEDS (comma-separated URLs) or built-in defaults (dev.to mcp/ai tags, hnrss frontpage).

Related MCP server: News Aggregator MCP Server

LLM scoring (optional)

Set OpenAI-compatible API (e.g. LAN Ollama):

export OPENAI_COMPAT_BASE_URL=http://localhost:11434/v1
export OPENAI_COMPAT_API_KEY=ollama
export OPENAI_COMPAT_MODEL=lfm2.5:latest
  • search_articles(..., score_with_llm=true)

  • build_topic_brief(..., depth=deep) auto-enables LLM scoring when env is set

Without env vars, deterministic ranking only.

Tools

Tool

Purpose

plan_article_research

Step list + tool sequence for quick/standard/deep

get_research_methodology

Depth levels, source tiers, checklist

search_articles

Multi-source search (devto + hn)

build_topic_brief

Dedupe + rank + markdown brief

get_article

Full body by source + id

save_research_note

Write ~/research/<slug>/ARTICLE_BRIEF.md

list_article_sources

Supported sources + LLM config status

Resources

  • article-research://methodology

  • article-research://plan/{topic}

Daily briefs (cron)

ARTICLE_DAILY_TOPICS="mcp,agent planning" uv run python scripts/daily_brief.py

Writes ~/research/daily-briefs/<date>-<topic>/BRIEF.md. Hermes cron: research/daily_article_brief.sh at 08:00 UTC (job 6ab3a0a34eb2), delivers summary to this Slack DM when stdout is non-empty.

Run locally

cd /path/to/article-research-mcp
uv sync
uv run article-research-mcp

Dynamic MCP Proxy (catalogue.json)

Entry name: article_research (see DynamicMCPProxy catalogue.json).

Hermes (optional direct register)

cd /path/to/article-research-mcp
uv sync
printf 'y\n' | hermes mcp add article_research \
  --command uv \
  --args --directory,/path/to/article-research-mcp,run,article-research-mcp

New session or /reload-mcp + /reset.

Env

Variable

Default

ARTICLE_RESEARCH_ROOT

~/research

OPENAI_COMPAT_BASE_URL

— (e.g. http://localhost:11434/v1)

OPENAI_COMPAT_API_KEY

ollama

OPENAI_COMPAT_MODEL

lfm2.5:latest

  • devto-mcp-server — thin dev.to-only server (superseded for planning use this umbrella)

  • Hermes skill deep-research — multi-lens synthesis after briefs

License

MIT

Available Tools

7 tools
build_topic_briefC

Fetch, dedupe, rank articles and return a markdown brief for planning. depth=deep enables LLM scoring automatically when OPENAI_COMPAT_* is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
depthNostandard
limitNo
tagNo
sourcesNo
score_with_llmNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions automatic LLM scoring when depth=deep and environment variables are set, but does not disclose other behavioral traits like side effects, authentication needs, or data handling.

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 description is very concise with two sentences. It front-loads the core action clearly. However, it could be slightly more structured to improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the tool (fetch, dedupe, rank) and 6 parameters with no schema descriptions, the description omits critical context. It fails to explain the output format fully or how parameters like limit, tag, and sources affect behavior.

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

Parameters2/5

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

Schema description coverage is 0%, but the description only adds meaning for the 'depth' parameter (explaining LLM scoring). The other five parameters (topic, limit, tag, sources, score_with_llm) are not explained beyond their names and schema defaults.

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 clearly states the tool fetches, dedupes, ranks articles and returns a markdown brief for planning. It uses specific verb+resource, but does not explicitly differentiate from the sibling tool 'plan_article_research', which may have overlapping functionality.

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?

No guidance on when to use this tool versus alternatives like 'plan_article_research' or 'search_articles'. There is no mention of prerequisites, context, or 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.

get_articleB

Fetch full article body by source and numeric id (devto | hn).

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
article_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must communicate behavioral traits. It states 'Fetch full article body' but does not disclose behavior on missing articles, rate limits, authentication, or uniqueness of article_id across sources.

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?

Single sentence of 11 words, highly concise with no redundancy. Every word contributes to the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description lacks context about what the 'full article body' entails, error handling, or any integration with sibling tools. For a tool with 2 parameters and zero parameter descriptions, this is insufficient.

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

Parameters2/5

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

Schema description coverage is 0%. The description only mentions 'source and numeric id (devto | hn)', adding minimal meaning beyond the schema types. It fails to explain valid source values or article_id constraints.

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?

The description uses a specific verb ('Fetch') and resource ('full article body') along with the required parameters. It also lists the allowed sources in parentheses, clearly distinguishing this tool from siblings like search_articles or list_article_sources.

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?

The description implies usage when one has a source and numeric id, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare to sibling tools.

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

get_research_methodologyA

Full methodology markdown (depth levels, source tiers, checklist).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description clarifies it returns markdown content (read operation). However, it does not disclose format details, size, or potential rate limits. The output schema exists but is not referenced.

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?

The description is a single sentence that conveys the essential information without waste. It is front-loaded and efficient.

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?

Given the tool has no parameters and an output schema, the description is adequate but minimal. It does not explain when to use this tool versus siblings like plan_article_research, nor does it elaborate on the return format. Slightly more context would improve completeness.

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?

There are zero parameters, so schema coverage is 100% by default. The description does not need to add parameter information; it adds meaning by stating the content of the output. Baseline 4 is appropriate.

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?

The description clearly states the tool returns 'Full methodology markdown' and specifies contents like depth levels, source tiers, checklist. This distinguishes it from sibling tools like get_article or plan_article_research.

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?

The description implies usage for retrieving methodology but does not explicitly state when to use or when not, nor does it mention alternatives. Sibling tools exist but no guidance is provided.

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

list_article_sourcesA

List supported sources and whether LLM scoring is configured.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. While 'list' implies a safe read operation, the description does not explicitly state read-only behavior, absence of side effects, or any prerequisites. It is minimally transparent but not misleading.

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?

Single sentence front-loads the action and key information. No wasted words; every part contributes to understanding the tool's function.

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?

Given the tool's simplicity (no parameters, output schema exists), the description adequately covers the main purpose. It could mention that it returns a static list or that it does not require inputs, but it is largely complete for an agent.

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?

There are no parameters, so baseline is 4. The description adds value by specifying that the output includes both supported sources and their LLM scoring status, which is not inferable from the empty schema.

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?

The description clearly states the tool lists supported sources and their LLM scoring configuration. The verb 'list' and resource 'supported sources' are specific, and it distinguishes itself from sibling tools that involve searching, creating, or retrieving articles.

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?

No guidance on when to use this tool versus alternatives. The description only states what it does without suggesting appropriate contexts or mentioning situations when one might prefer a sibling tool.

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

plan_article_researchC

Return a structured research plan for agents (steps, tool order, output paths). depth: quick | standard | deep

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
depthNostandard
tagsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only mentions returning a plan, with no details on side effects, permissions, rate limits, or error handling. The tool appears read-only, but this is unstated.

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?

The description is extremely concise: one sentence and a line listing depth options. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters and an output schema, the description falls short. It explains only depth partially, ignoring topic and tags. Users/agents lack full understanding of usage.

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

Parameters2/5

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

Schema has 0% description coverage. The description only adds meaning for the depth parameter by listing possible values (quick, standard, deep), but does not explain the required topic parameter or the optional tags parameter.

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 clearly states the tool returns a structured research plan for agents, specifying steps, tool order, and output paths. However, it does not differentiate from sibling tools like build_topic_brief, which may produce similar plans.

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?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, scenarios, or exclusions.

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

save_research_noteC

Persist a research note under ~/research// (creates dirs).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes
content_markdownYes
slugNo
filenameNoARTICLE_BRIEF.md

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

The description mentions directory creation ('creates dirs'), which is a behavioral trait. However, with no annotations, it fails to disclose whether files are overwritten, what happens if the note already exists, or any authorization needs.

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?

Single sentence, front-loaded with verb and resource, no wasted words. Efficient for the small amount of information it provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 4 parameters and an output schema, the description lacks parameter documentation and output explanation. It covers only the file path side effect, missing essential details for correct invocation.

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

Parameters1/5

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

With 0% schema description coverage, the description should compensate but does not. It does not explain 'slug', 'filename', 'topic', or 'content_markdown' beyond their names, leaving the agent to guess semantics.

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 clearly states the action ('persist') and resource ('research note') with location ('~/research/<slug>/'). It differentiates from siblings like 'build_topic_brief' or 'get_article' by its saving nature, though it doesn't explicitly contrast them.

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?

No guidance on when to use this tool versus alternatives (e.g., 'build_topic_brief') or prerequisites. The agent must infer context from the name and description alone.

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

search_articlesA

Search article sources (default: devto + hn). Returns unified summaries. Set score_with_llm=true when OPENAI_COMPAT_BASE_URL is configured (e.g. Ollama).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
sourcesNo
limitNo
tagNo
top_daysNo
score_with_llmNo

Output Schema

ParametersJSON 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 provided, so description must disclose behavior. 'Returns unified summaries' is vague; no mention of external API calls, rate limits, or side effects. Insufficient transparency.

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?

Extremely concise: two sentences, front-loaded with purpose. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite presence of output schema, description fails to explain output format, pagination, or error behavior. For a search tool with 6 parameters, this is incomplete.

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

Parameters2/5

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

Schema description coverage is 0%. Description adds meaning for sources default and score_with_llm condition, but other parameters (limit, tag, top_days) remain undocumented. Inadequate compensation.

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?

Description clearly states verb 'Search', resource 'article sources', and default sources (devto + hn). Differentiates from siblings like get_article and list_article_sources.

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?

Provides explicit condition for setting score_with_llm parameter based on configuration. Lacks guidance on when to use alternatives, but the condition is specific and helpful.

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. Dates show when Glama detected each change.

  1. 7 tool updatesv0.3.0
    • First observedbuild_topic_brief
    • First observedget_article
    • First observedget_research_methodology
    • First observedlist_article_sources
    • First observedplan_article_research
    • First observedsave_research_note
    • First observedsearch_articles

TDQS

A3.5/5.0
Disambiguation5/5

Each tool serves a distinct function: planning, searching, briefing, fetching articles, saving notes, and providing metadata. No two tools have overlapping purposes, ensuring clear selection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., build_topic_brief, get_article, list_article_sources). No mixing of styles or conventions.

Tool Count5/5

Seven tools cover the core research workflow without being excessive. The scope is well-balanced, providing essential functionality without bloat.

Completeness4/5

The set covers planning, searching, fetching, and saving, but lacks a tool to retrieve or list saved research notes. This minor gap does not critically impair the workflow.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to run research queries across multiple public sources (Hacker News, Reddit, GitHub, Brave Search) in parallel, returning normalized results.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to fetch categorized news headlines and full article text from a multi-topic RSS aggregator, with no API keys required.
    13
    ISC

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HappyMonkeyAI/article-research-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server