高德导航:MCP
京东商品搜索:native plugin / function-call
QQ 音乐播放控制:native plugin / function-call,浏览器作兜底
原因是:OpenClaw 把工具当成结构化函数,插件可以原生注册工具;/mcp 会把 MCP 配到 mcp.servers;支持的 stdio MCP server 会作为子进程启动。高德官方站点已经把 MCP Server 列进"大模型开发工具",同时它的 Web 服务接口已经覆盖路线规划,URI API 也支持拉起高德 App/浏览器。JD 公开能力更适合做商品搜索、价格和订单查询;QQ 音乐官方开发者平台明确提供 OpenAPI 和 QPlay,其中 QPlay 的定位就是拿到 QQ/微信/QQ 音乐 App 授权后,在合作方产品里获取音乐流并进行控制。([OpenClaw][1])
下面我直接给你一份合并后的 openclaw.json 模板,以及三套后端约定。
一份能放进 OpenClaw 的总配置
把下面保存成 ~/.openclaw/openclaw.json,再把占位符改成你的实际路径和密钥。OpenClaw 的插件配置放在 plugins.entries.<id>.config,插件搜索路径可以走 plugins.load.paths;浏览器功能要求 plugins.entries.browser.enabled 没被禁用,并且 browser.enabled=true。Ollama 这边继续走原生 http://127.0.0.1:11434,不要加 /v1,否则 OpenClaw 官方明确说会破坏工具调用。([OpenClaw][2])
json5
{
gateway: {
mode: "local",
bind: "loopback",
port: 18789,
auth: {
mode: "token",
token: "REPLACE_WITH_A_LONG_RANDOM_TOKEN"
}
},
commands: {
mcp: true,
plugins: true
},
browser: {
enabled: true,
defaultProfile: "openclaw",
profiles: {
openclaw: { cdpPort: 18800, color: "#FF4500" },
user: {
driver: "existing-session",
attachOnly: true,
color: "#00AA00"
}
}
},
agents: {
defaults: {
model: {
primary: "ollama/qwen2.5:3b",
fallbacks: ["ollama/llama3.2:3b"]
}
}
},
models: {
mode: "merge",
providers: {
ollama: {
apiKey: "ollama-local",
baseUrl: "http://127.0.0.1:11434",
api: "ollama",
models: [
{
id: "qwen2.5:3b",
name: "Qwen2.5 3B",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 4096,
maxTokens: 1024
},
{
id: "llama3.2:3b",
name: "Llama 3.2 3B",
reasoning: false,
input: ["text"],
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: 4096,
maxTokens: 1024
}
]
}
}
},
mcp: {
servers: {
amap: {
command: "/home/<JETSON_USER>/bin/amap-mcp-openclaw",
args: []
}
}
},
plugins: {
enabled: true,
load: {
paths: [
"/home/<JETSON_USER>/openclaw-plugins/jd-shop",
"/home/<JETSON_USER>/openclaw-plugins/qqmusic-control"
]
},
entries: {
browser: {
enabled: true
},
"jd-shop": {
enabled: true,
env: {
JD_APP_KEY: "REPLACE_ME",
JD_APP_SECRET: "REPLACE_ME",
JD_UNION_PID: "REPLACE_ME"
},
config: {
baseUrl: "http://127.0.0.1:19081",
timeoutMs: 8000,
enablePriceQuery: true,
enableOrderQuery: true,
checkoutMode: "browser-confirm"
}
},
"qqmusic-control": {
enabled: true,
env: {
QQMUSIC_APP_ID: "REPLACE_ME",
QQMUSIC_APP_SECRET: "REPLACE_ME"
},
config: {
baseUrl: "http://127.0.0.1:19082",
mode: "qplay-preferred",
browserFallback: true,
browserProfile: "openclaw",
timeoutMs: 8000
}
}
}
}
}
1)高德导航:MCP 版
高德官方已经公开了路线规划 API,步行是 v3/direction/walking,驾车是 v3/direction/driving,骑行是 v4/direction/bicycling;这些接口都要求 origin、destination 和 key。官方文档同时列出了 URI API,适用于原生 App 和手机浏览器,通过 URL 形式实现标注、路径规划、POI 检索等能力。高德站点首页也已经把 MCP Server 列为"大模型开发工具"之一。([Amap][3])
本地包装器
/home/<JETSON_USER>/bin/amap-mcp-openclaw
bash
#!/usr/bin/env bash
set -Eeuo pipefail
export AMAP_API_KEY="REPLACE_ME"
exec /home/<JETSON_USER>/.local/bin/uvx your-amap-mcp-server
这里 your-amap-mcp-server 是你自己的 MCP 包名或本地 server 入口。高德这套最稳的实现方式,就是你自己的 MCP server 去封装下面几个工具:([Amap][4])
amap_search_poi(keyword, city?, location?)amap_geocode(address, city?)amap_reverse_geocode(location)amap_route_plan(origin, destination, mode)amap_open_uri(destination_name, destination_location, mode)
MCP server 里实际调用的官方接口
- 步行:
https://restapi.amap.com/v3/direction/walking - 驾车:
https://restapi.amap.com/v3/direction/driving - 骑行:
https://restapi.amap.com/v4/direction/bicycling
这样做的好处是:OpenClaw 只知道 MCP 工具;高德的鉴权、限流和 URI 拼接都收在 MCP server 里。([Amap][3])
2)京东商品搜索:function-call / native plugin 版
京东开放平台公开可见的接口组里,京东联盟 API 覆盖了精选商品、活动、订单查询;公开检索还能看到 jd.union.open.goods.jingfen.query、jd.union.open.order.row.query,以及价格批量查询接口 jingdong.jdprices.get。这很适合做"搜索 / 比价 / 订单状态"型工具,不适合直接做消费者侧的全自动下单。([JD Zeus Developer Center][5])
你的插件应提供这些工具
在 jd-shop 这个 native plugin 里,注册这些工具最实用:
jd_search_goods(keyword, page=1, sort?)jd_get_goods_price(sku_ids[])jd_get_campaigns(channel?)jd_get_order_status(order_time_from?, order_time_to?)jd_open_goods_page(sku_id)jd_open_checkout_page(sku_id)
插件背后的 bridge service
plugins.entries["jd-shop"].config.baseUrl 我建议接到你自己的本地 bridge,比如:
GET /search?keyword=...POST /priceGET /campaignsGET /ordersGET /open/goods/:skuIdGET /open/checkout/:skuId
然后 bridge service 再去签京东开放平台请求。这样好处是:
OpenClaw 插件不直接写京东签名逻辑,后期切淘宝、拼多多也容易。
同时 checkoutMode: "browser-confirm" 表示只允许打开商品页或结算页,不做自动支付。这个分层是我建议你一定保留的。([OpenClaw][2])
3)QQ 音乐播放控制:function-call 主路,浏览器兜底
QQ 音乐官方开发者平台明确写了它提供 OpenAPI 、QPlay 协议 ,并且 QPlay 的描述就是:用户通过微信、QQ 或 QQ 音乐 App 进行授权后,合作方产品可以获取 QQ 音乐 App 的音乐流并进行控制。也就是说,官方路径是存在的,但通常要走授权和接入审批。([QQ Music Developer Platform][6])
你的插件应提供这些工具
在 qqmusic-control 插件里,建议至少有:
qqmusic_search(keyword, limit=10)qqmusic_play(track_id)qqmusic_pause()qqmusic_resume()qqmusic_next()qqmusic_current_track()qqmusic_add_to_playlist(track_id, playlist_id)
插件配置解释
mode: "qplay-preferred" 表示:
- 优先走官方授权链路(OpenAPI/QPlay)
- 如果当前没有授权,或者某些播控接口权限没下来,就退回
browserFallback: true
浏览器兜底为什么要保留
OpenClaw 的浏览器工具支持一个隔离的 openclaw 配置文件,也支持一个 user 配置去复用你真实浏览器的已登录状态。官方文档明确建议:登录动作手工完成,不要把账号密码交给模型;自动登录容易触发反机器人防护并锁号。 所以 QQ 音乐的现实落地通常是:
- 搜歌、列歌单:函数调用
- 真正点播放:优先官方播控
- 官方播控没打通时:让 OpenClaw 浏览器打开 QQ 音乐 Web 播放页,由你手工登录一次,再让 agent 控制这个浏览器 profile 继续播放/暂停/下一首。([OpenClaw][7])
三套后端各自怎么实现
高德:最像 MCP
因为高德本身就是"标准 HTTP 地图能力 + URI 拉起 App",而且官方已经把 MCP Server 当成正式方向之一,所以这里用 MCP 最自然。([Amap][8])
京东:最像 function-call
因为你真正需要的是"结构化商品结果、价格、活动、订单",这些天然适合 typed tool schema;而消费者侧结算动作最好留给浏览器确认。([OpenClaw][1])
QQ 音乐:最像 function-call + browser fallback
因为官方确实有 OpenAPI/QPlay,但接入和权限往往没高德那种 Web API 直接;保留浏览器兜底,能让你先跑起来。OpenClaw 官方也明确支持受控浏览器和现有登录态浏览器。([QQ Music Developer Platform][6])
推荐的上线顺序
先做:
- 高德导航全打通
- 京东商品搜索 + 比价 + 打开商品页
- QQ 音乐搜索 + 播放/暂停/下一首
这三套骨架是按当前 OpenClaw 原生插件/MCP 形态写的:原生插件使用 openclaw.plugin.json 做发现与配置校验,入口用 definePluginEntry,工具通过 api.registerTool(...) 注册;FastMCP 侧则是 FastMCP(...) + @mcp.tool() + mcp.run() 的最小服务模式。OpenClaw 也支持从本地目录安装插件。 ([OpenClaw][1])
包里包含这三份:
amap-mcp/:Python + FastMCP,直接调用高德官方 Web 服务接口,做地理编码、逆地理编码、POI 关键词搜索、周边搜索、步行/驾车/骑行路线规划。高德官方文档公开了这些 HTTP 接口;高德站点本身也把 URI API 和 MCP Server 作为正式开发能力列出。 ([Amap][2])jd-shop/:TypeScript native plugin,带一个本地mock-bridge.mjs,所以可以先本地跑通jd_search_goods / jd_get_goods_price / jd_get_campaigns / jd_get_order_status / jd_open_goods_page / jd_open_checkout_page。之所以做成"插件 + 本地 bridge",是因为京东开放平台公开能力更适合商品、活动、订单等业务接口,而不是直接把前台消费者流程硬写进插件。 ([JD Zeus Developer Center][3])qqmusic-control/:TypeScript native plugin,也带一个本地mock-bridge.mjs,可先跑通qqmusic_search / qqmusic_play / qqmusic_pause / qqmusic_resume / qqmusic_next / qqmusic_current_track / qqmusic_browser_fallback_url。我把它设计成"插件 + bridge"的原因也一样:QQ 音乐官方开发者平台明确提供 OpenAPI / QPlay,但真实播控通常受授权、产品形态和接入方式影响,所以先把工具契约固定,再替换 bridge 更稳。 ([developer.y.qq.com][4])
启动方式:
bash
# 1) Amap MCP
cd openclaw_app_skeletons/amap-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
export AMAP_API_KEY=你的高德Key
python server.py
# 2) JD plugin
cd ../jd-shop
npm install
npm run build
node mock-bridge.mjs
# 3) QQ Music plugin
cd ../qqmusic-control
npm install
npm run build
node mock-bridge.mjs
然后把对应的 MCP / plugin 配置片段加进 openclaw.json;我已经把最小配置示例写进包内的 README.md 了。OpenClaw 的本地插件安装命令仍然是:
bash
openclaw plugins install ./jd-shop
openclaw plugins install ./qqmusic-control
openclaw gateway restart
这些都是官方支持的本地目录安装方式。 ([OpenClaw][5])
有一处保守处理:
Amap 那套我直接接了官方公开接口;JD 和 QQ 音乐两套我没有把"真实官方签名/授权细节"硬编码进插件,而是留在本地 bridge 层。这样你现在就能跑 mock 版验证 OpenClaw 工具链,后面再把 bridge 换成真实京东/QQ 音乐后端,不用重写插件工具名和参数结构。这个分层更适合前面那套 Jetson + OpenClaw 架构。 ([JD Zeus Developer Center][3])
相关链接及内容如有侵权,私信下架。
参考链接:
1\]: https://docs.openclaw.ai/tools "Tools and Plugins - OpenClaw" \[2\]: https://docs.openclaw.ai/gateway/configuration-reference "Configuration Reference - OpenClaw" \[3\]: https://lbs.amap.com/api/webservice/guide/api/direction "路径规划-基础 API 文档-开发指南-Web服务 API \| 高德地图API" \[4\]: https://lbs.amap.com/api/mcp-server/summary?utm_source=chatgpt.com "高德MCP Server" \[5\]: https://jos.jd.com/apilist?apiGroupId=531\&apiGroupName=%E4%BA%AC%E4%B8%9C%E8%81%94%E7%9B%9Fapi\&utm_source=chatgpt.com "宙斯开发者中心\| API列表 - 京东开放平台- JD.com" \[6\]: https://developer.y.qq.com/ "QQ音乐开发者平台" \[7\]: https://docs.openclaw.ai/tools/browser "Browser (OpenClaw-managed) - OpenClaw" \[8\]: https://lbs.amap.com/api?utm_source=chatgpt.com "高德地图API文档" \[9\]: https://docs.openclaw.ai/plugins/sdk-setup "Plugin Setup and Config - OpenClaw" \[10\]: https://lbs.amap.com/api/webservice/guide/api/georegeo?utm_source=chatgpt.com "高德地理编码" \[11\]: https://jos.jd.com/apilist?apiGroupId=531\&apiGroupName=%E4%BA%AC%E4%B8%9C%E8%81%94%E7%9B%9Fapi\&utm_source=chatgpt.com "宙斯开发者中心\| API列表 - 京东开放平台- JD.com" \[12\]: https://developer.y.qq.com/?utm_source=chatgpt.com "QQ音乐开发者平台" \[13\]: https://docs.openclaw.ai/tools/plugin "Plugins - OpenClaw"