Hacker News数据服务

一个提供Hacker News内容交互功能的MCP服务器,支持获取热门故事、故事详情、评论及搜索功能。

  • by GeorgeNance
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 GeorgeNance/hackernews-mcp

使用说明

📰 黑客新闻MCP服务器

一种模型上下文协议(MCP)服务器,提供获取黑客新闻内容并与之交互的工具。该服务器使AI助手能够访问实时黑客新闻数据,包括头条新闻、故事细节、评论和搜索功能。

🚀 特性

🛠️ 可用工具

  • get_top_stories -从Hacker News获取最新头条新闻

    • 可配置数量(1-100层)
    • 可选文本内容包含
    • 返回故事元数据,包括标题、URL、分数、作者和评论数
  • get_story_details -获取特定故事的详细信息

    • 获取完整的故事元数据
    • 带螺纹结构的可选注释包含
    • 从链接文章中提取可选的降价内容
  • get_story_comments -检索故事的热门评论

    • 可配置的最低分数过滤
    • 可调评论线深度(1-10级)
    • 限制返回的评论数(1-100)
    • 格式化为具有线程结构的可读文本
  • search_stories -按关键字搜索最近的故事

    • 搜索故事标题、内容和网址
    • 可配置的时间范围(1-168小时)
    • 限制结果(1-50个故事)

📋 先决条件

  • Node.js 18+
  • npm或纱线
  • MCP兼容客户端(如Claude Desktop)

🔧 安装

1.克隆存储库

git clone https://github.com/yourusername/hackernews-mcp.git
cd hackernews-mcp

2.安装依赖项

npm install

3.构建服务器

npm run build

🎯 用法

使用克劳德桌面

将服务器添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json

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

与其他MCP客户端

服务器通过stdio通信,可以与任何兼容MCP的客户端一起使用:

node build/index.js

🔍 示例用法

连接后,您可以向您的AI助手询问以下问题:

  • “今天黑客新闻的头条新闻是什么?”
  • “获取黑客新闻故事12345678的详细信息”
  • “给我看看那个病毒式AI故事的评论”
  • “搜索有关TypeScript的最新故事”

🛠️ 发展

构建项目

npm run build

开发观看模式

npm run watch

整理并格式化代码

npm run lint
npm run format

运行MCP检查器

调试和测试:

npm run inspector

这将启动MCP检查器,提供一个web界面来测试服务器的工具并检查通信。

📦 代码质量和贡献

  • 代码质量:
    该项目使用以下方式强制执行代码质量和风格 ESLint 和 更漂亮所有代码都在CI(GitHub Actions)中检查,并且在合并之前必须通过linting和格式化。
  • 类型安全:
    所有工具处理程序都使用显式类型保护进行运行时参数验证和健壮的TypeScript类型。
  • CI/CD:
    每个推送和拉取请求都通过GitHub Actions运行完整的构建、lint和(未来)测试套件。
  • 如何做出贡献:
    1. 分叉存储库
    2. 创建要素分支(git checkout -b feature/amazing-feature)
    3. 提交您的更改(git commit -m 'Add amazing feature')
    4. 跑 npm run lint 和 npm run format 推之前
    5. 推到分支(git push origin feature/amazing-feature)
    6. 打开拉取请求

📚 api参考

get_top_stores

{
  count?: number;        // Number of stories (1-100, default: 30)
  include_text?: boolean; // Include story text content (default: false)
}

get_story_tails

{
  story_id: number;           // Required: HN story ID
  include_comments?: boolean; // Include comments (default: false)
  include_markdown?: boolean; // Extract article as markdown (default: false)
}

get_story_comments

{
  story_id: number;    // Required: HN story ID
  min_score?: number;  // Minimum comment score (default: 1)
  max_depth?: number;  // Max thread depth (1-10, default: 3)
  limit?: number;      // Max comments (1-100, default: 20)
}

搜索_故事

{
  query: string;              // Required: Search keywords
  limit?: number;             // Max results (1-50, default: 20)
  time_range_hours?: number;  // Hours to search back (1-168, default: 24)
}

🏗️ 建筑

服务器由以下组件构建:

  • TypeScript 用于类型安全和开发人员体验
  • @模型上下文协议/sdk 用于MCP协议实现
  • 轴 用于向Hacker News API发送HTTP请求
  • jsdom 和 拒绝 用于HTML到Markdown的转换
  • 私有ip 安全(阻止私有IP访问)

关键组件

  • src/index.ts -使用工具处理程序的主服务器实现
  • src/fetcher.ts -用于获取和转换web内容的实用程序类
  • build/ -编译的JavaScript输出(自动生成)

🔒 安全

  • 阻止对私有IP地址的请求以防止本地网络访问
  • 通过Hacker News API自然限制进行速率限制
  • 所有工具参数的输入验证
  • 错误处理和优雅降级

📜 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📞 支持

如果您遇到任何问题或有疑问:

  1. 检查 问题 页
  2. 使用MCP检查器进行调试: npm run inspector
  3. 使用有关您问题的详细信息创建新问题

由以下材料制成❤️ 对于MCP社区