rakuten-pantry-mcp
# rakuten-pantry-mcp
[mrslbt/rakuten-mcp](https://github.com/mrslbt/rakuten-mcp) をベースにした楽天市場(Ichiba)向け MCP サーバーです。
upstream(npm の `rakuten-mcp`)にはない機能を追加しています。
## 追加機能(upstream にない)
| フィールド / 機能 | 説明 |
|------------------|------|
| `quantity` | 商品名から総個数を解析(例: `24本入り×2ケース` → 48) |
| `unitPrice` | `itemPrice ÷ quantity` |
| `postageLabel` | `送料無料` / `送料別` / `要確認` |
| `estimatedTotalPrice` | 送料無料時は `itemPrice` |
| `shippingVerified` | 送料が API 上で確定しているか |
| `compare_ichiba_value` | 単価比較+送料ウェブ確認のガイドプロンプト |
改造の詳細は [CHANGES.md](CHANGES.md)。upstream へのパッチは [patches/](patches/) を参照。
## リポジトリ構成
```
rakuten-pantry-mcp/
├── src/
│ ├── index.ts # エントリポイント
│ ├── server.ts # MCP サーバー組み立て
│ ├── client.ts # 楽天 API クライアント
│ ├── config.ts / errors.ts / i18n.ts / auth.ts
│ ├── tools/
│ │ ├── ichiba.ts # ★ 改造の本体(5ツール)
│ │ ├── index.ts
│ │ ├── types.ts
│ │ └── meta.ts
│ ├── prompts/
│ │ ├── ichiba.ts # ★ compare_ichiba_value
│ │ ├── schema.ts # ★ プロンプト引数の型変換
│ │ └── index.ts
│ ├── transports/ # stdio / HTTP
│ └── resources/
├── test/ # ichiba / prompts / http のテスト
├── patches/ # upstream 向け差分
├── dist/ # ビルド成果物(npm run build)
├── package.json
├── README.md
├── CHANGES.md
├── AGENTS.md
└── LICENSE
```
Ichiba ツール 5個のみ(Books / Travel / Recipe / Kobo / GORA は含みません)。`resources/` は現時点では未使用(空のレジストリ)です。
## セットアップ
```bash
git clone https://github.com/yukin_co/rakuten-pantry-mcp.git
cd rakuten-pantry-mcp
npm install
npm run build
```
## MCP クライアント設定
環境変数 `RAKUTEN_APP_ID` と `RAKUTEN_ACCESS_KEY` が必要です([楽天デベロッパー](https://webservice.rakuten.co.jp/)で取得)。
### ローカル clone を使う場合
`args` には **clone 先の `dist/index.js` への絶対パス** を指定します。
```json
{
"mcpServers": {
"rakuten-pantry": {
"command": "node",
"args": ["/path/to/rakuten-pantry-mcp/dist/index.js"],
"env": {
"RAKUTEN_APP_ID": "your-app-id",
"RAKUTEN_ACCESS_KEY": "your-access-key"
}
}
}
}
```
### npx で使う場合(npm 公開後)
```json
{
"mcpServers": {
"rakuten-pantry": {
"command": "npx",
"args": ["-y", "rakuten-pantry-mcp"],
"env": {
"RAKUTEN_APP_ID": "your-app-id",
"RAKUTEN_ACCESS_KEY": "your-access-key"
}
}
}
}
```
> npm の `rakuten-mcp`([mrslbt/rakuten-mcp](https://github.com/mrslbt/rakuten-mcp))は別パッケージです。上記の `rakuten-pantry-mcp` を指定してください。
## ツール(5)
| ツール | 内容 |
|--------|------|
| `ichiba_item_search` | キーワード検索(quantity / unitPrice / 送料フラグ付き) |
| `ichiba_genre_search` | ジャンルツリー |
| `ichiba_tag_search` | タグ参照 |
| `ichiba_item_ranking` | 売れ筋ランキング |
| `ichiba_product_search` | 複数店舗横断の価格比較 |
## プロンプト(1)
| プロンプト | 内容 |
|------------|------|
| `compare_ichiba_value` | 単価比較と送料確認の手順をエージェントに渡す |
## 開発
```bash
npm run typecheck
npm test
npm run build
```
## ライセンス
MIT — 元: [mrslbt/rakuten-mcp](https://github.com/mrslbt/rakuten-mcp)(MIT)TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: genre navigation, ranking, item keyword search, cross-seller product comparison, and tag lookup. The descriptions explicitly differentiate them, e.g., ichiba_product_search is for price comparisons while ichiba_item_search is for general keyword search.
All tools follow the pattern 'ichiba_<domain>_<operation>' (e.g., ichiba_genre_search, ichiba_item_ranking). The only minor deviation is that most use '_search' but 'ichiba_item_ranking' uses '_ranking' instead. Overall, the convention is consistent and predictable.
With 5 tools, the server is well-scoped for browsing and searching the Rakuten Ichiba marketplace. Each tool covers a necessary function, and the count is neither too slim nor too heavy for this domain.
The tool set covers core browsing and search needs (genre, ranking, item search, product comparison, tags). A minor gap is the lack of a tool to retrieve detailed information for a single item by ID, which could be useful. However, the existing tools are sufficient for the main use cases.