📡 RSS MCP Server について
RSS MCP Serverは、設定したRSSフィードからPNT/GNSSニュースを収集・検索し、Claude Desktopで自然言語による操作を可能にします。タグ検索と既読状態の永続管理に対応します。
主な機能
- 01複数のRSSフィードの取得と解析
- 02キーワードとタグによる絞り込み・検索
- 03記事の既読・未読状態の管理
- 04自然言語によるフィード操作
- 05未読記事と全記事のリソース公開
活用シーン
- 01未読のGPS妨害関連ニュースの確認
- 02LEO衛星システムの記事検索
- 03特定の組織やトピックに関する報道の検索
- 04確認した記事を既読に設定
MCP 対応
RSSフィード更新、記事取得、既読状態管理、検索のツールと、未読記事および全記事のリソースを公開します。Claude Desktopでの利用を想定しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
📡 RSS MCP サーバー
Claude Desktop の自然言語インターフェースを通じて、カスタム RSS フィードから PNT/GNSS ニュースを追跡、フィルタリング、表示するためのモジュール式 Model Context Protocol(MCP)サーバーです。
✨ 特長
- 🔗 ネイティブ MCP 統合 - Claude Desktop と直接統合します
- 📰 RSS フィード処理 - 複数の RSS フィードを取得して解析します
- 🏷️ タグベースのフィルタリング - 設定可能なタグを使用してコンテンツをフィルタリングします
- 💬 自然言語インターフェース - AI を活用した RSS 管理
- 📊 状態管理 - 記事の既読/未読状態を永続的に追跡します
- 🔍 検索機能 - キーワードとタグに基づいて記事を検索します
- 🛡️ エラー処理 - 適切なフォールバックとエラー復旧を行います
🚀 クイックスタート
前提条件
- Python 3.10+
- Claude Desktop
- 仮想環境(推奨)
インストール
# Clone the repository
cd rss-mcp-server
# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install mcp feedparser pyyaml httpx
設定
- feeds.yaml を作成します(存在しない場合):
- url: https://insidegnss.com/feed/
tags: [C-band, TrustPoint, GPSIA, LEO, PNT]
- url: https://spacenews.com/feed/
tags: [LEO, spoofing, spectrum]
- url: https://www.gpsworld.com/feed/
tags: [GNSS, spoof, jamming, M-code]
- Claude Desktop を設定します:
macOS の場合、~/Library/Application Support/Claude/claude_desktop_config.json に追加します:
{
"mcpServers": {
"rss-mcp-server": {
"command": "/path/to/your/project/.venv/bin/python",
"args": ["/path/to/your/project/main.py"],
"cwd": "/path/to/your/project"
}
}
}
⚠️ パスを実際のプロジェクトの場所に置き換えてください
- Claude Desktop を完全に再起動します(終了してから開き直します)
テスト
# Test server locally
python main.py
# Should output: "RSS MCP Server initialized successfully"
🤖 使用方法
Claude Desktop と統合したら、自然言語のコマンドを使用します:
"Update my RSS feeds"
"Show me articles about GPS jamming"
"Search for LEO satellite articles"
"Mark the first 5 articles as read"
"Find articles about spoofing"
"Show me 10 recent unread articles"
📡 MCP ツール
| ツール | 説明 | パラメーター |
|---|---|---|
update_rss_feeds | すべてのフィードから最新の記事を取得します | なし |
get_unread_articles | 未読の記事を取得します | limit(任意) |
mark_articles_read | 記事を既読にします | article_ids(任意) |
search_articles | キーワードで記事を検索します | query、tags(任意) |
📊 MCP リソース
| リソース URI | 説明 |
|---|---|
rss://feeds/unread | すべての未読記事(JSON) |
rss://feeds/all | すべての記事(JSON) |
📁 プロジェクト構成
rss-mcp-server/
├── main.py # MCP server implementation
├── processor.py # RSS feed processing logic
├── state.py # State management for read/unread tracking
├── feeds.yaml # Feed configuration (direct list format)
├── state.json # Runtime state (auto-created)
├── requirements.txt # Python dependencies
├── README.md # This file
└── .venv/ # Virtual environment
⚙️ 設定の詳細
feeds.yaml の形式
✅ 正しい形式(リストを直接記述):
- url: https://example.com/feed/
tags: [tag1, tag2, tag3]
- url: https://another.com/rss/
tags: [tag4, tag5]
❌ 誤った形式(ラッパーを使用):
feeds: # Don't use this wrapper
- url: https://example.com/feed/
タグ
タグは次の用途に使用します:
- 検索時のコンテンツフィルタリング
- トピックごとの記事の分類
- 検索の関連性の向上
PNT/GNSS コンテンツのタグ例:
GPS、GNSS、PNTjamming、spoofing、interferenceLEO、MEO、satellitesmilitary、defense、civilianM-code、anti-jam、resilient
🔧 トラブルシューティング
よくある問題
Claude Desktop にサーバーが表示されない場合:
claude_desktop_config.jsonの構文とパスを確認します- すべてのパスが絶対パスであることを確認します
- Claude Desktop を完全に再起動します
インポートエラー:
pip install mcp feedparser pyyaml httpx
feeds.yaml の形式エラー:
- リストを直接記述する形式を使用します(
-で開始) feeds:ラッパーは不要です- YAML の構文が正しいことを確認します
ファイル権限エラー:
state.jsonへの書き込み権限があることを確認します- ディレクトリの権限を確認します
デバッグ手順
- ローカルでテスト:
python main.py - 依存関係を確認:
pip list | grep -E "(mcp|feedparser|pyyaml|httpx)" - 設定を検証: Claude Desktop のログを確認します
- フィードを確認: ブラウザーでフィード URL をテストします
🧪 開発
テストの実行
# Test RSS feed processing
python -c "from processor import RSSProcessor; import asyncio; asyncio.run(RSSProcessor().initialize())"
# Test state management
python -c "from state import StateManager; sm = StateManager(); print('State manager working')"
新しいフィードの追加
feeds.yamlにフィード URL を追加します- 適切なタグを設定します
- MCP サーバーを再起動します
- フィードを更新します:「RSS フィードを更新して」
デバッグ
main.py を変更してデバッグ出力を有効にします:
import sys
print("Debug info", file=sys.stderr)
📈 パフォーマンス
- フィード更新:3~5 個のフィードで約 2~5 秒
- 記事検索:一般的なクエリで 1 秒未満
- 状態の永続化:既読/未読状態の変更時に自動で行います
- メモリ使用量:通常の動作で約 10~20 MB
🤝 貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- テストを追加して変更を行います
- プルリクエストを送信します
📄 ライセンス
MIT License - 詳細はLICENSEファイルをご覧ください
🆘 サポート
- 問題:ログを添えてGitHubのIssueを作成してください
- 質問:@anil.goparaju をタグ付けしてください
- ドキュメント:Google Driveのドキュメントをご覧ください
🎯 ユースケース
毎日のニュース概要:
"Update feeds and show me unread articles about GPS jamming and spoofing"
リサーチ支援:
"Search for articles about LEO PNT systems published this week"
競合情報:
"Find articles mentioning TrustPoint or military navigation systems"
コンテンツのキュレーション:
"Show me all unread articles, then mark the first 10 as read"
📊 出力例
「GPS jamming」を検索すると、構造化された結果が表示されます。
{
"count": 3,
"articles": [
{
"id": "251bc714...",
"title": "U.S. Army Taking a Layered Approach to PNT",
"link": "https://insidegnss.com/...",
"published": "2025-06-03T16:58:20",
"author": "Renee Knight",
"feed_tags": ["C-band", "TrustPoint", "GPSIA", "LEO", "PNT"],
"content": "...anti-jamming capabilities..."
}
]
}
最終更新日: 2025年6月5日
ステータス: ✅ 本番環境対応
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。