Files
opennews-mcp/docs/README_ZH.md
T
bathfire 601ae367fe docs(readme): 添加 WebSocket 实时订阅功能文档
- 在 README.md 中新增 WebSocket 实时订阅章节
- 在中文版文档中新增 WebSocket 实时订阅章节
- 在日文版文档中新增 WebSocket 实时订阅章节
- 在韩文版文档中新增 WebSocket 实时订阅章节
- 详细说明订阅和取消订阅的方法及参数
- 提供服务器推送新闻更新和 AI 新闻更新的示例
- 添加过滤参数说明和 JSON-RPC 接口定义
2026-03-10 23:50:24 +08:00

459 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<b>OpenNews MCP Server</b><br>
加密货币新闻聚合 · AI 评分 · 交易信号 · 实时更新
</p>
<p align="center">
<a href="../README.md">English</a> | <a href="./README_ZH.md">中文</a> | <a href="./README_JA.md">日本語</a> | <a href="./README_KO.md">한국어</a>
</p>
---
## 快速安装
> **首先,在 [https://6551.io/mcp](https://6551.io/mcp) 获取你的 API Token。**
### Claude Code
```bash
claude mcp add opennews \
-e OPENNEWS_TOKEN=<your-token> \
-- uv --directory /path/to/opennews-mcp run opennews-mcp
```
> 将 `/path/to/opennews-mcp` 替换为你的本地项目路径,`<your-token>` 替换为你的 API Token。
### OpenClaw
```bash
export OPENNEWS_TOKEN="<your-token>"
cp -r openclaw-skill/opennews ~/.openclaw/skills/
```
---
## 让 AI 审查并安装
不确定这个 MCP 是否安全?发送以下提示词给你的 AI 助手,让它在安装前审查源代码:
> **复制下面的提示词并发送给你的 AI 助手(将 `<project-path>` 和 `<your-token>` 替换为实际值):**
```text
请帮我审查并安装 opennews-mcp MCP 服务器。项目位于 <project-path>。
步骤:
1. 审查以下文件的安全性:
- src/opennews_mcp/api_client.py — 确认只连接 ai.6551.io,没有向其他地方发送数据
- src/opennews_mcp/config.py — 确认 token 只从本地 config.json 或环境变量读取,没有硬编码或泄露
- src/opennews_mcp/tools/*.py — 确认所有工具只做 API 查询,没有文件写入、命令执行或危险操作
- pyproject.toml — 确认依赖只有 mcp、httpx、websockets,没有可疑包
2. 告诉我你的结论:安全 / 有风险 / 有问题,以及具体原因
3. 如果安全,帮我安装(Token 从 https://6551.io/mcp 获取):
claude mcp add opennews -e OPENNEWS_TOKEN=<your-token> -- uv --directory <project-path> run opennews-mcp
```
---
## 功能介绍
连接后,直接告诉你的 AI 助手:
| 你说 | 它做 |
|------|------|
| "最新加密货币新闻" | 获取最新文章 |
| "搜索 SEC 监管新闻" | 全文关键词搜索 |
| "BTC 相关新闻" | 按币种筛选 |
| "Bloomberg 的文章" | 按来源筛选 |
| "链上事件" | 按引擎类型筛选 (onchain) |
| "AI 评分 80 以上的重要新闻" | 高分筛选 |
| "看涨信号" | 按交易信号筛选 (long) |
| "订阅实时新闻" | WebSocket 实时更新 |
---
## 可用工具
| 分类 | 工具 | 描述 |
|------|------|------|
| 发现 | `get_news_sources` | 获取所有新闻来源分类树 |
| | `list_news_types` | 所有可用的新闻来源代码 |
| 搜索 | `get_latest_news` | 最新文章 |
| | `search_news` | 关键词搜索 |
| | `search_news_by_coin` | 按币种搜索 (BTC, ETH, SOL...) |
| | `get_news_by_source` | 按引擎类型和来源搜索 |
| | `get_news_by_engine` | 按类型搜索 (news, listing, onchain, meme, market) |
| | `search_news_advanced` | 高级搜索(多条件筛选) |
| AI | `get_high_score_news` | 评分 >= 阈值的文章 |
| | `get_news_by_signal` | 按信号搜索: long / short / neutral |
| 实时 | `subscribe_latest_news` | WebSocket 实时采集 |
---
## 配置
### 获取 API Token
在 [https://6551.io/mcp](https://6551.io/mcp) 获取你的 API Token。
设置环境变量:
```bash
# macOS / Linux
export OPENNEWS_TOKEN="<your-token>"
# Windows PowerShell
$env:OPENNEWS_TOKEN = "<your-token>"
```
| 变量 | 必需 | 描述 |
|------|------|------|
| `OPENNEWS_TOKEN` | **是** | 6551 API Bearer Token(从 https://6551.io/mcp 获取) |
| `OPENNEWS_API_BASE` | 否 | 覆盖 REST API URL |
| `OPENNEWS_WSS_URL` | 否 | 覆盖 WebSocket URL |
| `OPENNEWS_MAX_ROWS` | 否 | 每次请求最大结果数(默认 100) |
也支持项目根目录的 `config.json`(环境变量优先):
```json
{
"api_base_url": "https://ai.6551.io",
"wss_url": "wss://ai.6551.io/open/news_wss",
"api_token": "<your-token>",
"max_rows": 100
}
```
---
## WebSocket 实时订阅
**端点**: `wss://ai.6551.io/open/news_wss?token=YOUR_TOKEN`
订阅实时加密货币新闻更新。
### 订阅新闻
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "news.subscribe",
"params": {
"engineTypes": {
"news": ["Bloomberg", "CoinDesk"],
"onchain": []
},
"coins": ["BTC", "ETH"],
"hasCoin": true
}
}
```
**响应**:
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true,
"filters": {
"engineTypes": {...},
"coins": [...],
"hasCoin": true
}
}
}
```
**过滤参数**(全部可选):
- `engineTypes`: 引擎类型到新闻类型代码的映射对象
- 键:引擎类型(如 `"news"`, `"onchain"`, `"listing"`, `"meme"`, `"market"`
- 值:新闻类型代码数组(如 `["Bloomberg", "CoinDesk"]`
- 空数组 `[]` 表示该引擎下的所有新闻类型
- 使用 `list_news_types` 工具获取可用代码
- `coins`: 币种符号数组(如 `["BTC", "ETH"]`
- `hasCoin`: 布尔值,为 true 时只接收带币种标签的新闻
### 取消订阅
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "news.unsubscribe"
}
```
### 服务器推送 - 新闻更新
当有新闻匹配你的过滤条件时,服务器推送:
```json
{
"jsonrpc": "2.0",
"method": "news.update",
"params": {
"id": "unique-article-id",
"text": "文章标题或内容",
"newsType": "Bloomberg",
"engineType": "news",
"link": "https://...",
"coins": [
{
"symbol": "BTC",
"market_type": "spot",
"match": "title"
}
],
"ts": 1708473600000
}
}
```
### 服务器推送 - AI 新闻更新
对于有 AI 分析的新闻(如果订阅):
```json
{
"jsonrpc": "2.0",
"method": "news.ai_update",
"params": {
"id": "unique-article-id",
"text": "文章标题",
"newsType": "Bloomberg",
"engineType": "news",
"link": "https://...",
"coins": [...],
"aiRating": {
"score": 85,
"grade": "A",
"signal": "long",
"status": "done",
"summary": "中文摘要",
"enSummary": "English summary"
},
"ts": 1708473600000
}
}
```
---
## 数据结构
每篇文章返回:
```json
{
"id": "unique-article-id",
"text": "标题 / 内容",
"newsType": "Bloomberg",
"engineType": "news",
"link": "https://...",
"coins": [{ "symbol": "BTC", "market_type": "spot", "match": "title" }],
"aiRating": {
"score": 85,
"grade": "A",
"signal": "long",
"status": "done",
"summary": "中文摘要",
"enSummary": "English summary"
},
"ts": 1708473600000
}
```
| AI 字段 | 描述 |
|---------|------|
| `score` | 0-100 影响力评分 |
| `signal` | `long`(看涨)/ `short`(看跌)/ `neutral`(中性) |
| `status` | `done` = AI 分析完成 |
---
<details>
<summary><b>其他客户端手动安装</b>(点击展开)</summary>
> 在以下所有配置中,将 `/path/to/opennews-mcp` 替换为你的实际本地项目路径,`<your-token>` 替换为从 [https://6551.io/mcp](https://6551.io/mcp) 获取的 Token。
### Claude Desktop
编辑配置文件(macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`Windows: `%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}
```
### Cursor
`~/.cursor/mcp.json` 或 Settings > MCP Servers
```json
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}
```
### Windsurf
`~/.codeium/windsurf/mcp_config.json`
```json
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}
```
### Cline
VS Code 侧边栏 > Cline > MCP Servers > Configure,编辑 `cline_mcp_settings.json`
```json
{
"mcpServers": {
"opennews": {
"command": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
},
"disabled": false,
"autoApprove": []
}
}
}
```
### Continue.dev
`~/.continue/config.yaml`
```yaml
mcpServers:
- name: opennews
command: uv
args:
- --directory
- /path/to/opennews-mcp
- run
- opennews-mcp
env:
OPENNEWS_TOKEN: <your-token>
```
### Cherry Studio
Settings > MCP Servers > Add > Type stdioCommand `uv`Args `--directory /path/to/opennews-mcp run opennews-mcp`Env `OPENNEWS_TOKEN`
### Zed Editor
`~/.config/zed/settings.json`
```json
{
"context_servers": {
"opennews": {
"command": {
"path": "uv",
"args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"],
"env": {
"OPENNEWS_TOKEN": "<your-token>"
}
}
}
}
}
```
### 任意 stdio MCP 客户端
```bash
OPENNEWS_TOKEN=<your-token> \
uv --directory /path/to/opennews-mcp run opennews-mcp
```
</details>
---
## 兼容性
| 客户端 | 安装方式 | 状态 |
|--------|----------|------|
| **Claude Code** | `claude mcp add` | 一键安装 |
| **OpenClaw** | 复制 Skill 目录 | 一键安装 |
| Claude Desktop | JSON 配置 | 支持 |
| Cursor | JSON 配置 | 支持 |
| Windsurf | JSON 配置 | 支持 |
| Cline | JSON 配置 | 支持 |
| Continue.ML / JSON | 支持 |
| Cherry Studio | GUI | 支持 |
| Zed | JSON 配置 | 支持 |
---
## 相关项目
- [twitter-mcp](https://github.com/6551-io/twitter-mcp) - Twitter/X 数据 MCP 服务器
---
## 开发
```bash
cd /path/to/opennews-mcp
uv sync
uv run opennews-mcp
```
```bash
# MCP Inspector 测试
npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run opennews-mcp
```
### 项目结构
```
├── README.md
├── openclaw-skill/opennews/ # OpenClaw Skill
├── knowledge/guide.md # 内嵌知识
├── pyproject.toml
├── config.json
└── src/opennews_mcp/ ├── server.py # 入口
├── app.py # FastMCP 实例
├── config.py # 配置加载
├── api_client.py # HTTP + WebSocket
└── tools/ # 工具
```
## 许可证
MIT