# モデル接続 (MCP/Agent)

この記事では、FIRERPA を大規模言語モデルと連携させる方法（MCP またはコマンドベース）について説明します。FIRERPA は、MCP サーバーサイドプロトコルと OpenAI ネイティブの tool-call 機能を下位層で実装しており、独自の MCP プラグインを作成して標準の 65000 ポートでサービスを提供したり、Agent クラスを継承して全自動の tools 呼び出しを実現したりできます。

## 組み込み Agent コマンド

組み込みの `agent` コマンドを使用すると、大規模言語モデルを通じて完全に口語的なタスクを迅速に完了できます。OpenAI API + toolcall と互換性のある任意のサービスプロバイダーまたは自己ホスト型サービスをサポートしています。組み込みの crontab と組み合わせることで、口語的なタスクの定期実行を実現できます。

```{hint}
`agent` コマンドは、組み込みターミナル内で使用する必要があります。また、有効な API とキーを提供する必要があります。各大規模言語モデルのパフォーマンスは異なる場合があるため、ご自身に最適なものを選択してください。gemini、openai、deepseek、glm などを推奨します。
```

| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
| :--- | :--- | :--- | :--- | :--- |
| `--api` | 文字列 (str) | はい | - | API エンドポイント |
| `--model` | 文字列 (str) | はい | - | モデル名 |
| `--temperature` | 浮動小数点数 (float) | いいえ | `0.2` | モデルのサンプリング温度 |
| `--key` | 文字列 (str) | はい | - | 認証用の API キー |
| `--vision` | ブール値 (bool) | いいえ | `False` | ビジョンモードを有効にするかどうか |
| `--imsize` | 整数 (int) | いいえ | `1000` | ビジョンモードでの画像サイズ |
| `--prompt` | 文字列 (str) | はい | - | エージェント（Agent）が実行する指示 |
| `--max-tokens` | 整数 (int) | いいえ | `16384` | 生成される最大トークン数 |
| `--step-delay` | 浮動小数点数 (float) | いいえ | `0.0` | ステップ間の遅延時間 |

```{attention}
注意点として、API パラメータのアドレスは `base_url` ではなく、完全なアドレスである必要があります。通常、`base_url` の後に `/chat/completions` を追加して、完全な API アドレスを構成します。
```

必要な情報を準備したら、リモートデスクトップのターミナルで以下のコマンドを入力することで、AI にデバイスを自動操作させることができます。

```bash
agent --api https://generativelanguage.googleapis.com/v1beta/openai/chat/completions --key YOUR_API_KEY --model gemini-2.5-flash --prompt "設定アプリ（パッケージ名 com.android.settings）を開き、ネットワーク設定を見つけて、機内モードをオンにしてください"
```

タスクのプロンプトが長すぎる場合は、ファイルでモデルのプロンプトを提供することもできます。

```bash
agent --api https://generativelanguage.googleapis.com/v1beta/openai/chat/completions --key YOUR_API_KEY --model gemini-2.5-flash --prompt /path/to/prompt.txt
```

## Claude & Cursor 接続（MCP）

このセクションでは、FIRERPA の MCP 機能を大規模言語モデルクライアントに接続する方法について説明します。ここでは Claude と Cursor を例として示しますが、MCP プロトコルをサポートする他の任意の場所でも使用できます。

```{note}
FIRERPA の組み込み MCP サービスは、tool-call、resource-read、prompts、進捗通知、およびログをサポートしています。
```

```{attention}
8.0 サーバーと 9.0 サーバーでは通信プロトコルが異なることに注意してください。9.x は streamable-http、8.x は sse です。
```

### 公式拡張機能のインストール

私たちは公式の MCP サービスを提供しており、<a href="https://github.com/firerpa/lamda/blob/HEAD/extensions/firerpa.py" target="_blank">extensions/firerpa.py</a> からこの拡張モジュールをダウンロードできます。その作成方法を参考にして、自分でプラグイン機能を作成または拡張することもできます。拡張プラグインスクリプトをダウンロードした後、リモートデスクトップまたは手動の push を使用して、デバイスの `/data/usr/modules/extension` ディレクトリにアップロードし、デバイスを再起動するか、FIRERPA サービスを再起動してください。

```{attention}
8.0 の拡張スクリプトと 9.0 の拡張スクリプトには互換性がありません。お使いのサーバーのバージョンを厳密に確認し、github のブランチから対応するスクリプトを取得してください。
```

### 公式拡張機能の使用

**Claude** の場合、まず Claude の設定ページを見つけ、下図の手順に従って操作する必要があります。そして、プロンプトに従って Claude の `claude_desktop_config.json` 設定ファイルを編集し、以下の MCP json サービス設定を書き込みます。


```json
{"mcpServers": {"firerpa": {"command": "npx", "args": ["-y", "supergateway", "--streamableHttp", "http://192.168.0.2:65000/firerpa/mcp/"]}}}
```

<p align="center">
<img src="/assets/images/claude-settings.png" alt="例" width="auto">
</p>

**Cursor** の場合、Cursor Settings を開き、図の手順に従って操作し、以下の設定を入力する必要があります。

```json
{"mcpServers": {"firerpa": {"url": "http://192.168.0.2:65000/firerpa/mcp/"}}}
```

<p align="center">
<img src="/assets/images/cursor-settings.png" alt="例" width="auto">
</p>

```{attention}
設定内のリンクを、ご自身のデバイスの IP アドレスに置き換えるように注意してください。
```

### MCP 拡張機能の作成

```{hint}
ドキュメントは近日公開予定です。ご期待ください。
```