Lovely Routerドキュメント
キーを取得
データツール

MCP サーバー

URL 1 つと API キーで、Claude Code、Cursor、Claude Desktop などの MCP クライアントをデータツールとブラウザエージェントに接続します。

Lovely Router の MCP サーバーを使うと、エージェントが自分でタスクのプランを立て、ツールを探し、入力スキーマを読み、実行して結果を読めるようになります。ブラウザエージェントも公開しています。すべての呼び出しは REST と同じ API を通るため、課金、制限、エラーはまったく同じです。

設定値
URLhttps://lovelyrouter.com/mcp
トランスポートStreamable HTTP(POST 経由の JSON-RPC、JSON レスポンス)
認証Authorization: Bearer lr-...(REST API と同じキー)

クライアントを接続する#

まず API キーでキーを作成します。エージェントには利用上限付きのキーを使うことをおすすめします。費用を管理するを参照してください。

コマンド 1 つでサーバーを追加します。

Shell
claude mcp add --transport http lovely-tools https://lovelyrouter.com/mcp \
  --header "Authorization: Bearer $LOVELY_API_KEY"

これで現在のプロジェクトにだけ追加されます。すべてのプロジェクトで使うには --scope user を付けてください。claude mcp list を実行すると、接続できているか確認できます。

チームでサーバーを共有する場合は、代わりにプロジェクトのルートに .mcp.json をコミットします。Claude Code は ${LOVELY_API_KEY} を各メンバーの環境変数から展開するため、キーがファイルに含まれることはありません。

JSON
{
  "mcpServers": {
    "lovely-tools": {
      "type": "http",
      "url": "https://lovelyrouter.com/mcp",
      "headers": { "Authorization": "Bearer ${LOVELY_API_KEY}" }
    }
  }
}

接続をテストする#

サーバーはプレーンな JSON-RPC で通信するため、cURL で呼び出せます。次のコマンドは、サーバーが公開しているツールの一覧を取得します。

cURL
curl https://lovelyrouter.com/mcp \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

サーバーが公開するツール#

2 つのツールで Web を検索して読み取ります。サーバーはエージェントに、調べたり読んだりするときはこれらを使い、ブラウザエージェントは操作が必要なページだけに使うよう伝えます。

ツール内容引数
web_searchWeb を検索します。最大 50 件の結果に、タイトル、URL、日付、モデル向けの要約が付きます。クエリで使える演算子:site:、-site:、"完全一致"、-語、lang:、after:、before:。1 回の検索につき $0.0009。結果がない検索は無料です。query(必須)、count、need_content、question
web_fetch1 ページを、メニューや広告を除いたきれいな Markdown(タイトルと本文)で読み取ります。1 ページにつき $0.0009。読み取れないページは無料です。長いページは分割して返り、続きを読むのは無料です。url、または続きを読むための run_id と offset

2 つのツールで GPT Image 2.5(使えないときは GPT Image 2)による画像を作ります。料金は Images API と同じで、1 枚 $0.04、サイズを問わず同額、失敗時は無料です。

ツール内容引数
generate_image説明から画像を 1 枚作ります。参考画像(URL、data: URL、以前の画像のリンク)も渡せます。キーなしで 24 時間使えるダウンロードリンクと、保存用の curl コマンドを返します。待ち時間内に終わらなかった画像はジョブ ID を返します。prompt(必須)、size、images
get_image作成中だった画像を待ち、できあがったらリンクを返します。無料です。job_id(必須)

5 つのツールでデータツールのカタログを使います。サーバーはエージェントに、suggest_tools で計画し(ツールを 1 つ探すだけなら search_tools)、get_tool でスキーマを読み、run_tool を呼ぶよう伝えます。

ツール内容引数
suggest_toolsタスクを計画します:最初に実行するツール、任意の 2 つ目のツール、代替案。それぞれに入力例と見積もり費用が付きます。無料。task(必須)、limit
search_toolsカタログをキーワードで検索し、ツール ID と価格を返します。無料。query(必須)、limit
get_toolツールの入力スキーマ、入力例、価格。フィールドの説明には、X の検索演算子のようなそのツールのクエリ構文が含まれます。無料。tool(必須)
run_toolツールを実行して結果を返し、残高から課金します。tool(必須)、input(必須)、max_results、fields
get_run実行の状態と結果。完了を待ちます。run_id(必須)、offset、fields

4 つのツールでブラウザエージェントを操作します。ログイン、フォーム、複数ステップの流れなど、エージェントが操作する必要のあるページ向けです。ページの内容を読むだけなら web_fetch のほうが速く安価です。ブラウザはクラウドで動くため、localhost やプライベートアドレスは開けません。

ツール内容引数
browser_run目標と開始 URL からブラウザの実行を始め、約 45 秒後に状態を返します。goal(必須)、start_url(必須)、mode、max_steps、output_schema、model、secrets、profile、save_profile、files、approve、human_timeout_minutes
browser_statusブラウザの実行の状態。進捗を最大約 45 秒待ちます。run_id(必須)
browser_reply人の対応を待っている実行に返答します:質問への answer、approve の true / false(任意で reason)、または引き継ぎ後の done。run_id(必須)、answer・approve・done のいずれか
browser_takeover今すぐブラウザをユーザーに渡します。実行の状態にライブビューの URL が付きます。run_id(必須)、instructions

