README
🚀 HackerNews MCP 服务器
这是一个全面的模型上下文协议(MCP)服务器,它能与 HackerNews API 实现无缝集成,让 AI 助手可以通过标准化的 MCP 接口访问、分析和理解 HackerNews 上的内容。
🚀 快速开始
# 安装依赖
npm install
# 构建项目
npm run build
# 启动服务器
npm start
然后重启与 MCP 兼容的客户端(如 Cursor),以连接到服务器。
✨ 主要特性
🔧 工具(5 个交互式命令)
-
search_posts- 搜索并筛选 HackerNews 帖子- 可按关键词、作者、分数和日期范围进行筛选
- 示例:"查找关于 'AI' 且分数大于 100 的故事"
-
get_post- 获取全面的帖子详情- 包含元数据、评论树和参与度指标
- 示例:"获取故事 44473319 的完整详情及评论"
-
search_user- 分析用户资料和活动- 包括用户统计信息、热门故事和贡献模式
- 示例:"分析用户 'pg' 并展示其活动情况"
-
search_trending- 查找当前热门话题- 通过对热门故事进行关键词频率分析
- 示例:"今天 HackerNews 上有哪些热门话题?"
-
search_comments- 分析评论参与度- 包括评论统计信息、顶级评论者和讨论模式
- 示例:"分析故事 44473319 的评论"
📦 安装指南
前提条件
- Node.js 18+
- npm 或 yarn
安装步骤
-
克隆并安装:
git clone <repository-url> cd hackernews-mcp-server npm install -
构建项目:
npm run build -
配置 MCP 客户端(Cursor):
.cursor/mcp.json文件已配置好- 重启 Cursor 以加载 MCP 服务器
-
开始使用:
npm start
💻 使用示例
基础用法
🔍 搜索帖子 - 按主题查找故事
# 我们测试的内容:
search_posts with query="AI", minScore=50, limit=10
# 我们得到的结果:
- "'Positive review only': Researchers hide AI prompts in papers" (100 分,52 条评论)
- "Cops in [Spain] think everyone using a Google Pixel must be a drug dealer" (65 分,50 条评论)
使用场景:
- 查找特定主题下高参与度的故事
- 按作者、分数阈值或日期范围进行筛选
- 研究所在领域的热门讨论
📄 获取帖子详情 - 深度故事分析
# 我们测试的内容:
get_post for story ID 44473319 (AI 提示故事)
# 我们了解到的信息:
- 完整的故事元数据(年龄:3.2 小时,域名:asia.nikkei.com)
- 完整的评论树(来自 38 位作者的 57 条评论)
- 参与度指标和讨论质量
使用场景:
- 分析你感兴趣的特定故事
- 获取完整的评论讨论
- 了解社区对新闻的反应
👤 搜索用户 - 个人资料分析
# 我们测试的内容:
search_user for "zczc" (Google Pixel 故事作者)
# 我们发现的信息:
- 在 HN 上活跃 8.6 年,拥有 876 点声望,是稳定的贡献者
- 以研究为导向:提供一手资料
- 跨领域专业知识:涉及技术、政策、编程
- 注重质量而非数量
使用场景:
- 研究有趣帖子的作者
- 寻找领域专家和思想领袖
- 了解用户的贡献模式
📈 搜索热门话题 - 主题分析
# 我们测试的内容:
search_trending analyzing 49 current top stories
# 我们发现的当前趋势:
- "software", "game", "first"(各占 6.1%)
- "systems", "local", "google"(各占 4.1%)
- 太空技术:"satellite", "geostationary"
- 关注本地优先软件和游戏
使用场景:
- 跟踪科技社区正在讨论的内容
- 识别新兴技术趋势
- 监测社区兴趣的变化
💬 搜索评论 - 讨论分析
# 我们测试的内容:
search_comments on the Google Pixel Spain story
# 我们发现的信息:
- 来自 38 位不同作者的 56 条评论
- 活跃的讨论(多位用户发表了 4 条以上评论)
- 关于隐私/监控的国际视角
- 高质量的管理(5 条删除,1 条标记)
使用场景:
- 分析社区对主题的情绪
- 找到最积极参与讨论的人
- 了解讨论质量和模式
🔧 技术细节
智能缓存系统
- 三层缓存:项目、用户和故事列表
- 可配置的 TTL:默认 5 分钟,可调整
- LRU 淘汰机制:缓存满时自动清理
- 性能:将 API 调用减少约 80%
API 客户端特性
- 全面覆盖:涵盖所有 HackerNews API 端点
- 批量操作:高效加载多个项目
- 错误处理:强大的重试和超时逻辑
- 速率限制:合理使用 API
增强数据
- 故事元数据:计算年龄、域名、评论数量
- 用户统计信息:平均分数、热门故事、活动模式
- 评论分析:参与度指标、讨论树
- 热门分析:关键词频率、主题提取
🔧 配置
环境变量(可选):
# 服务器配置
SERVER_NAME=hackernews-mcp-server
SERVER_VERSION=1.0.0
# API 配置
HACKERNEWS_API_BASE_URL=https://hacker-news.firebaseio.com/v0
HACKERNEWS_API_TIMEOUT=10000
# 缓存配置
CACHE_TTL_SECONDS=300
CACHE_MAX_SIZE=1000
# 日志记录
LOG_LEVEL=info
🧪 开发
# 开发模式,支持热重载
npm run dev
# 运行测试
npm test
# 代码检查
npm run lint
npm run lint:fix
# 类型检查
npm run build
📚 详细文档
MCP 工具与功能
你可以使用我们经过测试的工具实际完成以下操作:
| MCP 工具 | 功能 | 我们测试中的真实示例 |
|----------|--------------|-------------------------------|
| search_posts | 按条件查找故事 | 找到 2 篇分数分别为 100 以上和 65 分的 AI 故事 |
| get_post | 获取完整的故事详情 | 分析了带有 57 条评论的 AI 提示故事 |
| search_user | 个人资料分析 | 分析了用户 "zczc" - 在 HN 活跃 8.6 年,是高质量贡献者 |
| search_trending | 主题分析 | 发现 "software"、"game"、"systems" 是热门话题 |
| search_comments | 讨论分析 | 分析了关于 Pixel 故事的 56 条评论,来自 38 位作者 |
资源访问模式:
hackernews://stories/top→ 当前热门故事hackernews://user/username→ 用户资料hackernews://item/12345→ 单个帖子hackernews://comments/12345→ 评论树
实际应用场景
📰 内容研究与分析
- 查找突发科技故事:例如我们发现的关于论文中 AI 提示的故事(100 分,活跃讨论)
- 跟踪有争议的话题:如 Google Pixel 隐私问题的故事
- 分析讨论质量:来自 38 位作者的 57 条评论表明了真实的参与度
- 监测新兴趋势:太空技术、本地优先软件、游戏开发等方面的发展
👥 社区情报
- 识别高质量贡献者:发现 "zczc" 是一位以研究为导向、具有跨领域专业知识的专家
- 了解用户模式:在 HN 活跃 8.6 年,稳定的声望增长,验证资料来源的习惯
- 寻找领域专家:持续提供高质量贡献的用户
- 跟踪思想领袖:特定技术领域的活跃用户
📈 趋势与情绪分析
- 当前科技焦点:"software"、"systems"、"game" 各占 6.1% 的热门度
- 新兴技术:卫星/太空技术的讨论日益增多
- 社区情绪:国际隐私担忧、学术诚信辩论
- 讨论模式:高质量的管理、国际视角
🔍 研究应用
- 学术研究:研究科技社区的讨论和情绪
- 市场研究:了解开发者和科技社区的兴趣
- 竞争情报:监测关于技术和公司的讨论
- 内容策略:找到能产生高参与度的话题
🚀 性能
- 缓存:减少约 80% 的 API 调用
- 批量操作:多项目加载速度提高 3 倍
- 智能过滤:客户端搜索减轻服务器负载
- 并发请求:并行处理提高效率
🔒 隐私与道德
- 仅使用公开数据:不访问私人信息
- 合理使用:采用速率限制和缓存机制
- 不存储数据:仅进行临时缓存
- 透明化:开源实现
🐛 故障排除
常见问题
-
服务器无法启动
# 检查 Node.js 版本 node --version # 应为 18+ # 重新构建项目 npm run build -
MCP 连接问题
- 重启 MCP 客户端(Cursor)
- 检查
.cursor/mcp.json配置 - 验证服务器是否通过
npm start正常运行
-
API 错误
- 检查网络连接
- 验证 HackerNews API 是否可访问
- 检查缓存配置
调试模式
# 启用调试日志
LOG_LEVEL=debug npm start
# 检查缓存统计信息
# 使用 hackernews://cache/stats 资源
📈 路线图
- [ ] 实时 WebSocket 更新
- [ ] 高级情绪分析
- [ ] 用户网络分析
- [ ] 导出功能
- [ ] 自定义过滤规则
- [ ] 性能仪表盘
🤝 贡献
- 分叉仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开拉取请求
📄 许可证
🆓 此 MCP 服务器
MIT 许可证 - 你可以使用、修改和分享!详情见 LICENSE 文件。
创建者:Traves Theberge Traves.Theberge@gmail.com
📊 HackerNews API
非商业用途免费 - 请尊重创建内容的社区。
商业用途:请查看 Y Combinator 的条款
🌟 加入社区
发现 bug? 提交一个问题!
有想法? 发起讨论!
想要贡献代码? 欢迎提交拉取请求!
🔗 联系我们
- 📧 邮箱:Traves.Theberge@gmail.com
- 🐙 GitHub:本仓库
- 🗨️ 讨论区:分享你对 HackerNews 的见解!
Scan to join WeChat group