Lovely Router文档
获取密钥
数据工具

MCP 服务器

用一个 URL 和你的 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 密钥页面创建一个密钥。给智能体用的密钥最好设置消费上限:参阅控制费用。

一条命令即可添加服务器:

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"}'

服务器提供的工具#

两个工具用于搜索和阅读网页。服务器会告诉智能体:凡是需要查找或阅读的内容都用它们,浏览器智能体只留给需要交互的页面。

工具作用参数
web_search搜索网页:最多 50 条结果,每条包含标题、URL、日期和供模型阅读的摘要。查询中可用运算符:site:、-site:、"精确短语"、-词、lang:、after:、before:。每次搜索 $0.0009;没有结果的搜索不收费。query(必填)、count、need_content、question
web_fetch把一个网页读取为干净的 Markdown:标题和正文,不含菜单和广告。每个页面 $0.0009;无法读取的页面不收费。长页面分段返回,继续阅读免费。url,或用 run_id 和 offset 继续阅读

两个工具用 GPT Image 2.5 生成图片(2.5 不可用时改用 GPT Image 2),计费与 Images API 相同:每张 $0.04,任何尺寸同价,失败不收费。

工具作用参数
generate_image根据描述生成一张图片,可附带参考图(URL、data: URL 或之前图片的链接)。返回一个 24 小时内无需密钥即可下载的链接,以及保存它的 curl 命令。等待时间内未完成的图片会返回其任务 ID。prompt(必填)、size、images
get_image等待仍在生成的图片,完成后返回其链接。免费。job_id(必填)

五个工具覆盖数据工具目录。服务器会告诉智能体:用 suggest_tools 规划(只找一个工具时用 search_tools),用 get_tool 读取输入结构,再调用 run_tool。

工具作用参数
suggest_tools规划任务:先运行的工具、可选的第二个工具和备选工具,每个都附带示例输入和预估费用。免费。task(必填)、limit
search_tools在目录中按关键词搜索,返回工具 ID 和价格。免费。query(必填)、limit
get_tool工具的输入结构、示例输入和价格。字段说明中包含该工具的查询语法,例如 X 搜索运算符。免费。tool(必填)
run_tool运行工具并返回结果,从你的余额中扣费。tool(必填)、input(必填)、max_results、fields
get_run一次运行的状态和结果。会等待它完成。run_id(必填)、offset、fields

四个工具用于操作浏览器智能体。它用于智能体需要交互的页面:登录、表单、多步骤流程。只想读取页面内容时,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、工具、状态、结果数和费用),然后每条结果一行,省略空字段并截断长文本。每次返回约 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 下载。
  • 长时间运行。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 中提问:“找出奥斯汀的素食餐厅,告诉我它们的评论都在抱怨什么。” 一次典型的会话如下:

  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
    }

    返回了十个地点及其 placeId。费用:$0.00075 + 10 × $0.000238 = $0.00313。

  4. 获取评论。 它再次调用 run_tool,传入这些地点 id,每个地点取五条评论:
    JSON
    {
      "tool": "google-maps-reviews",
      "input": {"placeIds": ["ChIJ...", "ChIJ..."], "maxReviews": 5, "reviewsSort": "newest"},
      "max_results": 50
    }

    返回了五十条评论。费用:50 × $0.000675 = $0.03375。

  5. 作答。 智能体阅读评论并总结其中的抱怨。整个任务花费约 $0.08,两次运行都会显示在控制台的工具页面中。

以上为当前价格。get_tool 和 suggest_tools 始终返回实时价格。

控制费用#

  • 给智能体一个单独的、设有消费上限的密钥。 可能让密钥超出上限的运行会在扣费之前就被拒绝,并返回 402。参阅 API 密钥。
  • 要求每次运行都设置 max_results。 这个上限决定了最高费用:每次调用费加上每条结果费乘以 max_results。不设置时使用工具的默认值。在提示词或项目指令中写一句就够了:“每次运行都要设置 max_results;任何可能花费超过 $0.50 的运行,都要先问我。”
  • 先规划。 suggest_tools 和 get_tool 免费且会显示价格,智能体可以在运行开始前确认它的最高费用。
  • 查看消费。 每次运行及其扣费都列在工具页面中。没有返回任何结果的失败运行不收费。

你的账户同时最多只能有 10 个运行在进行中。运行如何计费,请参阅运行工具。