Hacker News MCP 服务器

一个与Hacker News API集成的Model Context Protocol (MCP)服务器,部署在Netlify上,为AI助手提供访问和交互Hacker News内容的工具和资源。

  • by davidvgilmore
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 davidvgilmore/hn-mcp-server

使用说明

Netlify的黑客新闻MCP服务器

这是一个模型上下文协议(MCP)服务器,与官方的Hacker News API集成,旨在部署到Netlify。MCP服务器公开了工具和资源,使AI助手能够通过模型上下文协议访问黑客新闻内容并与之交互。

该项目还包括一个FastAPI客户端,该客户端提供了一个用于与MCP服务器交互的REST API,使其易于测试并与其他应用程序集成。

特性

MCP服务器

  • 与Hacker News API集成的无服务器MCP服务器实现
  • 部署在Netlify上
  • 包括获取热门、新、最佳、询问HN、展示HN和工作故事的工具
  • 提供获取特定帖子、评论和用户信息的工具
  • 包括有关使用Hacker News API的文档资源

MCP客户端

  • 用于与MCP服务器交互的FastAPI REST API
  • 交互式API文档(Swagger UI)
  • 易于测试和集成
  • 用于自动测试的Python脚本

入门指南

地方发展

  1. 克隆此存储库
  2. 安装依赖项:
    npm install
    
  3. 启动开发服务器:
    npm run dev
    

MCP服务器将在本地可用http://localhost:8888/mcp

测试您的MCP服务器

您可以使用MCP检查器或直接使用curl命令测试MCP服务器。

使用MCP检查器

当开发服务器运行时,您可以使用MCP检查器测试您的MCP服务器:

npx @modelcontextprotocol/inspector npx mcp-remote@next http://localhost:8888/mcp

部署后,您可以测试部署的版本:

npx @modelcontextprotocol/inspector npx mcp-remote@next https://your-site-name.netlify.app/mcp

然后打开http://localhost:6274/在浏览器中与MCP检查器进行交互。

使用curl

您还可以使用curl命令直接测试MCP服务器:

  1. 初始化MCP服务器:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/init","params":{},"id":"1"}'
    
  2. 列出可用工具:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/listTools","params":{},"id":"2"}'
    
  3. 调用工具获取顶级黑客新闻:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/callTool","params":{"name":"hn-get-top-stories","args":{"limit":5}},"id":"3"}'
    

    调用工具获取特定的黑客新闻:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/callTool","params":{"name":"hn-get-item","args":{"id":8863}},"id":"3"}'
    
  4. 列出可用资源:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/listResources","params":{},"id":"4"}'
    
  5. 阅读有关黑客新闻API的资源:

    curl -X POST http://localhost:8888/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","method":"mcp/readResource","params":{"uri":"docs://hacker-news-api-overview"},"id":"5"}'
    

部署

部署到Netlify

  1. 将此存储库推送到GitHub
  2. 将您的存储库连接到Netlify
  3. 配置生成设置:
    • 构建命令:留空(不需要构建)
    • 发布目录: public

部署后,您的MCP服务器将在 https://your-site-name.netlify.app/mcp

与Claude Desktop一起使用

要将此Hacker News MCP服务器与Claude Desktop一起使用:

  1. 转到克劳德桌面设置
  2. 启用MCP服务器配置
  3. 编辑配置文件:
    {
      "mcpServers": {
        "hacker-news": {
          "command": "npx",
          "args": [
            "mcp-remote@next",
            "https://your-site-name.netlify.app/mcp"
          ]
        }
      }
    }
    
  4. 重新启动克劳德桌面

配置后,您可以要求Claude与Hacker News内容进行交互,例如:

  • “现在给我看看黑客新闻的前5个故事”
  • “给我具体黑客新闻帖子的详细信息”
  • “搜索Ask HN关于编程的帖子”
  • “查找有关特定Hacker News用户的信息”

使用MCP客户端

MCP客户端提供REST API接口,用于与MCP服务器交互。它是用FastAPI构建的,并提供了一个干净、现代的API和自动文档。

启动客户端

cd mcp-client
pip install -r requirements.txt
uvicorn main:app --reload

这将在以下位置启动FastAPI服务器http://localhost:8001.您可以访问API文档:http://localhost:8001/docs.

管理MCP服务器和FastAPI客户端

该模板包括几个用于管理MCP服务器和FastAPI客户端的脚本:

cd mcp-client
./start.sh    # Start both services in the background
./stop.sh     # Stop both services gracefully
./check_status.sh  # Check if services are running and view logs
./test_client.py   # Test the FastAPI client endpoints

这些脚本确保进程即使在您关闭终端后也能在后台运行,正确管理日志文件,并提供清晰的状态信息。

测试客户端

您可以使用提供的测试脚本测试客户端:

cd mcp-client
./test_client.py

这将针对API端点运行一系列测试并显示结果。

API终点

  • GET /server -获取服务器信息
  • GET /tools -列出可用工具
  • POST /tools/call -调用工具
  • GET /resources -列出可用资源
  • POST /resources/read -阅读资源

有关更多详细信息,请参阅 MCP客户端自述文件.

黑客新闻API工具

此MCP服务器提供以下工具,用于与Hacker News API进行交互:

  1. hn-get-top-stories:从Hacker News获取当前头条新闻

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:500)
  2. hn-get-new-stories:从Hacker News获取最新消息

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:500)
  3. hn-get-best-stories:从黑客新闻中获取最佳故事

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:500)
  4. hn-get-ask-stories:Fetches向Hacker News询问HN的故事

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:200)
  5. hn-get-show-stories:Fetches展示黑客新闻中的HN故事

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:200)
  6. hn-get-job-stories:从Hacker News获取工作故事

    • 参数: limit (可选,要返回的故事数,默认值:10,最大值:200)
  7. hn-get-item:按ID从黑客新闻中获取特定项目(故事、评论、工作、投票等)

    • 参数: id (必填,要提取的物品的ID)
  8. hn-get-user:按用户名从Hacker News获取特定用户的信息

    • 参数: id (必填,要获取的用户的用户名)

文献资源

MCP服务器提供以下文档资源:

  1. docs://hacker-news-api-overview:Hacker News API概述和此MCP服务器中可用的工具
  2. docs://hacker-news-item-types:关于Hacker News API中不同类型的项目及其属性的信息
  3. docs://hacker-news-usage-examples:如何使用Hacker News MCP工具的示例请求和响应

延伸

扩展MCP服务器

您可以通过向添加更多工具和资源来扩展此MCP服务器 getServer 功能在 netlify/functions/mcp-server.js.按照现有示例并参考 模型上下文协议文档 了解更多信息。

扩展MCP客户端

要向MCP客户端添加新端点,请编辑 main.py 文件在 mcp-client 目录。客户端使用FastAPI构建,这使得添加新路由和功能变得容易。

了解更多