diff --git a/README.md b/README.md index 7a171f6..92f51cd 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,10 @@ Crypto News Aggregation · AI Ratings · Trading Signals · Real-time Updates

+

+ English | 中文 | 日本語 | 한국어 +

+ --- ## Quick Install diff --git a/docs/README_EN.md b/docs/README_EN.md deleted file mode 100644 index f779fc0..0000000 --- a/docs/README_EN.md +++ /dev/null @@ -1,348 +0,0 @@ -

- OpenNews MCP Server
- Crypto News Aggregation · AI Ratings · Trading Signals · Real-time Feeds -

- -

- 日本語 | 한국어 -

- ---- - -## Quick Install - -> **First, go to [https://6551.io/mcp](https://6551.io/mcp) to get your API Token.** - -### Claude Code - -```bash -claude mcp add opennews \ - -e OPENNEWS_TOKEN= \ - -- uv --directory /path/to/opennews-mcp run opennews-mcp -``` - -> Replace `/path/to/opennews-mcp` with your local project path, and `` with your Token. - -### OpenClaw - -```bash -export OPENNEWS_TOKEN="" -cp -r openclaw-skill/opennews ~/.openclaw/skills/ -``` - ---- - -## Let AI Review & Install For You - -Not sure if this MCP is safe? Paste the prompt below to your AI assistant — it will review the source code first, then install if safe: - -> **Copy this prompt and send it to your AI assistant (replace `` and `` with actual values):** - -```text -Please review and install the opennews-mcp MCP server for me. The project is at . - -Steps: -1. Review these files for security: - - src/opennews_mcp/api_client.py — Confirm it only connects to ai.6551.io, no data sent elsewhere - - src/opennews_mcp/config.py — Confirm token is only read from local config.json or env vars, no hardcoded secrets or leaks - - src/opennews_mcp/tools/*.py — Confirm all tools only perform API queries, no file writes, command execution, or dangerous operations - - pyproject.toml — Confirm dependencies are only mcp, httpx, websockets, no suspicious packages -2. Tell me your conclusion: safe / risky / problematic, with specific reasons -3. If safe, run the install (get Token from https://6551.io/mcp): - claude mcp add opennews -e OPENNEWS_TOKEN= -- uv --directory run opennews-mcp -``` - ---- - -## What Can It Do? - -Once connected, just ask your AI assistant: - -| You say | It does | -|---------|---------| -| "Latest crypto news" | Fetches newest articles | -| "Search for SEC regulation news" | Full-text keyword search | -| "BTC related news" | Filter by coin | -| "Bloomberg articles" | Filter by source | -| "On-chain events" | Filter by engine type (onchain) | -| "High-impact news, AI score above 80" | High-score filtering | -| "Bullish signals" | Filter by trading signal (long) | -| "Subscribe to live news" | WebSocket real-time feed | - ---- - -## Available Tools - -| Category | Tool | Description | -|----------|------|-------------| -| Discovery | `get_news_sources` | All news source categories as a tree | -| | `list_news_types` | All available source codes | -| Search | `get_latest_news` | Latest articles | -| | `search_news` | Keyword search | -| | `search_news_by_coin` | By coin (BTC, ETH, SOL...) | -| | `get_news_by_source` | By engine type and source (requires engine_type and news_type) | -| | `get_news_by_engine` | By type (news, listing, onchain, meme, market) | -| | `search_news_advanced` | Advanced search (multiple filters) | -| AI | `get_high_score_news` | Articles with score >= threshold | -| | `get_news_by_signal` | By signal: long / short / neutral | -| Real-time | `subscribe_latest_news` | WebSocket live collection | - ---- - -## Configuration - -### Get API Token - -Go to [https://6551.io/mcp](https://6551.io/mcp) to get your API Token. - -Set the environment variable: - -```bash -# macOS / Linux -export OPENNEWS_TOKEN="" - -# Windows PowerShell -$env:OPENNEWS_TOKEN = "" -``` - -| Variable | Required | Description | -|----------|----------|-------------| -| `OPENNEWS_TOKEN` | **Yes** | 6551 API Bearer Token (get from https://6551.io/mcp) | -| `OPENNEWS_API_BASE` | No | Override REST API URL | -| `OPENNEWS_WSS_URL` | No | Override WebSocket URL | -| `OPENNEWS_MAX_ROWS` | No | Max results per query (default: 100) | - -Also supports `config.json` in the project root (env vars take precedence): - -```json -{ - "api_base_url": "https://ai.6551.io", - "wss_url": "wss://ai.6551.io/open/news_wss", - "api_token": "", - "max_rows": 100 -} -``` - ---- - -## Data Structure - -Each article: - -```json -{ - "id": "unique-article-id", - "text": "Headline / content", - "newsType": "Bloomberg", - "engineType": "news", - "link": "https://...", - "coins": [{ "symbol": "BTC", "market_type": "spot", "match": "title" }], - "aiRating": { - "score": 85, - "grade": "A", - "signal": "long", - "status": "done", - "summary": "Chinese summary", - "enSummary": "English summary" - }, - "ts": 1708473600000 -} -``` - -| AI Field | Description | -|----------|-------------| -| `score` | 0-100 impact rating | -| `signal` | `long` (bullish) / `short` (bearish) / `neutral` | -| `status` | `done` = AI analysis complete | - ---- - -
-Other Clients — Manual Install (click to expand) - -> In all configs below, replace `/path/to/opennews-mcp` with your actual local project path, and `` with your Token from [https://6551.io/mcp](https://6551.io/mcp). - -### Claude Desktop - -Edit config (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": "" - } - } - } -} -``` - -### Cursor - -`~/.cursor/mcp.json` or Settings > MCP Servers: - -```json -{ - "mcpServers": { - "opennews": { - "command": "uv", - "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], - "env": { - "OPENNEWS_TOKEN": "" - } - } - } -} -``` - -### Windsurf - -`~/.codeium/windsurf/mcp_config.json`: - -```json -{ - "mcpServers": { - "opennews": { - "command": "uv", - "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], - "env": { - "OPENNEWS_TOKEN": "" - } - } - } -} -``` - -### Cline - -VS Code sidebar > Cline > MCP Servers > Configure, edit `cline_mcp_settings.json`: - -```json -{ - "mcpServers": { - "opennews": { - "command": "uv", - "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], - "env": { - "OPENNEWS_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: -``` - -### Cherry Studio - -Settings > MCP Servers > Add > Type stdio: Command `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": "" - } - } - } - } -} -``` - -### Any stdio MCP client - -```bash -OPENNEWS_TOKEN= \ - uv --directory /path/to/opennews-mcp run opennews-mcp -``` - -
- ---- - -## Compatibility - -| Client | Install Method | Status | -|--------|---------------|--------| -| **Claude Code** | `claude mcp add` | One-liner | -| **OpenClaw** | Copy skill directory | One-liner | -| Claude Desktop | JSON config | Supported | -| Cursor | JSON config | Supported | -| Windsurf | JSON config | Supported | -| Cline | JSON config | Supported | -| Continue.dev | YAML / JSON | Supported | -| Cherry Studio | GUI | Supported | -| Zed | JSON config | Supported | - ---- - -## Related Projects - -- [twitter-mcp](https://github.com/6551-io/twitter-mcp) - Twitter/X data MCP server - ---- - -## Development - -```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 -``` - -### Project Structure - -``` -├── README.md -├── docs/ -│ ├── README_EN.md # English -│ ├── README_JA.md # 日本語 -│ └── README_KO.md # 한국어 -├── openclaw-skill/opennews/ # OpenClaw Skill -├── knowledge/guide.md # Embedded knowledge -├── pyproject.toml -├── config.json -└── src/opennews_mcp/ - ├── server.py # Entry point - ├── app.py # FastMCP instance - ├── config.py # Config loader - ├── api_client.py # HTTP + WebSocket - └── tools/ # Tools -``` - -## License - -MIT diff --git a/docs/README_JA.md b/docs/README_JA.md index 7d8bae1..38446ea 100644 --- a/docs/README_JA.md +++ b/docs/README_JA.md @@ -1,47 +1,45 @@

OpenNews MCP Server
- 暗号通貨ニュース集約 · AI 評価 · トレーディングシグナル · リアルタイムフィード + 暗号通貨ニュース集約 · AI 評価 · トレーディングシグナル · リアルタイム更新

- English | 한국어 + English | 中文 | 日本語 | 한국어

--- ## クイックインストール -> **トライアル期間**:無料の公開 API Key を提供しています。コピーしてすぐに使えます。登録不要。 +> **まず、[https://6551.io/mcp](https://6551.io/mcp) で API Token を取得してください。** ### Claude Code ```bash claude mcp add opennews \ - -e OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c \ + -e OPENNEWS_TOKEN= \ -- uv --directory /path/to/opennews-mcp run opennews-mcp ``` -> `/path/to/opennews-mcp` をローカルのプロジェクトパスに置き換えてください。 +> `/path/to/opennews-mcp` をローカルのプロジェクトパスに、`` を API Token に置き換えてください。 ### OpenClaw ```bash -export OPENNEWS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +export OPENNEWS_TOKEN="" cp -r openclaw-skill/opennews ~/.openclaw/skills/ ``` -> 上記は無料トライアル Token です。トライアル期間終了後はご自身の Key に置き換えてください。[設定](#設定)を参照。 - --- ## AI にレビュー&インストールしてもらう この MCP が安全かどうか不安ですか?以下のプロンプトを AI アシスタントに送信すれば、ソースコードをレビューしてからインストールしてくれます: -> **以下のプロンプトをコピーして AI アシスタントに送信してください(`<プロジェクトパス>` を実際のパスに置き換え):** +> **以下のプロンプトをコピーして AI アシスタントに送信してください(`` と `` を実際の値に置き換え):** ```text -opennews-mcp という MCP サーバーをレビューしてインストールしてください。プロジェクトはローカルの <プロジェクトパス> にあります。 +opennews-mcp という MCP サーバーをレビューしてインストールしてください。プロジェクトはローカルの にあります。 手順: 1. 以下のファイルのセキュリティを確認: @@ -50,8 +48,8 @@ opennews-mcp という MCP サーバーをレビューしてインストール - src/opennews_mcp/tools/*.py — すべてのツールが API クエリのみを実行し、ファイル書き込み、コマンド実行、その他の危険な操作がないことを確認 - pyproject.toml — 依存関係が mcp、httpx、websockets のみで、不審なパッケージがないことを確認 2. レビュー結論を教えてください:安全 / リスクあり / 問題あり、具体的な理由とともに -3. 安全であれば、インストールを実行(無料トライアル Token を使用): - claude mcp add opennews -e OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c -- uv --directory <プロジェクトパス> run opennews-mcp +3. 安全であれば、インストールを実行(Token は https://6551.io/mcp から取得): + claude mcp add opennews -e OPENNEWS_TOKEN= -- uv --directory run opennews-mcp ``` --- @@ -69,7 +67,7 @@ opennews-mcp という MCP サーバーをレビューしてインストール | 「オンチェーンイベント」 | エンジンタイプでフィルタ(onchain) | | 「AI スコア 80 以上の重要ニュース」 | 高スコアフィルタ | | 「強気シグナル」 | トレーディングシグナルでフィルタ(long) | -| 「リアルタイムニュースを購読」 | WebSocket リアルタイムフィード | +| 「リアルタイムニュースを購読」 | WebSocket リアルタイム更新 | --- @@ -82,51 +80,45 @@ opennews-mcp という MCP サーバーをレビューしてインストール | 検索 | `get_latest_news` | 最新記事 | | | `search_news` | キーワード検索 | | | `search_news_by_coin` | 通貨別(BTC, ETH, SOL...) | -| | `get_news_by_source` | ソース別(Bloomberg, Reuters...) | +| | `get_news_by_source` | エンジンタイプとソース別 | | | `get_news_by_engine` | タイプ別(news, listing, onchain, meme, market) | -| | `search_news_by_date` | 日付範囲 + 通貨/キーワード | +| | `search_news_advanced` | 高度な検索(複数フィルタ) | | AI | `get_high_score_news` | スコア >= 閾値の記事 | | | `get_news_by_signal` | シグナル別:long / short / neutral | -| リアルタイム | `subscribe_latest_news` | WebSocket ライブ収集 | +| リアルタイム | `subscribe_latest_news` | WebSocket リアルタイム収集 | --- ## 設定 -### 無料トライアル Token +### API Token を取得 -現在トライアル期間中です。以下の公開 Token をそのまま使えます: - -``` -eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c -``` +[https://6551.io/mcp](https://6551.io/mcp) で API Token を取得してください。 環境変数を設定: ```bash # macOS / Linux -export OPENNEWS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +export OPENNEWS_TOKEN="" # Windows PowerShell -$env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +$env:OPENNEWS_TOKEN = "" ``` -> トライアル期間終了後はご自身の Token に置き換えてください。 - | 変数 | 必須 | 説明 | |------|------|------| -| `OPENNEWS_TOKEN` | **はい** | 6551 API Bearer トークン(上記の無料 Key が利用可能) | +| `OPENNEWS_TOKEN` | **はい** | 6551 API Bearer トークン(https://6551.io/mcp から取得) | | `OPENNEWS_API_BASE` | いいえ | REST API URL のオーバーライド | | `OPENNEWS_WSS_URL` | いいえ | WebSocket URL のオーバーライド | -| `OPENNEWS_MAX_ROWS` | いいえ | クエリあたりの最大結果数(デフォルト: 100) | +| `OPENNEWS_MAX_ROWS` | いいえ | リクエストあたりの最大結果数(デフォルト: 100) | プロジェクトルートの `config.json` もサポート(環境変数が優先): ```json { - "api_base_url": "https://ai.6551.io/news-platform", - "wss_url": "wss://ai.6551.io/news-platform/rpc", - "api_token": "your-api-token-here", + "api_base_url": "https://ai.6551.io", + "wss_url": "wss://ai.6551.io/open/news_wss", + "api_token": "", "max_rows": 100 } ``` @@ -159,7 +151,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 | AI フィールド | 説明 | |-------------|------| -| `score` | 0-100 影響度評価 | +| `score` | 0-100 影響度スコア | | `signal` | `long`(強気)/ `short`(弱気)/ `neutral` | | `status` | `done` = AI 分析完了 | @@ -168,7 +160,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1
その他のクライアント — 手動インストール(クリックで展開) -> 以下のすべての設定で `/path/to/opennews-mcp` をローカルの実際のプロジェクトパスに置き換えてください。`OPENNEWS_TOKEN` の値は上記の無料トライアル Token を使用できます。 +> 以下のすべての設定で `/path/to/opennews-mcp` をローカルの実際のプロジェクトパスに、`` を [https://6551.io/mcp](https://6551.io/mcp) から取得した Token に置き換えてください。 ### Claude Desktop @@ -181,7 +173,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -199,7 +191,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -217,7 +209,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -235,7 +227,7 @@ VS Code サイドバー > Cline > MCP Servers > Configure、`cline_mcp_settings. "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" }, "disabled": false, "autoApprove": [] @@ -258,7 +250,7 @@ mcpServers: - run - opennews-mcp env: - OPENNEWS_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c + OPENNEWS_TOKEN: ``` ### Cherry Studio @@ -277,7 +269,7 @@ mcpServers: "path": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -288,7 +280,7 @@ mcpServers: ### 任意の stdio MCP クライアント ```bash -OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c \ +OPENNEWS_TOKEN= \ uv --directory /path/to/opennews-mcp run opennews-mcp ``` @@ -300,8 +292,8 @@ OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3Nt | クライアント | インストール方法 | ステータス | |-------------|-----------------|-----------| -| **Claude Code** | `claude mcp add` | ワンライナー | -| **OpenClaw** | Skill ディレクトリコピー | ワンライナー | +| **Claude Code** | `claude mcp add` | ワンクリック | +| **OpenClaw** | Skill ディレクトリコピー | ワンクリック | | Claude Desktop | JSON 設定 | 対応 | | Cursor | JSON 設定 | 対応 | | Windsurf | JSON 設定 | 対応 | @@ -327,18 +319,14 @@ uv run opennews-mcp ``` ```bash -# MCP Inspector +# MCP Inspector テスト npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run opennews-mcp ``` ### プロジェクト構造 ``` -├── README.md # 中文(デフォルト) -├── docs/ -│ ├── README_EN.md # English -│ ├── README_JA.md # 日本語 -│ └── README_KO.md # 한국어 +├── README.md ├── openclaw-skill/opennews/ # OpenClaw Skill ├── knowledge/guide.md # 組み込みナレッジ ├── pyproject.toml @@ -348,7 +336,7 @@ npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run ope ├── app.py # FastMCP インスタンス ├── config.py # 設定ローダー ├── api_client.py # HTTP + WebSocket - └── tools/ # 11 ツール + └── tools/ # ツール ``` ## ライセンス diff --git a/docs/README_KO.md b/docs/README_KO.md index 4d21edb..cb415ab 100644 --- a/docs/README_KO.md +++ b/docs/README_KO.md @@ -1,47 +1,45 @@

OpenNews MCP Server
- 암호화폐 뉴스 집계 · AI 평가 · 트레이딩 시그널 · 실시간 피드 + 암호화폐 뉴스 집계 · AI 평가 · 트레이딩 시그널 · 실시간 업데이트

- English | 日本語 + English | 中文 | 日本語 | 한국어

--- ## 빠른 설치 -> **체험 기간**: 무료 공개 API Key를 제공합니다 — 복사하여 바로 사용, 가입 불필요. +> **먼저 [https://6551.io/mcp](https://6551.io/mcp)에서 API Token을 받으세요.** ### Claude Code ```bash claude mcp add opennews \ - -e OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c \ + -e OPENNEWS_TOKEN= \ -- uv --directory /path/to/opennews-mcp run opennews-mcp ``` -> `/path/to/opennews-mcp`를 로컬 프로젝트 경로로 교체하세요. +> `/path/to/opennews-mcp`를 로컬 프로젝트 경로로, ``을 API Token으로 교체하세요. ### OpenClaw ```bash -export OPENNEWS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +export OPENNEWS_TOKEN="" cp -r openclaw-skill/opennews ~/.openclaw/skills/ ``` -> 위의 토큰은 무료 체험 Token입니다. 체험 기간 종료 후 자체 Key로 교체하세요. [설정](#설정) 참조. - --- ## AI에게 검토 및 설치 맡기기 이 MCP가 안전한지 확신이 없으신가요? 아래 프롬프트를 AI 어시스턴트에게 보내면 소스 코드를 먼저 검토한 후 설치해줍니다: -> **아래 프롬프트를 복사하여 AI 어시스턴트에게 보내세요 (`<프로젝트경로>`를 실제 경로로 교체):** +> **아래 프롬프트를 복사하여 AI 어시스턴트에게 보내세요 (``와 ``을 실제 값으로 교체):** ```text -opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로컬 <프로젝트경로>에 있습니다. +opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로컬 에 있습니다. 단계: 1. 다음 파일의 보안을 확인: @@ -50,8 +48,8 @@ opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로 - src/opennews_mcp/tools/*.py — 모든 도구가 API 쿼리만 수행하고, 파일 쓰기, 명령 실행 또는 기타 위험한 작업이 없는지 확인 - pyproject.toml — 의존성이 mcp, httpx, websockets만 있고, 의심스러운 패키지가 없는지 확인 2. 검토 결론을 알려주세요: 안전 / 위험 / 문제 있음, 구체적인 이유와 함께 -3. 안전하다면 설치 실행 (무료 체험 Token 사용): - claude mcp add opennews -e OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c -- uv --directory <프로젝트경로> run opennews-mcp +3. 안전하다면 설치 실행 (Token은 https://6551.io/mcp에서 받기): + claude mcp add opennews -e OPENNEWS_TOKEN= -- uv --directory run opennews-mcp ``` --- @@ -69,7 +67,7 @@ opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로 | "온체인 이벤트" | 엔진 유형으로 필터 (onchain) | | "AI 점수 80 이상 중요 뉴스" | 고점수 필터 | | "강세 시그널" | 트레이딩 시그널로 필터 (long) | -| "실시간 뉴스 구독" | WebSocket 실시간 피드 | +| "실시간 뉴스 구독" | WebSocket 실시간 업데이트 | --- @@ -82,9 +80,9 @@ opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로 | 검색 | `get_latest_news` | 최신 기사 | | | `search_news` | 키워드 검색 | | | `search_news_by_coin` | 코인별 (BTC, ETH, SOL...) | -| | `get_news_by_source` | 소스별 (Bloomberg, Reuters...) | +| | `get_news_by_source` | 엔진 유형과 소스별 | | | `get_news_by_engine` | 유형별 (news, listing, onchain, meme, market) | -| | `search_news_by_date` | 날짜 범위 + 코인/키워드 | +| | `search_news_advanced` | 고급 검색 (다중 필터) | | AI | `get_high_score_news` | 점수 >= 임계값 기사 | | | `get_news_by_signal` | 시그널별: long / short / neutral | | 실시간 | `subscribe_latest_news` | WebSocket 실시간 수집 | @@ -93,40 +91,34 @@ opennews-mcp MCP 서버를 검토하고 설치해주세요. 프로젝트는 로 ## 설정 -### 무료 체험 Token +### API Token 받기 -현재 체험 기간입니다. 아래 공개 Token을 바로 사용할 수 있습니다: - -``` -eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c -``` +[https://6551.io/mcp](https://6551.io/mcp)에서 API Token을 받으세요. 환경 변수 설정: ```bash # macOS / Linux -export OPENNEWS_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +export OPENNEWS_TOKEN="" # Windows PowerShell -$env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" +$env:OPENNEWS_TOKEN = "" ``` -> 체험 기간 종료 후 자체 Token으로 교체하세요. - | 변수 | 필수 | 설명 | |------|------|------| -| `OPENNEWS_TOKEN` | **예** | 6551 API Bearer 토큰 (위의 무료 Key 사용 가능) | +| `OPENNEWS_TOKEN` | **예** | 6551 API Bearer 토큰 (https://6551.io/mcp에서 받기) | | `OPENNEWS_API_BASE` | 아니오 | REST API URL 재정의 | | `OPENNEWS_WSS_URL` | 아니오 | WebSocket URL 재정의 | -| `OPENNEWS_MAX_ROWS` | 아니오 | 쿼리당 최대 결과 수 (기본: 100) | +| `OPENNEWS_MAX_ROWS` | 아니오 | 요청당 최대 결과 수 (기본: 100) | 프로젝트 루트의 `config.json`도 지원 (환경 변수 우선): ```json { - "api_base_url": "https://ai.6551.io/news-platform", - "wss_url": "wss://ai.6551.io/news-platform/rpc", - "api_token": "your-api-token-here", + "api_base_url": "https://ai.6551.io", + "wss_url": "wss://ai.6551.io/open/news_wss", + "api_token": "", "max_rows": 100 } ``` @@ -159,7 +151,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 | AI 필드 | 설명 | |---------|------| -| `score` | 0-100 영향도 평가 | +| `score` | 0-100 영향도 점수 | | `signal` | `long`(강세) / `short`(약세) / `neutral` | | `status` | `done` = AI 분석 완료 | @@ -168,7 +160,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1
기타 클라이언트 — 수동 설치 (클릭하여 펼치기) -> 아래 모든 설정에서 `/path/to/opennews-mcp`를 로컬의 실제 프로젝트 경로로 교체하세요. `OPENNEWS_TOKEN` 값은 위의 무료 체험 Token을 사용할 수 있습니다. +> 아래 모든 설정에서 `/path/to/opennews-mcp`를 로컬의 실제 프로젝트 경로로, ``을 [https://6551.io/mcp](https://6551.io/mcp)에서 받은 Token으로 교체하세요. ### Claude Desktop @@ -181,7 +173,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -199,7 +191,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -217,7 +209,7 @@ $env:OPENNEWS_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1 "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -235,7 +227,7 @@ VS Code 사이드바 > Cline > MCP Servers > Configure, `cline_mcp_settings.json "command": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" }, "disabled": false, "autoApprove": [] @@ -258,7 +250,7 @@ mcpServers: - run - opennews-mcp env: - OPENNEWS_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c + OPENNEWS_TOKEN: ``` ### Cherry Studio @@ -277,7 +269,7 @@ mcpServers: "path": "uv", "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], "env": { - "OPENNEWS_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c" + "OPENNEWS_TOKEN": "" } } } @@ -288,7 +280,7 @@ mcpServers: ### 기타 stdio MCP 클라이언트 ```bash -OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3NtY3AiLCJ1c2VybmFtZSI6IjY1NTFuZXdzbWNwIn0.namttZDCVLOIlEGwIkJPBrcV-foaXQgqibDcmpck02c \ +OPENNEWS_TOKEN= \ uv --directory /path/to/opennews-mcp run opennews-mcp ``` @@ -300,8 +292,8 @@ OPENNEWS_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZGRyZXNzIjoiNjU1MW5ld3Nt | 클라이언트 | 설치 방법 | 상태 | |-----------|----------|------| -| **Claude Code** | `claude mcp add` | 원라이너 | -| **OpenClaw** | Skill 디렉토리 복사 | 원라이너 | +| **Claude Code** | `claude mcp add` | 원클릭 | +| **OpenClaw** | Skill 디렉토리 복사 | 원클릭 | | Claude Desktop | JSON 설정 | 지원 | | Cursor | JSON 설정 | 지원 | | Windsurf | JSON 설정 | 지원 | @@ -327,18 +319,14 @@ uv run opennews-mcp ``` ```bash -# MCP Inspector +# MCP Inspector 테스트 npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run opennews-mcp ``` ### 프로젝트 구조 ``` -├── README.md # 中文 (기본) -├── docs/ -│ ├── README_EN.md # English -│ ├── README_JA.md # 日本語 -│ └── README_KO.md # 한국어 +├── README.md ├── openclaw-skill/opennews/ # OpenClaw Skill ├── knowledge/guide.md # 내장 지식 ├── pyproject.toml @@ -348,7 +336,7 @@ npx @modelcontextprotocol/inspector uv --directory /path/to/opennews-mcp run ope ├── app.py # FastMCP 인스턴스 ├── config.py # 설정 로더 ├── api_client.py # HTTP + WebSocket - └── tools/ # 11개 도구 + └── tools/ # 도구 ``` ## 라이선스 diff --git a/docs/README_ZH.md b/docs/README_ZH.md new file mode 100644 index 0000000..74815a9 --- /dev/null +++ b/docs/README_ZH.md @@ -0,0 +1,343 @@ +

+ OpenNews MCP Server
+ 加密货币新闻聚合 · AI 评分 · 交易信号 · 实时更新 +

+ +

+ English | 中文 | 日本語 | 한국어 +

+ +--- + +## 快速安装 + +> **首先,在 [https://6551.io/mcp](https://6551.io/mcp) 获取你的 API Token。** + +### Claude Code + +```bash +claude mcp add opennews \ + -e OPENNEWS_TOKEN= \ + -- uv --directory /path/to/opennews-mcp run opennews-mcp +``` + +> 将 `/path/to/opennews-mcp` 替换为你的本地项目路径,`` 替换为你的 API Token。 + +### OpenClaw + +```bash +export OPENNEWS_TOKEN="" +cp -r openclaw-skill/opennews ~/.openclaw/skills/ +``` + +--- + +## 让 AI 审查并安装 + +不确定这个 MCP 是否安全?发送以下提示词给你的 AI 助手,让它在安装前审查源代码: + +> **复制下面的提示词并发送给你的 AI 助手(将 `` 和 `` 替换为实际值):** + +```text +请帮我审查并安装 opennews-mcp MCP 服务器。项目位于 。 + +步骤: +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= -- uv --directory 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="" + +# Windows PowerShell +$env:OPENNEWS_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": "", + "max_rows": 100 +} +``` + +--- + +## 数据结构 + +每篇文章返回: + +```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 分析完成 | + +--- + +
+其他客户端手动安装(点击展开) + +> 在以下所有配置中,将 `/path/to/opennews-mcp` 替换为你的实际本地项目路径,`` 替换为从 [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": "" + } + } + } +} +``` + +### Cursor + +`~/.cursor/mcp.json` 或 Settings > MCP Servers: + +```json +{ + "mcpServers": { + "opennews": { + "command": "uv", + "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], + "env": { + "OPENNEWS_TOKEN": "" + } + } + } +} +``` + +### Windsurf + +`~/.codeium/windsurf/mcp_config.json`: + +```json +{ + "mcpServers": { + "opennews": { + "command": "uv", + "args": ["--directory", "/path/to/opennews-mcp", "run", "opennews-mcp"], + "env": { + "OPENNEWS_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": "" + }, + "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: +``` + +### Cherry Studio + +Settings > MCP Servers > Add > Type stdio:Command `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": "" + } + } + } + } +} +``` + +### 任意 stdio MCP 客户端 + +```bash +OPENNEWS_TOKEN= \ + uv --directory /path/to/opennews-mcp run opennews-mcp +``` + +
+ +--- + +## 兼容性 + +| 客户端 | 安装方式 | 状态 | +|--------|----------|------| +| **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