HackerNews API服务

一个基于Model Context Protocol (MCP)的服务,通过HN Algolia API提供对Hacker News内容的程序化访问,支持搜索故事、获取评论、访问用户资料和浏览HN首页等功能。

  • by sam3690
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 sam3690/Hackernews_mcp

使用说明

HackerNews MCP 服务器

一个模型上下文协议(MCP)服务器,通过HN Algolia API提供对Hacker News内容的程序化访问。该服务器使像Claude这样的AI助手能够实时搜索故事、检索评论、访问用户资料,并浏览HN首页。

特点/特性

  • ✅ 9 MCP 工具 为了全面访问HN(这里HN可能代表某个特定的网络资源、系统或平台,具体含义需根据上下文确定)
  • 🔍(放大镜图标,通常表示搜索或查看细节) 搜索按相关性或日期排序的故事,带过滤功能的评论
  • 📰(新闻纸/报纸的简写或象征) 浏览首页,最新故事,Ask HN(向HN提问),Show HN(展示HN)帖子
  • 👤 人(表示一个人的符号) 详情检索包含嵌套评论和用户资料的特定故事
  • ⚡(闪电符号,常用于表示速度、活力或电) 速率限制尊重HN API限制(每小时10,000次请求)
  • 🛡️ 翻译成中文是:盾牌 类型安全完整的TypeScript,启用严格模式
  • 📊 表格/数据图表 可观察的带有关联ID的结构化JSON日志记录
  • 🧪 表示“实验瓶”或“化学实验”的符号。 经过测试单元测试、集成测试和合同测试(或契约测试)

安装

NPM(发布时)

npm install -g hn-mcp-server

来自来源

git clone https://github.com/YOUR_USERNAME/hn-mcp-server.git
cd hn-mcp-server
npm install
npm run build
npm link

快速入门(VS Code)

最快上手的方法是使用VS Code和GitHub Copilot:

  1. 克隆并构建:

    git clone <your-repo-url>
    cd hn-mcp-server
    npm install
    npm run build
    
  2. 在 VS Code 中打开:

    code .
    
  3. 重新加载 VS Code (Ctrl+Shift+P → “开发者: 重新加载窗口”)

  4. 遵循完整的设置检查清单: 文件路径:docs/VSCODE_CHECKLIST.md(中文可表述为:文档/VS代码检查清单.md 或 目录/VS代码核对表.md,具体根据上下文调整)

  5. 打开Copilot聊天界面 并尝试:

    @workspace What MCP tools are available?
    

    或者

    Show me the top stories from Hacker News
    

📖 分步设置指南: docs/VSCODE_CHECKLIST.md 翻译为中文是:docs/VSCODE检查清单.md

📖 要查看详细的VS Code设置说明,请参阅 docs/VSCODE_SETUP.md(文件名翻译可保持原样,或根据上下文意译为“文档/VS代码设置指南.md”)

⚠️ 工具未显示? 见 docs/TROUBLESHOOTING_VSCODE.md 翻译为中文是:docs/VSCode故障排除指南.md

💡 小贴士在VS Code中,MCP(Microchip C/C++编译器插件)支持是实验性的。为了获得最佳体验,请使用 Claude Desktop(可译为“Claude桌面版”或根据具体语境简化为“Claude桌面”) (见下文配置)。

配置

配备GitHub Copilot的VS Code

使用这台服务器最简单的方法是直接在VS Code中配合GitHub Copilot使用:

  1. 构建服务器:

    npm run build
    
  2. 配置已设置完毕 在 .vscode/mcp.json:

    {
      "hackernews": {
        "command": "node",
        "args": ["${workspaceFolder}/dist/index.js"],
        "env": {
          "DEBUG": "0"
        }
      }
    }
    
  3. 重新加载 VS Code 或者重新启动 Copilot 扩展

  4. 测试一下 通过询问Copilot:

    • “给我展示Hacker News上的热门故事”
    • “在HN上搜索关于AI的故事”
    • “获取用户‘pg’的个人资料”

Claude Desktop(可译为“Claude桌面版”)

添加到您的Claude桌面配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json

{
  "mcpServers": {
    "hackernews": {
      "command": "hn-mcp-server"
    }
  }
}

或者如果从源代码安装:

{
  "mcpServers": {
    "hackernews": {
      "command": "node",
      "args": ["/path/to/hn-mcp-server/dist/index.js"]
    }
  }
}

