Hacker新闻数据服务

一个提供Hacker News结构化数据抓取和解析的MCP服务器,支持获取不同类型的故事(top、new、ask、show、jobs)及其相关数据。

  • by pskill9
  • JavaScript
  • 本地部署
  • 40 星标
  • 更新于
在 GitHub 查看 pskill9/hn-server

使用说明

黑客新闻MCP服务器

一种模型上下文协议(MCP)服务器,提供从黑客新闻中获取故事的工具。此服务器解析news.ycombinator.com中的HTML内容,并为不同类型的故事(top、new、ask、show、jobs)提供结构化数据。

特性

  • 获取不同类型的故事(热门、新、提问、展示、工作)
  • 获取结构化数据,包括标题、URL、点数、作者、时间戳和评论数
  • 可配置的返回故事数限制
  • 干净的错误处理和验证

安装

  1. 克隆存储库:
git clone https://github.com/pskill9/hn-server
cd hn-server
  1. 安装依赖项:
npm install
  1. 构建服务器:
npm run build
  1. 添加到MCP设置配置文件中(位置取决于您的系统):

对于VSCode Claude扩展:

{
  "mcpServers": {
    "hacker-news": {
      "command": "node",
      "args": ["/path/to/hn-server/build/index.js"]
    }
  }
}

用法

服务器提供了一个名为 get_stories 它可以用来从黑客新闻中获取故事。

工具:get_stories

参数:

  • type (string):要获取的故事类型
    • 选项:“top”、“new”、“ask”、“show”、“jobs”
    • 默认值:“top”
  • limit (number):要返回的故事数
    • 范围:1-30
    • 默认值:10

示例用法:

use_mcp_tool with:
server_name: "hacker-news"
tool_name: "get_stories"
arguments: {
  "type": "top",
  "limit": 5
}

样本输出:

[
  {
    "title": "Example Story Title",
    "url": "https://example.com/story",
    "points": 100,
    "author": "username",
    "time": "2024-12-28T00:03:05",
    "commentCount": 50,
    "rank": 1
  },
  // ... more stories
]

与克劳德融合

要将此MCP服务器与Claude一起使用,您需要:

  1. 安装Claude桌面应用程序或VSCode Claude扩展程序
  2. 在您的设置中配置MCP服务器
  3. 使用Claude的自然语言界面与Hacker News进行交互

配置

对于Claude桌面应用程序,将服务器配置添加到:

// ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
// %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "hacker-news": {
      "command": "node",
      "args": ["/path/to/hn-server/build/index.js"]
    }
  }
}

对于VSCode Claude扩展,添加以下内容:

// VSCode Settings JSON
{
  "mcpServers": {
    "hacker-news": {
      "command": "node",
      "args": ["/path/to/hn-server/build/index.js"]
    }
  }
}

交互示例

配置后,您可以使用自然语言与Claude交互以获取Hacker News故事。示例:

  • “给我看看黑客新闻的前5个故事”
  • “Ask HN的最新帖子是什么?”
  • “从今天开始为我提供最热门的Show HN提交内容”

Claude将自动使用适当的参数来获取您想要的故事。

故事对象结构

每个故事对象包含:

  • title (string):故事标题
  • url (字符串,可选):故事的URL(可能是文本帖子的内部HN URL)
  • points (number):赞成票数
  • author (string):海报的用户名
  • time (string):故事发布的时间戳
  • commentCount (number):评论数
  • rank (number):列表中的位置

发展

服务器是使用以下方式构建的:

  • TypeScript
  • 模型上下文协议SDK
  • Axios用于HTTP请求
  • Cheerio用于HTML解析

要修改服务器,请执行以下操作:

  1. 对以下内容进行更改 src/index.ts
  2. 重建:
npm run build

错误处理

该服务器包括强大的错误处理功能,用于:

  • 故事类型无效
  • 网络故障
  • HTML分析错误
  • 参数值无效

错误将返回相应的错误代码和描述性消息。

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-您可以在自己的项目中自由使用。