HN-MCP
# <img src="assets/hn-mcp-icon-white-background.png" width="48" align="center"/> HN-MCP
### Hacker News Browser for Claude Desktop and AI Assistants
A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that enables Claude Desktop and other AI assistants to browse Hacker News, search discussions, and analyze tech trends. Clean, fast, and actually works - no API keys required.
[](https://www.npmjs.com/package/hn-mcp)
[](https://www.npmjs.com/package/hn-mcp)
[](https://opensource.org/licenses/MIT)
[](https://hub.docker.com/r/karanb192/hn-mcp)
[](https://github.com/karanb192/hn-mcp)
## Table of Contents
- [What makes HN-MCP different?](#what-makes-hn-mcp-different)
- [Quick Start](#quick-start-30-seconds)
- [What can it do?](#what-can-it-do)
- [Available Tools](#available-tools)
- [Installation Options](#installation-options)
- [Troubleshooting](#troubleshooting)
- [Development](#development)
- [Support](#support)
## What makes HN-MCP different?
- **π Zero setup** - Works instantly! Unlike Reddit, Twitter, or other platforms, Hacker News API requires **no authentication, no API keys, no registration**. Just install and go.
- **β‘ Smart caching** - 50MB LRU cache with adaptive TTLs delivers 50ms cached responses (vs 200-500ms uncached). Popular content stays cached longer automatically.
- **π― Clean data** - Direct from HN's Firebase API and Algolia Search. No fake metrics, no made-up sentiment scores, no hallucinated data.
- **π§ LLM-optimized** - Response formats designed specifically for AI assistants. Structured JSON that Claude can parse perfectly every time.
- **π¦ TypeScript** - 100% TypeScript with strict typing. Zod schemas validate every input and output. Reliable and maintainable.
- **β
Multi-channel distribution** - Available via npm, Docker Hub, MCP Registry, and .mcpb extension. Choose your preferred installation method.
- **π³ Docker ready** - Multi-platform images (amd64, arm64) with health checks and optimized builds. Deploy anywhere in seconds.
## Quick Start (30 seconds)
### For Claude Desktop
Add this to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"hn": {
"command": "npx",
"args": ["hn-mcp"]
}
}
}
```
That's it! HN-MCP is now available in Claude.
## What can it do?
Ask your AI assistant to:
- π **"What's trending on Hacker News?"** - Browse top stories
- π **"Search for discussions about AI"** - Search across all content
- π¬ **"Get comments on story 12345678"** - Fetch full discussion threads
- π€ **"Analyze user pg"** - Get user karma, submissions, and activity
- π **"Explain HN karma"** - Understand Hacker News terminology
## Perfect for:
- π **Startup founders** - Monitor YC companies, track competitor launches, discover market trends
- πΌ **Tech recruiters** - Find talented developers, understand the tech community pulse
- π **Market researchers** - Analyze tech sentiment, identify emerging technologies, track discussion trends
- βοΈ **Content creators** - Find trending topics, research technical subjects, engage with developer community
- π **Developers** - Stay updated on latest tools, frameworks, and best practices discussed by peers
- π° **Tech journalists** - Source breaking stories, find expert opinions, track industry discussions
- π **Researchers** - Analyze tech community behavior, study information diffusion, collect discussion data
## Available Tools
### `browse_stories`
Browse posts from Hacker News by category.
```
- Types: top, new, best, ask (Ask HN), show (Show HN), job
- Limit: 1-100 stories (default: 30)
- Returns: Title, score, author, comments, URL
```
### `search_hn`
Search across all Hacker News content.
```
- Query: Your search terms
- Filter by: Type, date range, author
- Sort by: relevance or date
- Uses: Algolia's HN Search API
```
### `get_story_details`
Get a story with all its comments.
```
- Input: Story ID
- Returns: Full story + nested comment threads
- Options: Max comments, thread depth
```
### `user_analysis`
Analyze a Hacker News user's profile.
```
- Username: Any HN user
- Returns: Karma, account age, recent submissions
- Insights: Activity patterns, top posts
```
### `hn_explain`
Get explanations of HN terms.
```
- Terms: karma, flagged, dupe, Show HN, Ask HN, etc.
- Returns: Definition + context
```
## Installation Options
### Claude Desktop Extension (.mcpb)
**Easiest method** - One-click install for Claude Desktop:
1. Download `hn-mcp.mcpb` from [latest release](https://github.com/karanb192/hn-mcp/releases/latest)
2. Open Claude Desktop
3. Click on the extension file to install
4. Restart Claude Desktop
That's it! HN-MCP will be available immediately.
### Quick Start with npx
```bash
# Claude Desktop - add to config (see Quick Start above)
npx hn-mcp
# HTTP mode for testing
HN_MCP_HTTP=true npx hn-mcp
```
### Global Install
```bash
npm install -g hn-mcp
hn-mcp # Run in stdio mode
HN_MCP_HTTP=true hn-mcp # Run in HTTP mode
```
### Using Docker
```bash
# Quick start - HTTP mode for API access
docker run -e HN_MCP_HTTP=true -p 3000:3000 karanb192/hn-mcp:latest
# stdio mode for development
docker run -it karanb192/hn-mcp:latest
# With docker-compose
docker-compose up
```
### From Source
```bash
git clone https://github.com/karanb192/hn-mcp.git
cd hn-mcp
npm install
npm run build
npm link
```
## Rate Limits
| API | Official Limit | Our Limit | Notes |
|-----|---------------|-----------|-------|
| HN Firebase | None β
| 300/min | Self-imposed for courtesy |
| Algolia Search | None β
| 300/min | Max 1000 results per query |
## Why HN-MCP?
### What others do wrong:
- β **Scoped npm names** - `@someone/hn-something` is hard to remember
- β **Not published to npm** - Manual installation only
- β **No caching** - Slow repeated requests
- β **Poor documentation** - Unclear how to use
### What we do right:
- β
**Clean package name** - Just `hn-mcp`
- β
**Smart caching** - 50MB LRU cache with adaptive TTLs
- β
**Clear documentation** - You're reading it
- β
**TypeScript** - Type-safe and maintainable
## Examples
### Your AI can now answer:
**"What are the top posts about GPT-4 today?"**
```
β search_hn with query="GPT-4", dateRange="last24h", sortBy="relevance"
```
**"Show me what's trending on Hacker News"**
```
β browse_stories with type="top", limit=10
```
**"What are people saying about this article?"**
```
β search_hn with the article URL to find discussions
```
**"Analyze the user dang"**
```
β user_analysis with username="dang"
```
**"Get the comments from HN story 12345678"**
```
β get_story_details with id="12345678"
```
## Troubleshooting
### Common Issues
**"Command not found" error**
```bash
# Ensure npm is installed
node --version
npm --version
# Try with full npx path
$(npm bin -g)/hn-mcp
```
**Connection issues**
- Hacker News may be down (check https://status.ycombinator.com)
- Firewall blocking requests
- Try restarting the MCP server
**Search returns max 1000 results**
- This is Algolia's hard limit
- Use date filters to narrow results
- Try more specific search queries
### Environment Variables
Configure HN-MCP using environment variables. See [.env.example](.env.example) for detailed documentation.
| Variable | Description | Default |
|----------|-------------|---------|
| `HN_MCP_HTTP` | Run as HTTP server instead of stdio | `false` |
| `HN_MCP_PORT` | HTTP server port | `3000` |
| `HN_MCP_NO_CACHE` | Disable caching for real-time data | `false` |
| `HN_MCP_RATE_LIMIT` | Override rate limit (requests/minute) | `300` |
**Quick setup:**
```bash
# Copy example file
cp .env.example .env
# Edit with your preferences
nano .env
```
## Development
```bash
# Install dependencies
npm install
# Run in development
npm run dev
# Build
npm run build
# Run tests
npm run typecheck
# Deploy locally
./deploy-server.sh # Port 3000
./deploy-server.sh -p 8080 # Custom port
# Docker build
docker build -t karanb192/hn-mcp .
docker run -e HN_MCP_HTTP=true -p 3000:3000 karanb192/hn-mcp
# Docker development with hot reload
docker-compose --profile dev up
```
### Requirements
- Node.js >= 18.0.0
- npm or yarn
- TypeScript 5.5+
## Contributing
PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
We keep things simple:
- Clean TypeScript code
- Smart caching
- Clear documentation
- Fast responses
## Support
- π [Report bugs](https://github.com/karanb192/hn-mcp/issues)
- π‘ [Request features](https://github.com/karanb192/hn-mcp/issues)
- β [Star on GitHub](https://github.com/karanb192/hn-mcp)
## License
MIT - Use it however you want!
---
Made with β€οΈ for the MCP community by the creator of [reddit-mcp-buddy](https://github.com/karanb192/reddit-mcp-buddy). No venture capital, no tracking, just a good MCP server.TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: browse_stories for listing stories, get_story_details for fetching story content and comments, hn_explain for term explanations, search_hn for searching content, and user_analysis for user profiles. There is no overlap in functionality, making tool selection unambiguous.
The naming follows a consistent verb_noun pattern with snake_case throughout, such as browse_stories and get_story_details. The only minor deviation is hn_explain, which uses a prefix 'hn_' instead of a verb, but it still fits the overall readable convention.
With 5 tools, the server is well-scoped for interacting with Hacker News. Each tool serves a specific, non-trivial function, such as browsing, fetching details, explaining terms, searching, and analyzing users, making the count appropriate and efficient.
The tool set covers core Hacker News interactions well, including story listing, detail retrieval, searching, and user analysis. A minor gap is the lack of tools for posting or interacting with content, but for a read-focused server, the coverage is comprehensive and allows agents to handle most common tasks.