ブラウザの各引数はブラウザエージェントのガイドで説明しています:モード、構造化出力、ログインとプロファイル、ファイル、人の介入。パスワードやワンタイムコードは MCP では送りません。エージェントは保管庫のシークレットを名前で使い、コードは人が API で送ります。

ツールが返す内容#

返答はモデルが読むために書かれ、短く保たれます。エージェントは長いツール結果を切り詰めたりファイルに退避したりするためです:

  • web_search は、タイトル、サイト、日付、URL、要約付きの番号付き結果を返します。web_fetch はページを約 12,000 文字ずつ返し、続きを読むための run_id と offset を付けます。
  • run_tool と get_run は、実行 ID・ツール・状態・結果数・料金の 1 行に続けて、空のフィールドを省き長いテキストを切り詰めた結果を 1 件 1 行で返します。1 回の返答は約 12,000 文字で、最後の行に残りの取り方(offset を付けた get_run、または必要なキーだけを残す fields)が書かれます。完全な JSON は GET /v1/tools/runs/{run_id} で取得できます。
  • その他のツールは、対応する REST エンドポイントと同じ JSON をテキストで返します:POST /v1/tools/suggest、POST /v1/tools/discover、GET /v1/tools/{id}。
  • エラーは isError: true のツール結果とメッセージで返るため、エージェントは調整できます。run_tool が入力を受け付けなかった場合、返答にそのツールの入力フィールドと例が含まれます。
  • generate_image と get_image は、ジョブ ID・サイズ・ファイルサイズ・料金の行と、ダウンロードリンク、その curl コマンドを返します。ジョブは POST /v1/images/jobs で作ったものと同じなので、ログに表示され、画像は 7 日間キーを使って GET /v1/images/jobs/{id}/content からも取得できます。
  • 長い実行。多くのクライアントは 1 分ほどでツール呼び出しをあきらめるため、run_tool は最大 50 秒待ちます。それを過ぎても続いている実行は、Still running. Call get_run with this run id to get the results. と実行の内容で返ります。より長いツール呼び出しを許すクライアントは、サーバー URL に ?wait=(10〜280 秒)を付けられます。

キーなしの場合#

suggest_tools、search_tools、get_tool はキーなしで動作するため、キーを接続する前でもエージェントはカタログを閲覧できます。run_tool、get_run、ブラウザ関連のツールは、キーを追加するまで認証エラーを返します。

エージェントセッションの例#

サーバーを接続した Claude Code に、「Austin のヴィーガンレストランを探して、レビューでどんな不満が書かれているか教えて」と頼んだとします。典型的なセッションは次のとおりです。

  1. プランを立てる。 エージェントがタスクを渡して suggest_tools を呼び出します。プランは、まず google-maps-places、次に google-maps-reviews を実行するというもので、デフォルトの上限での見積もりは $0.0585 です。
  2. スキーマを読む。 {"tool": "google-maps-places"} を渡して get_tool を呼び出し、入力フィールドを確認します。
  3. 場所を探す。 run_tool を呼び出します。
    JSON
    {
      "tool": "google-maps-places",
      "input": {"searchTerms": ["vegan restaurant"], "location": "Austin, Texas, USA"},
      "max_results": 10
    }

    10 件の場所が placeId 付きで返ります。費用:$0.00075 + 10 × $0.000238 = $0.00313。

  4. レビューを取得する。 場所の ID を渡し、1 か所あたり 5 件のレビューで、もう一度 run_tool を呼び出します。
    JSON
    {
      "tool": "google-maps-reviews",
      "input": {"placeIds": ["ChIJ...", "ChIJ..."], "maxReviews": 5, "reviewsSort": "newest"},
      "max_results": 50
    }

    50 件のレビューが返ります。費用:50 × $0.000675 = $0.03375。

  5. 回答する。 エージェントがレビューを読み、不満点をまとめます。タスク全体の費用は約 $0.08 で、2 回の実行はどちらもダッシュボードのツールに表示されます。

上記の価格は現時点のものです。get_tool と suggest_tools は常に最新の価格を返します。

費用を管理する#

  • エージェントには利用上限付きの専用キーを渡す。 キーの上限を超える可能性がある実行は、何も課金される前に 402 で拒否されます。API キーを参照してください。
  • すべての実行で max_results を指定させる。 この上限で費用が決まります(呼び出し料金 + 結果単価 × max_results)。指定しないとツールのデフォルトが適用されます。プロンプトやプロジェクトの指示に次のような 1 行を入れておくと効果的です:「必ず max_results を設定し、$0.50 を超える可能性がある実行の前には確認すること。」
  • 先にプランを立てる。 suggest_tools と get_tool は無料で価格を表示するため、エージェントは実行を開始する前に最大費用を確認できます。
  • 利用額を確認する。 すべての実行とその課金額はツールに表示されます。何も返さずに失敗した実行は無料です。

アカウントで同時に進行できる実行は最大 10 件です。実行の課金の仕組みについてはツールを実行するを参照してください。