Skip to main content
Glama
malken21

Rakuten API MCP Server

by malken21
README.md
# Rakuten API MCP Server

楽天ウェブサービスの新しいエンドポイント(openapi.rakuten.co.jp / 2026年インフラ刷新後)に対応した、楽天市場、楽天ブックス、楽天トラベル、楽天レシピ、楽天Kobo、楽天GORAの情報を取得・検索できる MCP (Model Context Protocol) サーバーです。

## 特徴
* 2026年5月に移行した認証方式(`applicationId` と `accessKey`)に対応。
* レートリミット(429エラー)制御、およびOrigin/Refererヘッダー送信によるセキュリティ設定に対応。
* サービスごとにモジュール分割された構成。

---

## 対応サービス
本MCPサーバーは、以下の楽天サービスに対応したツール群を登録します。各ツールの詳細な引数やスキーマは、MCPクライアントの自動検出機能により確認可能です。

* 楽天市場
* 楽天ブックス
* 楽天レシピ
* 楽天トラベル
* 楽天Kobo
* 楽天GORA

---

## インストールとセットアップ

### 1. 依存ライブラリのインストール
本プロジェクトは [uv](https://github.com/astral-sh/uv) を使用してパッケージ管理されています。

```bash
uv venv
uv sync
```

### 2. 環境変数の設定
`.env` ファイルを作成し、以下の値を設定してください(ひな形は `.env.example` にあります)。

```env
RAKUTEN_APPLICATION_ID=アプリケーションID (UUID形式)
RAKUTEN_ACCESS_KEY=アクセスキー (pk_から始まるキー)
RAKUTEN_ALLOW_URL=許可されたWebサイトドメイン (例: https://example.com/)
RAKUTEN_AFFILIATE_ID=アフィリエイトID (任意)
```

---

## MCPクライアントの設定例

Claude Desktop などの MCP クライアント設定(例: `config.json`)に以下を追加してください。

```json
{
  "mcpServers": {
    "rakuten-api": {
      "command": "uv",
      "args": [
        "run",
        "--path",
        "[リポジトリの絶対パス]/src/main.py"
      ],
      "env": {
        "RAKUTEN_APPLICATION_ID": "アプリケーションID",
        "RAKUTEN_ACCESS_KEY": "アクセスキー",
        "RAKUTEN_ALLOW_URL": "登録ドメイン",
        "RAKUTEN_AFFILIATE_ID": "アフィリエイトID(任意)"
      }
    }
  }
}
```

---

## 開発とテスト
`pytest` を用いて、モックを用いたテストを実行可能です。

```bash
uv run pytest
```