MCP 服务器
用一个 URL 和你的 API 密钥,把 Claude Code、Cursor、Claude Desktop 或任意 MCP 客户端接入数据工具和浏览器智能体。
Lovely Router MCP 服务器让智能体自行规划任务、查找工具、读取输入结构、运行工具并读取结果。它还提供浏览器智能体。每次调用都走与 REST 相同的 API,因此计费、限制和错误完全一致。
| 设置项 | 值 |
|---|---|
| URL | https://lovelyrouter.com/mcp |
| 传输方式 | Streamable HTTP(基于 POST 的 JSON-RPC,返回 JSON 响应) |
| 认证 | Authorization: Bearer lr-...,与 REST API 使用同一个密钥 |
连接你的客户端#
先在 API 密钥页面创建一个密钥。给智能体用的密钥最好设置消费上限:参阅控制费用。
一条命令即可添加服务器:
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},因此密钥不会写进文件:
{
"mcpServers": {
"lovely-tools": {
"type": "http",
"url": "https://lovelyrouter.com/mcp",
"headers": { "Authorization": "Bearer ${LOVELY_API_KEY}" }
}
}
}测试连接#
服务器使用普通的 JSON-RPC,所以可以直接用 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 中提问:“找出奥斯汀的素食餐厅,告诉我它们的评论都在抱怨什么。” 一次典型的会话如下:
- 规划。 智能体用这个任务调用
suggest_tools。方案建议先运行google-maps-places,再运行google-maps-reviews,按默认上限预计花费 $0.0585。 - 读取输入结构。 它用
{"tool": "google-maps-places"}调用get_tool,查看输入字段。 - 查找地点。 它调用
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。 - 获取评论。 它再次调用
run_tool,传入这些地点 id,每个地点取五条评论:JSON{ "tool": "google-maps-reviews", "input": {"placeIds": ["ChIJ...", "ChIJ..."], "maxReviews": 5, "reviewsSort": "newest"}, "max_results": 50 }返回了五十条评论。费用:50 × $0.000675 = $0.03375。
- 作答。 智能体阅读评论并总结其中的抱怨。整个任务花费约 $0.08,两次运行都会显示在控制台的工具页面中。
以上为当前价格。get_tool 和 suggest_tools 始终返回实时价格。
控制费用#
- 给智能体一个单独的、设有消费上限的密钥。 可能让密钥超出上限的运行会在扣费之前就被拒绝,并返回
402。参阅 API 密钥。 - 要求每次运行都设置
max_results。 这个上限决定了最高费用:每次调用费加上每条结果费乘以max_results。不设置时使用工具的默认值。在提示词或项目指令中写一句就够了:“每次运行都要设置 max_results;任何可能花费超过 $0.50 的运行,都要先问我。” - 先规划。
suggest_tools和get_tool免费且会显示价格,智能体可以在运行开始前确认它的最高费用。 - 查看消费。 每次运行及其扣费都列在工具页面中。没有返回任何结果的失败运行不收费。
你的账户同时最多只能有 10 个运行在进行中。运行如何计费,请参阅运行工具。