# RSS Feed MCPサーバー 仕様書
## 概要
RSS FeedデータをClaudeのModel Context Protocol (MCP)経由で取得・処理できるサーバーです。NPXで簡単に実行可能な形で提供されます。
## 技術スタック
### 言語・ランタイム
- **Node.js** (v18+)
- **TypeScript** (v5+)
### 主要ライブラリ
- **@modelcontextprotocol/sdk**: MCP標準ライブラリ
- **rss-parser**: RSS/Atomフィードの解析
- **node-fetch**: HTTP リクエスト
- **zod**: データバリデーション
- **commander**: CLI引数解析
### 開発・ビルドツール
- **tsup**: TypeScriptバンドラー
- **tsx**: TypeScript実行環境
- **vitest**: テストフレームワーク
- **eslint**: コード品質管理
- **prettier**: コードフォーマッタ
## 機能仕様
### 1. コアMCP Tools
#### `fetch_rss_feed`
RSS/Atomフィードを取得・解析する
**パラメータ:**
- `url` (string, required): RSS/AtomフィードのURL
- `limit` (number, optional): 取得する記事数の上限 (デフォルト: 10)
- `includeContent` (boolean, optional): 記事の全文を含めるか (デフォルト: false)
**戻り値:**
```typescript
{
feedInfo: {
title: string;
description: string;
link: string;
lastBuildDate: string;
language?: string;
};
items: Array<{
title: string;
link: string;
description: string;
pubDate: string;
author?: string;
categories?: string[];
content?: string; // includeContent=trueの場合のみ
}>;
}
```
#### `list_feeds`
登録されているRSSフィードの一覧を取得
**パラメータ:** なし
**戻り値:**
```typescript
{
feeds: Array<{
id: string;
name: string;
url: string;
addedDate: string;
lastFetched?: string;
}>;
}
```
#### `add_feed`
新しいRSSフィードを登録
**パラメータ:**
- `name` (string, required): フィードの表示名
- `url` (string, required): RSS/AtomフィードのURL
**戻り値:**
```typescript
{
success: boolean;
feedId: string;
message: string;
}
```
#### `remove_feed`
登録されているRSSフィードを削除
**パラメータ:**
- `feedId` (string, required): 削除するフィードのID
**戻り値:**
```typescript
{
success: boolean;
message: string;
}
```
### 2. 設定管理
#### 設定ファイル
- **場所**: `~/.config/rss-feed-mcp/config.json`
- **形式**: JSON
**設定項目:**
```typescript
{
feeds: Array<{
id: string;
name: string;
url: string;
addedDate: string;
lastFetched?: string;
}>;
defaultLimit: number; // デフォルト: 10
timeout: number; // HTTPタイムアウト(ms) デフォルト: 10000
userAgent: string; // デフォルト: "RSS-Feed-MCP-Server/1.0.0"
}
```
### 3. エラーハンドリング
#### エラータイプ
1. **ネットワークエラー**: フィード取得時の接続エラー
2. **パースエラー**: RSS/Atom形式の解析エラー
3. **バリデーションエラー**: 入力パラメータの検証エラー
4. **設定エラー**: 設定ファイルの読み書きエラー
#### エラーレスポンス形式
```typescript
{
error: true;
code: string; // "NETWORK_ERROR" | "PARSE_ERROR" | "VALIDATION_ERROR" | "CONFIG_ERROR"
message: string;
details?: any;
}
```
## NPX実行仕様
### パッケージ名
`rss-feed-mcp-server`
### 実行方法
```bash
# 基本実行
npx rss-feed-mcp-server
# ポート指定
npx rss-feed-mcp-server --port 3001
# 設定ファイル指定
npx rss-feed-mcp-server --config /path/to/config.json
# デバッグモード
npx rss-feed-mcp-server --debug
```
### CLI オプション
- `--port, -p`: サーバーポート (デフォルト: 3000)
- `--config, -c`: 設定ファイルパス
- `--debug, -d`: デバッグログ出力
- `--help, -h`: ヘルプ表示
- `--version, -v`: バージョン表示
## パッケージ構成
### ディレクトリ構造
```
rss-feed-mcp-server/
├── src/
│ ├── index.ts # メインエントリーポイント
│ ├── server.ts # MCPサーバー実装
│ ├── tools/ # MCP Tools実装
│ │ ├── fetch-rss.ts
│ │ ├── list-feeds.ts
│ │ ├── add-feed.ts
│ │ └── remove-feed.ts
│ ├── config/ # 設定管理
│ │ └── manager.ts
│ ├── types/ # 型定義
│ │ └── index.ts
│ └── utils/ # ユーティリティ
│ ├── rss-parser.ts
│ └── validation.ts
├── __docs__/ # ドキュメント
├── tests/ # テスト
├── package.json
├── tsconfig.json
├── tsup.config.ts
└── README.md
```
### package.json 主要設定
```json
{
"name": "rss-feed-mcp-server",
"version": "1.0.0",
"type": "module",
"bin": {
"rss-feed-mcp-server": "./dist/index.js"
},
"files": ["dist"],
"engines": {
"node": ">=18.0.0"
}
}
```
## 使用例
### Claude Desktop設定
```json
{
"mcpServers": {
"rss-feed": {
"command": "npx",
"args": ["rss-feed-mcp-server"]
}
}
}
```
### 基本的な使用フロー
1. RSS フィードを追加: `add_feed`
2. フィード一覧を確認: `list_feeds`
3. RSS データを取得: `fetch_rss_feed`
4. 不要なフィードを削除: `remove_feed`
## セキュリティ考慮事項
1. **URL検証**: 不正なURLや危険なスキームの拒否
2. **レート制限**: 同一URLへの連続リクエスト制限
3. **タイムアウト**: 長時間実行の防止
4. **ファイルサイズ制限**: 大きすぎるフィードの処理制限
5. **入力サニタイゼーション**: XSS攻撃防止
## パフォーマンス要件
- **応答時間**: 通常のRSSフィード取得は5秒以内
- **メモリ使用量**: 100MB以下での動作
- **同時処理**: 最大10件までの並行フィード処理
- **キャッシュ**: フィードデータの一時キャッシュ機能
## 今後の拡張予定
1. **フィードカテゴリ管理**: フィードのグループ分け機能
2. **フィルタリング**: キーワードによる記事フィルター
3. **WebSocket対応**: リアルタイム更新通知
4. **OPML対応**: フィードリストのインポート/エクスポート
5. **統計機能**: フィード取得統計とレポート