重启 Claude 桌面应用以激活服务器。

可用工具

1. search_stories

通过高级筛选功能,按相关性搜索HN故事。

{
  query: "artificial intelligence",    // Search term
  tags: "story,front_page",           // Filter by tags
  numericFilters: "points>=100",      // Minimum points
  page: 0,                            // Pagination
  hitsPerPage: 20                     // Results per page
}

2. search_by_date

按日期排序搜索故事/评论(最新在前)。

{
  query: "TypeScript",
  tags: "story",
  numericFilters: "created_at_i>1640000000",  // Unix timestamp
  page: 0,
  hitsPerPage: 20
}

3. search_comments

搜索评论,并可选择按故事/作者进行筛选。

{
  query: "React hooks",
  tags: "author_pg",              // Filter by author
  sortByDate: false,              // Sort by relevance
  page: 0,
  hitsPerPage: 20
}

4. get_front_page

获取当前HN首页的新闻故事。

{
  page: 0,
  hitsPerPage: 30
}

5. get_latest_stories

获取最近提交的故事。

{
  page: 0,
  hitsPerPage: 20
}

6. get_ask_hn

检索Ask HN帖子(社区问题)。

{
  page: 0,
  hitsPerPage: 20
}

7. get_show_hn

检索Show HN帖子(项目展示)。

{
  page: 0,
  hitsPerPage: 20
}

8. get_story

通过ID获取特定故事,并包含完整的嵌套评论树。

{
  id: 8863  // Famous "How to Start a Startup" post
}

9. get_user

通过用户名检索用户资料。

{
  username: "pg"  // Paul Graham
}

在Claude中的示例用法

搜索人工智能相关故事:

Show me the top stories about AI from Hacker News

登上头条新闻:

What's currently on the Hacker News front page?

查找用户信息:

Tell me about the HN user 'pg'

高级搜索:

Find recent stories about TypeScript with at least 50 points

发展

先决条件

  • Node.js 20 LTS 或更高版本
  • npm 或 yarn

设置

git clone https://github.com/YOUR_USERNAME/hn-mcp-server.git
cd hn-mcp-server
npm install

命令

npm run build        # Compile TypeScript
npm run dev          # Watch mode
npm test             # Run all tests
npm run test:watch   # Test watch mode
npm run lint         # Lint code
npm run format       # Format code
npm run check        # Lint + type check
npm run ci           # Full CI workflow

项目结构

src/
├── index.ts           # Main entry point
├── server.ts          # MCP server initialization
├── tools/             # MCP tool implementations (one per file)
│   ├── search-stories.ts
│   ├── get-story.ts
│   └── ...
├── lib/               # Shared utilities
│   ├── hn-client.ts   # HN API client
│   ├── rate-limiter.ts
│   ├── logger.ts
│   ├── errors.ts
│   └── validators.ts
└── types/             # TypeScript type definitions
    ├── hn-api.ts
    └── mcp.ts

速率限制

HN Algolia API 有一个限制为 每小时10,000个请求 按IP地址划分。此服务器:

  • 自动追踪请求次数
  • 在90%(9,000个请求)时发出警告
  • 在95%(9,500个请求)时抛出错误
  • 每小时重置计数器

记录日志

使用关联ID的结构化JSON日志记录:

# Enable debug logging
DEBUG=1 hn-mcp-server

# View logs in Claude Desktop
# macOS: ~/Library/Logs/Claude/mcp*.log
# Windows: %APPDATA%\Claude\logs\mcp*.log
# Linux: ~/.config/claude/logs/mcp*.log

错误处理

所有错误均返回格式为MCP的响应,其中包含:

  • 清晰的错误信息
  • 错误代码(RATE_LIMIT_EXCEEDED,ITEM_NOT_FOUND 等)
  • 调试上下文
  • 建议用户采取的操作

贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支(git checkout -b feature/amazing-feature)
  3. 根据宪法原则进行修改
  4. 运行质量门(npm run ci)
  5. 提交(git commit -m 'Add amazing feature')
  6. 推动(git push origin feature/amazing-feature)
  7. 提交一个拉取请求

许可证

MIT 许可证 - 详见 许可证 文件中有详细信息。

链接

支持


遵循MCP最佳实践和章程原则,用心打造