内容
# HN摘要代理
一款使用Google ADK和Gemini构建的AI驱动代理,通过自定义MCP服务器获取Hacker News的实时新闻,并格式化为简洁的摘要。
## 功能
- 实时获取Hacker News的 top 5 热门新闻
- 使用模型上下文协议(MCP)连接Hacker News Firebase API
- 返回包含标题、简要信息、评分、作者和评论数的干净的项目符号摘要
- 如果没有新闻请求,则以友好的问候回应
## 架构
两个顺序代理在管道中运行:
1. **HN 获取器** — 使用MCP工具调用 `get_top_story_ids`,然后为 top 5 新闻中的每一篇调用 `get_story_details`
2. **摘要编写器** — 读取原始新闻数据,并使用Gemini格式化为可读的摘要
### MCP 服务器
自定义Python MCP服务器(`hn_mcp_server.py`)通过stdio传输暴露两个工具:
- `get_top_story_ids` — 从HN获取当前的顶级新闻ID
- `get_story_details` — 获取给定新闻ID的完整详细信息
## 技术栈
- [Google ADK](https://github.com/google/adk-python) — 代理编排
- Gemini 2.5 Flash — 通过Vertex AI进行AI推理
- [模型上下文协议(MCP)](https://modelcontextprotocol.io) — 工具连接标准
- Hacker News Firebase API — 免费,无需身份验证
- Google Cloud Run — 无服务器部署
- Docker — 容器化
## 在线演示
- 网页UI:`https://hn-agent-624320433211.us-central1.run.app/dev-ui/`
- API端点:`https://hn-agent-624320433211.us-central1.run.app/run`
## 项目结构
```
hn-agent/
├── hn_agent/
│ ├── __init__.py
│ └── agent.py # 两个LlmAgents + SequentialAgent + MCPToolset
├── hn_mcp_server.py # 自定义Python MCP服务器
├── Dockerfile
├── entrypoint.sh
└── requirements.txt
```
## 本地运行
### 前提条件
- Python 3.11+
- Docker
- 启用了Vertex AI的Google Cloud账户
### 步骤
```bash
# 克隆仓库
git clone https://github.com/YOUR_USERNAME/news-agent.git
cd news-agent
# Google Cloud身份验证
gcloud auth application-default login
# 构建和运行
docker build -t hn-agent .
docker run --rm \
-p 8080:8080 \
-e GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID \
-e GOOGLE_CLOUD_LOCATION=us-central1 \
-v ~/.config/gcloud:/root/.config/gcloud \
hn-agent
```
在浏览器中打开 `http://localhost:8080/dev-ui/`。
## 部署到Cloud Run
```bash
gcloud builds submit --tag gcr.io/YOUR_PROJECT_ID/hn-agent .
gcloud run deploy hn-agent \
--image=gcr.io/YOUR_PROJECT_ID/hn-agent \
--region=us-central1 \
--allow-unauthenticated \
--port=8080 \
--memory=1Gi \
--timeout=120
```
## 示例查询
- "今天Hacker News上人们在讨论什么?"
- "现在给我看顶级的科技新闻"
- "HN上什么正在流行?"