ECShopX AI工具集
ECShopX AI MCP / CLI(ecshopx-agent-workspace)
封装 ecshopx 后台与 H5 能力的 MCP Server(stdio / HTTP) 与命令行 shopex,三者为同一 workspace:
ecshopx-agent-core:TypeScript SDK(catalog、Token、缓存、审计等)ecshopx-mcp-server:基于 agent-core 的 MCP Serverecshopx-cli:CLIshopex,与 MCP 共用实现
0. 获取代码与目录说明
从远端克隆后,仓库根目录名为 ECShopX_Ai-mcp-cli(内含根级 package.json 与上述三个子目录)。若本项目作为其它仓库子目录使用(例如 ecshopx-Java 下的 ai-tool/),以下所有命令均在「含 package.json 的那一层」执行,把路径换成你的实际目录即可。
| 平台 | 克隆命令 |
|------|----------|
| GitHub | git clone https://github.com/ShopeX/ECShopX_Ai-mcp-cli.git |
| Gitee | git clone https://gitee.com/ShopeX/ECShopX_Ai-mcp-cli.git |
cd ECShopX_Ai-mcp-cli
1. 安装依赖
cd ECShopX_Ai-mcp-cli # 或 cd ai-tool(嵌入大仓时)
npm ci
要求 Node.js >= 20。
2. 构建与测试
# 构建三个包(agent-core / mcp-server / cli)
npm run build
# 运行全部单元测试(Vitest)
npm test
# 持续监听测试
npm run test:watch
3. 启动 MCP Server
3.1 stdio 模式(本地 Cursor / Claude Code 等)
cd ECShopX_Ai-mcp-cli
npm run build
npm run mcp:stdio
# 等价:node ecshopx-mcp-server/dist/index.js
Cursor / 客户端配置要点:
command:nodeargs: 指向ecshopx-mcp-server/dist/index.js的绝对路径(需先npm run build生成dist)cwd: 仓库根目录的绝对路径(与ecshopx-cli、依赖解析一致,填ECShopX_Ai-mcp-cli那一层)env(按需):ECX_BASE_URL:API 基址,例如 Java 环境http://ecxjava.test,或对接 PHP 时http://ecxphp.testECX_ACCESS_TOKEN:后台 JWT(可选,按你的鉴权方式配置)ECX_MCP_CONFIG_PATH:MCP 工具白名单等配置的绝对路径,一般指向仓库内ecshopx-mcp-server/config.json
mcpServers 配置样例(将 /path/to/ECShopX_Ai-mcp-cli 全部替换为你本机克隆目录的绝对路径;Windows 使用 C:\\Users\\...\\ECShopX_Ai-mcp-cli 形式):
{
"mcpServers": {
"ecshopx": {
"command": "node",
"args": [
"/path/to/ECShopX_Ai-mcp-cli/ecshopx-mcp-server/dist/index.js"
],
"cwd": "/path/to/ECShopX_Ai-mcp-cli",
"env": {
"ECX_BASE_URL": "http://ecxphp.test",
"ECX_MCP_CONFIG_PATH": "/path/to/ECShopX_Ai-mcp-cli/ecshopx-mcp-server/config.json"
}
}
}
}
若需长期 Token,可在 env 中增加 "ECX_ACCESS_TOKEN": "你的JWT"。对接 Java 网关时把 ECX_BASE_URL 改为例如 http://ecxjava.test 即可。
3.2 HTTP 模式(Dify / 远程 MCP 客户端)
cd ECShopX_Ai-mcp-cli
npm run build
npm run mcp:http
# 等价:node ecshopx-mcp-server/dist/transport/http.js
默认监听:http://127.0.0.1:3030
- 健康检查:
GET /health - 服务发现:
GET / - MCP 调用:
POST /mcp
可选开启 Bearer 鉴权:
export ECX_MCP_HTTP_TOKEN="your-secret"
npm run mcp:http
客户端访问 /mcp 时需带 Authorization: Bearer your-secret,/health 不校验。
4. Docker 相关
以下命令均在仓库根目录(
ECShopX_Ai-mcp-cli)执行。
# 构建 MCP 镜像
npm run docker:build-mcp
# docker compose 启动/停止 MCP 服务
npm run docker:up-mcp
npm run docker:down-mcp
# 查看状态与日志
npm run docker:ps-mcp
npm run docker:logs-mcp
# 校验 compose 配置
npm run docker:config-mcp
npm run docker:config-mcp:print
npm run docker:validate-all
# 针对前台匿名 / 会员只读的 profile
npm run docker:up-mcp:front-public
npm run docker:up-mcp:front-member-readonly
5. CLI(shopex)使用
重要:shopex 由本仓库 workspace 包 ecshopx-cli 提供,未发布到 npm。若只写 npx shopex(不带 workspace),npm 会去 registry 找同名包并 404。请在仓库根目录(已执行 npm ci)使用下面任一方式:
npx -w ecshopx-cli shopex …(推荐)npm exec -w ecshopx-cli -- shopex …node ecshopx-cli/dist/index.js …
修改过 ecshopx-cli 源码后,必须重新编译,否则 npx -w ecshopx-cli shopex help 仍是旧的 dist/:
cd ECShopX_Ai-mcp-cli # 或你的仓库根路径
npm run build -w ecshopx-cli
构建完成后,在仓库根目录执行:
npx -w ecshopx-cli shopex help
# 或
node ecshopx-cli/dist/index.js help
约定:在仓库根目录下,下文 shopex 均指 npx -w ecshopx-cli shopex(与 node ecshopx-cli/dist/index.js 等价)。完整子命令列表以 shopex help 为准。
命令怎么接
- C 端 / H5(推荐):
shopex goods list、shopex category list、shopex member login… 详见 help 里 「C-end / H5」。 - 后台 operator:
shopex admin_goods search …、shopex admin_orders messages:new…(工具 key 带admin_,与 C 端区分)。 - 只看 C 端 catalog:
shopex catalog list front。 - 按 catalog key 调用(与 MCP 一致):
shopex ecshopx_h5_goods_list(默认--json '{}')- 简写:
shopex invoke ecshopx_h5_goods_list --json '{"page":1,"pageSize":10}' - 完整:
shopex tool invoke ecshopx_h5_goods_list --json '...'
分页与默认参数
ecshopx_h5_goods_list未传参时,catalog 的defaultQuery会补company_id=1、item_type=normal;分页默认page=1、pageSize=3,上限以 catalog 为准。- 其它带
page/pageSize的 H5、会员工具,默认多为pageSize=10等;后台多为page/page_size,见各工具的defaultPageSize/maxPageSize。
输出长什么样
- 不加
--verbose(默认)- 会员登录:
{ "ok", "token" }或{ "ok", "status", "message" }。 - 其它工具:
{ "tool", "status", "data", "summary", … }。其中tool为 catalog 元数据,但不含endpoint,且不输出顶层 HTTPrequest(避免暴露 method/path 等)。tool内包含key、title、title_zh、description、description_zh、cli_command(字段名为 snake_case,例如description_zh,不是descriptionZH);这些键会排在title/description附近,避免被params挤到 JSON 末尾。
- 会员登录:
--verbose:输出完整ToolInvokeResult(含tool.endpoint、request),用于调试。
会员登录
shopex member login必须带--username、--password;catalog 会合并defaultBody(如auth_type=local、check_type=password)。- 等价路径:
shopex tool invoke ecshopx_member_auth_login --json '...'(输出规则同上)。
报错
EcshopxUserError(用法、参数校验等):CLI 只打印message(无堆栈);MCP 侧formatMcpToolError同样只返回该文案。其它未预期异常仍会带堆栈,便于排查。
若 help 第一行没有 # If this text looks outdated...,说明跑的不是刚编出来的 dist,请检查是否在仓库根目录执行、是否已 npm run build -w ecshopx-cli。
常用命令:
# 版本信息(cli / agent-core / mcp-server / node)
npx -w ecshopx-cli shopex version
# 环境快照(ECX_* 等)
npx -w ecshopx-cli shopex env
# 综合体检(版本 + 环境 + catalog 数量)
npx -w ecshopx-cli shopex doctor
# 检查 HTTP MCP 连通性(需要先 npm run mcp:http 或 docker 启好服务)
npx -w ecshopx-cli shopex mcp ping
npx -w ecshopx-cli shopex mcp ping --soft
6. 作为独立模块迁移 / 上传时需包含的文件
若要单独提交 / 打包本 workspace,建议至少包含:
package.jsonpackage-lock.jsontsconfig.base.jsonvitest.config.tsscripts/目录(所有脚本)ecshopx-agent-core/(含src/、tests/、package.json等)ecshopx-mcp-server/ecshopx-cli/
一键校验(确认上述布局完整,并检查各包 src/、MCP 的 Dockerfile 与 docker-compose.yml):
cd ECShopX_Ai-mcp-cli # 或仓库根目录
npm run pack:verify
一键打包(生成 ../ai-tool-standalone-时间戳.tar.gz,排除各包 node_modules / dist / .git、以及 ecshopx-mcp-server/.env(勿把本机密钥打进包),保留 ecshopx-mcp-server/.env.example 等模板;压缩包内顶层目录名可能为 ai-tool/,以脚本为准;也可传输出路径:npm run pack:archive -- /tmp/out.tgz):
cd ECShopX_Ai-mcp-cli
npm run pack:archive
在目标环境中解压后进入解压出的根目录,执行:
npm ci
npm run build
npm test
npm run mcp:stdio # 或 npm run mcp:http
即可获得与当前环境一致的 MCP + CLI 能力。