geeknews-mcp-server
Provides tools for retrieving articles and weekly news from GeekNews (news.hada.io), allowing access to tech news with information including titles, URLs, points, authors, and comments, while using caching to reduce server load.
Click on "Install 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., "@geeknews-mcp-serverget the top 5 articles from GeekNews"
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.
GeekNews MCP Server
This project is a Model Context Protocol (MCP) server that fetches articles from GeekNews . It is implemented in Python and uses BeautifulSoup to perform web scraping.
function
|
|
|
|
Tools
get_articlestool: Ability to fetch articles from GeekNewsYou can specify the article type (top, new, ask, show) and the number of articles to return.
Each response contains title, URL, points, author, time, number of comments, and ranking information.
get_weekly_newstool: Ability to fetch weekly news from GeekNewsYou can specify a specific weekly news ID or retrieve the most recent weekly news.
Provides information such as the title, number, ID, content, URL, and list of items of weekly news.
Each item contains a title, URL, and ranking information.
Related MCP server: Mozilla Readability Parser MCP Server
How to use
Installation using Smithery
๐ geeknews-mcp-server
Add server information to the MCP settings file
{ "mcpServers": { "geeknews-mcp-server": { "command": "npx", "args": [ "-y", "@smithery/cli@latest", "run", "@the0807/geeknews-mcp-server", "--key", "smithery์์ ๋ฐ๊ธ ๋ฐ์ ํค" ] } } }
How to install locally
Git Clone
git clone https://github.com/the0807/GeekNews-MCP-Server cd GeekNews-MCP-ServerSetting the environment with uv
uv syncRunning a virtual environment
uv venv source .venv/bin/activateTesting your server with MCP Inspector
uv run mcp mcp dev main.py # ํฐ๋ฏธ๋์ ๋์ค๋ URL(MCP Inspector)๋ก ์ ์ํ์ฌ ์๋ฒ ํ ์คํธ
Code Structure
src/models.py: Define a data class that stores article information.src/parser.py: Parses HTML from the GeekNews website to extract article information.src/client.py: HTTP client that fetches data from the GeekNews website.src/config.py: Define settings and constantssrc/server.py: MCP server implementationmain.py: Server execution entry point
[!Note]
This server relies on the HTML structure of the GeekNews website. If the website structure changes, you may need to update your parsing logic.
Available Tools
2 toolsget_articlesA
GeekNews์์ ์ํฐํด์ ๊ฐ์ ธ์ค๋ ๋๊ตฌ
Args:
type: ์ํฐํด ์ ํ (top, new, ask, show)
limit: ๋ฐํํ ์ํฐํด ์ (์ต๋ 30)
Returns:
List[Dict[str, Any]]: ์ํฐํด ๋ชฉ๋ก
Raises:
ValueError: ์ ํจํ์ง ์์ ์ํฐํด ์ ํ์ด ์ง์ ๋ ๊ฒฝ์ฐ
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | top | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return type (List[Dict[str, Any]]) and raises a ValueError for invalid types, adding some context. However, it doesn't cover important aspects like rate limits, authentication needs, or whether it's read-only/destructive, leaving gaps for a tool with parameters.
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 description is well-structured with sections for Args, Returns, and Raises, making it easy to scan. It's appropriately sized with no redundant sentences. However, the initial purpose statement could be more front-loaded for immediate clarity, though it's still efficient.
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?
Given the tool has 2 parameters, no annotations, and no output schema, the description is moderately complete. It covers parameters and return values adequately but lacks behavioral details like error handling beyond ValueError, performance constraints, or sibling tool differentiation. It's sufficient for basic use but has clear gaps for full contextual understanding.
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 description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'type' is the article type with valid values (top, new, ask, show) and 'limit' is the number of articles to return with a maximum of 30. This fully compensates for the schema's lack of descriptions, providing clear semantics for both parameters.
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 clearly states the tool's purpose: 'GeekNews์์ ์ํฐํด์ ๊ฐ์ ธ์ค๋ ๋๊ตฌ' (Get articles from GeekNews). It specifies the verb '๊ฐ์ ธ์ค๋' (get/fetch) and resource '์ํฐํด' (articles), making the action explicit. However, it doesn't distinguish from the sibling tool 'get_weekly_news', which likely serves a different purpose but isn't contrasted here.
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?
The description provides no guidance on when to use this tool versus alternatives. It mentions parameters and returns but doesn't explain context, prerequisites, or comparisons to 'get_weekly_news'. Usage is implied through parameter details but lacks explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_weekly_newsB
GeekNews์์ ์ฃผ๊ฐ ๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋ ๋๊ตฌ
Args:
weekly_id: ์ฃผ๊ฐ ๋ด์ค ID (๋น ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต๊ทผ ์ฃผ๊ฐ ๋ด์ค๋ฅผ ๊ฐ์ ธ์ด)
Returns:
Dict[str, Any]: ์ฃผ๊ฐ ๋ด์ค ์ ๋ณด
| Name | Required | Description | Default |
|---|---|---|---|
| weekly_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool fetches weekly news but doesn't describe what '๊ฐ์ ธ์ค๋' entails (e.g., read-only operation, data format, potential errors, or rate limits). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and safety profile.
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 description is appropriately sized and front-loaded, with the core purpose stated first in a single sentence. The Args and Returns sections are structured clearly, though the inclusion of type hints like 'Dict[str, Any]' adds minor verbosity without schema support. Overall, it's efficient with minimal waste.
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?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is somewhat complete but has gaps. It covers the parameter semantics well but lacks behavioral details and usage guidelines relative to the sibling tool. Without annotations or output schema, more context on what the tool returns or how it behaves would improve completeness.
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 description adds meaningful semantics beyond the input schema, which has 0% coverage. It explains that 'weekly_id' is a weekly news ID and specifies that an empty string fetches the most recent weekly news, clarifying the parameter's purpose and default behavior. This compensates well for the lack of schema documentation.
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 clearly states the tool's purpose: 'GeekNews์์ ์ฃผ๊ฐ ๋ด์ค๋ฅผ ๊ฐ์ ธ์ค๋ ๋๊ตฌ' (Get weekly news from GeekNews). It specifies the verb '๊ฐ์ ธ์ค๋' (get/fetch) and the resource '์ฃผ๊ฐ ๋ด์ค' (weekly news). However, it doesn't explicitly differentiate from the sibling tool 'get_articles', which might also retrieve news content, leaving some ambiguity about when to use each.
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?
The description provides no guidance on when to use this tool versus alternatives like 'get_articles'. It mentions that an empty weekly_id fetches the most recent weekly news, which is a usage hint, but lacks explicit context, prerequisites, or exclusions for tool selection.
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.
2 tool updates
- First observed
get_articles - First observed
get_weekly_news
TDQS
The two tools have clearly distinct purposes: get_articles retrieves articles by type (top, new, ask, show) with a limit parameter, while get_weekly_news fetches weekly news by ID or the most recent one. There is no overlap in functionality or ambiguity between them.
Both tools follow a consistent verb_noun naming pattern (get_articles and get_weekly_news), using snake_case throughout. The naming is predictable and readable without any deviations or mixed conventions.
With only 2 tools, the server feels thin and under-scoped for a news domain. While the tools cover basic retrieval, there are likely missing operations (e.g., searching, filtering, or interacting with articles) that would enhance functionality, making the count too low for comprehensive coverage.
The tool surface is severely incomplete for a news server. It only provides read operations (get_articles and get_weekly_news) with no support for creating, updating, deleting, or searching articles. This lack of CRUD/lifecycle coverage will limit agent capabilities and cause failures in more complex workflows.
Maintenance
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
Dive into the latest and greatest from the tech world with our Hacker News MCP server.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
BGG MCP provides access to the BoardGameGeek API through the Model Context Protocol, enabling retrโฆ
Related MCP Servers
- AlicenseAqualityFmaintenanceA Model Context Protocol (MCP) server that provides tools for searching and fetching information from Hacker News.476MIT
- AlicenseNot gradedqualityDmaintenanceA Python implementation of an MCP server that extracts webpage content, removes ads and non-essential elements, and transforms it into clean, LLM-optimized Markdown.4MIT
- AlicenseNot gradedqualityDmaintenanceA Python-based MCP server that aggregates real-time trending topics and news from over 30 sources including social media, technology, and finance platforms. It enables AI applications to retrieve the latest hot searches and news from major services like Weibo, Baidu, and IT Home through a unified interface.31MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that scrapes static HTML with BeautifulSoup for analysis by MCP clients.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/the0807/GeekNews-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server



