🎄News Crawler
约 1874 字大约 6 分钟
MCPJavaNews Crawler
2025-12-12
一个基于
Model Context Protocol (MCP)的 Java 热点新闻爬虫服务。它允许 AI 助手(如 Claude、Codex、Gemini、Cherry Studio 等)实时通过简单的自然语言指令,获取全网热点新闻、搜索特定事件并分析舆论趋势。
👉 点击展开:LLM调用mcp-java-news-crawler图示
项目结构
src/main/java/com/paiad/mcp/
├── config/ # 平台与分类配置
├── crawler/ # 🕷️ 各平台爬虫实现
├── model/ # 📦 数据模型
├── service/ # 🔧 业务服务层
├── tool/ # 🛠️ MCP 工具定义
└── util/ # ⭐️ 工具类主要功能
MCP 工具列表
| 工具名称 | 功能描述 |
|---|---|
get_hot_news | 🔥 获取多平台热榜新闻 |
search_news | 🔍 关键词搜索新闻 |
get_trending_topics | 📈 智能分析热门话题及跨平台热度 |
get_platform_list | 📋 获取所有可用平台列表及状态 |
get_news_by_category | 🏷️ 按分类获取新闻(支持用户偏好配置) |
get_news_summary | 📰 聚合多平台新闻摘要,去重排序 |
支持的新闻媒体
| 平台 ID | 平台名称 | 类型 | 说明 |
|---|---|---|---|
douyin | 抖音 | 🇨🇳 国内 | 抖音热点 |
toutiao | 今日头条 | 🇨🇳 国内 | 头条热榜 |
weibo | 微博 | 🇨🇳 国内 | 微博热搜 |
bilibili | B 站 | 🇨🇳 国内 | B 站热门视频 |
baidu | 百度 | 🇨🇳 国内 | 百度热搜 |
zhihu | 知乎 | 🇨🇳 国内 | 知乎热榜 |
wallstreetcn | 华尔街见闻 | 🇨🇳 国内 | 财经资讯 |
google_news | Google News | 🌍 国际 | 谷歌新闻 |
reddit | 🌍 国际 | Reddit 热帖 | |
bbc | BBC | 🌍 国际 | BBC 新闻 |
reuters | Reuters | 🌍 国际 | 路透社 |
apnews | AP News | 🌍 国际 | 美联社 |
guardian | The Guardian | 🌍 国际 | 卫报 |
techcrunch | TechCrunch | 🌍 国际 | 科技资讯 |
新闻分类
支持 7 个内置分类,可通过 get_news_by_category 工具使用:
| 分类 ID | 名称 | 说明 |
|---|---|---|
ai | 人工智能 | ChatGPT、大模型、机器学习等 |
tech | 科技 | 互联网、芯片、手机、新能源等 |
finance | 财经 | 股票、基金、经济、投资等 |
entertainment | 娱乐 | 明星、电影、综艺等 |
sports | 体育 | 足球、篮球、电竞等 |
world | 国际 | 国际新闻、外交、时政等 |
society | 社会 | 民生、教育、医疗等 |
配置文件
平台优先级配置
编辑 src/main/resources/platforms.yml 可自定义平台优先级和启用状态:
platforms:
zhihu:
enabled: true # 是否启用
priority: 90 # 优先级 (1-100),越大越靠前
# ... 其他平台
defaults:
maxDefaultPlatforms: 5 # 未指定平台时返回前 N 个用户偏好配置
编辑 src/main/resources/preferences.yml 可自定义分类权重:
# 分类权重 (0-5)
# 0=不感兴趣, 1=偶尔, 2=一般, 3=比较关注, 4=非常关注, 5=重点关注
category_weights:
ai: 5 # 人工智能
tech: 4 # 科技
finance: 3 # 财经
entertainment: 2 # 娱乐
sports: 1 # 体育
world: 3 # 国际
society: 2 # 社会
default_limit: 30 # 默认返回条数当调用 get_news_by_category 不指定分类时,会根据权重比例混合返回新闻。
分类定义配置
编辑 src/main/resources/categories.yml 可自定义分类的关键词和平台映射:
categories:
ai:
name: "人工智能"
keywords:
- "ai"
- "chatgpt"
- "大模型"
platforms:
techcrunch: 5
zhihu: 4修改配置后需重新打包 (mvn clean package) 并重启服务。
代理配置(访问国际平台)
如需访问国际新闻平台(如 Reddit、Google News、BBC 等),需配置代理:
- 复制
.env.example为.env:
cp .env.example .env- 编辑
.env文件,设置代理地址:
# 支持 http:// 和 socks5:// 协议
HTTP_PROXY=http://127.0.0.1:7890注
- 程序会自动读取
.env文件或系统环境变量HTTP_PROXY - 国内平台(微博、抖音等)无需代理
- 如不配置代理,国际平台可能爬取会超时或失败
构建项目
本项目使用标准 Maven 构建,要求 JDK 17+。
mvn clean package -DskipTests构建完成后,会在 target/ 目录下生成 mcp-java-news-crawler-jar-with-dependencies.jar。
快速运行
你可以通过命令行直接运行(仅供测试,MCP 客户端会自动在后台运行它):
java -jar target/mcp-java-news-crawler-jar-with-dependencies.jar手动测试 MCP 协议
启动后,服务会等待 stdin 输入。你可以粘贴以下 JSON 测试连接:
1. 初始化连接:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": { "protocolVersion": "2024-11-05", "capabilities": {} }
}2. 查看可用工具:
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {} }3. 调用工具获取新闻:
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": { "name": "get_hot_news", "arguments": { "limit": 5 } }
}提示
每条 JSON 输入后按回车发送。服务会通过 stdout 返回 JSON-RPC 响应。
Docker 部署
在项目根目录下执行以下命令:
构建镜像
docker build -t mcp-java-news-crawler .运行容器(测试)
由于 MCP 服务器使用 STDIO 通信,需要以交互模式运行:
docker run -it --rm mcp-java-news-crawlerMCP 客户端配置(Docker 方式)
如果你希望通过 Docker 运行 MCP 服务,可以在各客户端中使用以下配置:
Cherry Studio / Claude / Codex / Gemini / Cursor 等:
{
"mcpServers": {
"news-crawler": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp-java-news-crawler"]
}
}
}注
- Docker 镜像采用多阶段构建,最终镜像基于
eclipse-temurin:17-jre-alpine,体积小巧 - 使用
-i参数保持 stdin 打开,-it用于交互测试,MCP 客户端只需-i - 确保 Docker 已安装并且镜像已构建
Cherry Studio 配置
打开 Cherry Studio 设置 -> MCP Server -> 添加 JSON 配置:
{
"mcpServers": {
"news-crawler": {
"command": "java",
"args": [
"-Dfile.encoding=UTF-8",
"-jar",
"/path/to/mcp-java-news-crawler/target/mcp-java-news-crawler-jar-with-dependencies.jar"
]
}
}
}Claude Code (CLI) 配置
如果你使用的是命令行版的 Claude Code,可以通过以下指令直接添加此 MCP 服务:
- 打开终端运行
claude进入交互界面。 - 输入以下命令添加服务(请替换为实际路径):
/mcp add news-crawler java -Dfile.encoding=UTF-8 -jar /path/to/mcp-java-news-crawler/target/mcp-java-news-crawler-jar-with-dependencies.jar添加成功后,Claude Code 就会自动识别并根据需要调用这些工具。
Codex (CLI) 配置
如果你使用的是 OpenAI Codex CLI,可以通过编辑配置文件添加此 MCP 服务:
- 打开配置文件
~/.codex/config.json(不存在则创建)。 - 添加如下内容(请替换为实际路径):
{
"mcpServers": {
"news-crawler": {
"command": "java",
"args": [
"-Dfile.encoding=UTF-8",
"-jar",
"/path/to/mcp-java-news-crawler/target/mcp-java-news-crawler-jar-with-dependencies.jar"
]
}
}
}保存后重启 Codex CLI,即可自动识别并调用这些工具。
Gemini CLI 配置
如果你使用的是 Google Gemini CLI,可以通过以下方式配置:
- 打开配置文件
~/.gemini/settings.json(不存在则创建)。 - 添加如下内容(请替换为实际路径):
{
"mcpServers": {
"news-crawler": {
"command": "java",
"args": [
"-Dfile.encoding=UTF-8",
"-jar",
"/path/to/mcp-java-news-crawler/target/mcp-java-news-crawler-jar-with-dependencies.jar"
]
}
}
}保存后重启 Gemini CLI,工具将自动加载并可用于新闻爬取任务。
Star History
注意
- 本项目使用标准输入输出 (STDIO) 通信,所有日志已被配置为输出到
System.err,请勿修改日志配置导致日志打印到标准输出 - 部分平台可能因反爬策略调整导致爬取失败,欢迎提交 Issue 或 PR
- 请合理使用,遵守各平台的使用条款
本项目在一定程度上可以帮你告别信息茧房,用 AI 洞悉世界。如果此项目对你有帮助, 希望你点一个 ⭐ Star!当然,因为笔者实力有限,项目本身可能存在一些或多或少的问题,亦或者你对项目想提出一些进一步的意见, 笔者在此:欢迎大家提出 issues 和 pull request!
