# 插件管理 MCP
通过官网远程 MCP 查询、创建和修改插件、上传安装包、改价及上下架。
提交不等于发布
创建插件、修改资料和更新安装包须管理员审核后生效。改价、上下架直接生效;仅已审核的正式插件可上架。
# 接入准备
- 使用已获得开发者资格的账号登录 BeikeShop 官网 (opens new window)。
- 打开 个人中心 → 我的插件 (opens new window),点击 MCP 接入。
- 在「发布凭据」中填写名称、选择有效期并创建凭据。完整 Token 仅显示一次,请保存到 AI 工具的安全配置中。
- 在 AI 工具中添加下方远程 MCP 地址和请求头,连接后确认能够发现插件管理工具。
凭据默认授权全部工具,仅可管理当前开发者名下的插件。凭据过期、撤销或开发者资格失效后不可调用。
# 连接配置
- MCP 地址:
https://beikeshop.cn/api/mcp/developer - 传输方式:Streamable HTTP,使用 POST / JSON 响应。
- 认证请求头:
Authorization: Bearer <你的 MCP Token>。
配置示例(字段名以 AI 工具要求为准):
{
"mcpServers": {
"beikeshop": {
"url": "https://beikeshop.cn/api/mcp/developer",
"headers": {
"Authorization": "Bearer <你的 MCP Token>"
}
}
}
}
使用官网生成的独立 MCP 凭据,不要填写店铺 Token、管理员凭据或网页登录 Cookie。目前不提供 OAuth 登录、SSE 或服务端推送,客户端需要支持 Bearer 请求头。
上传安装包需本地文件处理及 HTTPS 上传能力;远程 MCP 不能读取本地文件。
# 提供的工具
所有工具通过同一 MCP 地址发现和调用。
| 工具 | 主要参数 | 功能与结果 |
|---|---|---|
get_plugin_form_schema | 无 | 获取字段规则、必填项、语言、插件类型和兼容版本选项,创建前先调用 |
list_my_plugins | 可选 keyword、page | 分页查询自己的插件;keyword 按插件编码搜索,返回正式资料及待审核信息 |
get_my_plugin | plugin_code | 查询指定插件的正式资料、待审核内容和最近审核结果 |
prepare_plugin_update | operation、plugin_code、expected_version、file_size、sha256 | 申请安装包上传会话;operation 为 create 或 update,返回更新编号、上传地址、短期凭据和有效期 |
get_plugin_update_status | update_id | 查询上传校验、提交和审核状态,以及错误或拒绝原因 |
create_plugin | plugin_code、update_id、idempotency_key、fields | 使用已校验的安装包创建插件并提交审核,新插件不会自动上架 |
update_plugin | plugin_code、idempotency_key、fields,可选 update_id | 修改指定资料或替换安装包并提交审核,未提供的字段保持原值 |
update_plugin_price | plugin_code、price,可选 origin_price | 独立修改售价及原价,直接生效,售价不得低于 5 元 |
set_plugin_active | plugin_code、布尔值 active | true 上架、false 下架,直接生效,不改变审核状态 |
fields 支持多语言名称、简介、Markdown 描述、封面图、兼容版本、服务价格、标签及订阅配置等。通过 get_plugin_form_schema 获取实际字段要求;兼容版本使用返回的 版本 ID,不能填写版本字符串。
创建时名称、类型和图标可从安装包填充,仍需要补齐售价、各必填语言的描述和兼容版本等资料。update_plugin 不接受售价、原价或上架状态,请使用对应独立工具。
不提供删除插件、批准审核、直接发布新版本或自动同步 README 的工具,也不能操作其他开发者的插件。
# AI 如何发现和调用工具
MCP 客户端自动执行 initialize → tools/list,将工具定义提供给 AI;AI 选择工具并生成参数后,由客户端通过 tools/call 执行。
tools/list 按凭据权限返回 result.tools,每项包含:
| 字段 | 用途 |
|---|---|
name | 调用时使用的工具名 |
description | 用途、调用时机及业务限制 |
inputSchema | 参数类型、必填项及取值限制 |
annotations | 行为提示,不替代服务端权限校验 |
# 手动查看工具清单
连接验证用 POST 请求(浏览器直接打开为 GET,不支持)。替换 Token 后执行:
curl 'https://beikeshop.cn/api/mcp/developer' \
--header 'Authorization: Bearer <你的 MCP Token>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
无法发现工具时,检查 MCP 地址、传输方式和认证请求头。401 排查见「状态与常见问题」。
# 安装包上传与提交
# 1. 准备 ZIP
ZIP 的包根目录或单一顶层插件目录须包含 config.json 和 Static/ 下的图标。
config.json.code必须与目标plugin_code一致,版本必须与expected_version一致。- 更新已有插件时,安装包版本必须与当前正式版本不同;只改资料不要求升级版本。
- 图标由
config.json.icon指定,路径相对Static/;未指定时默认使用Static/image/logo.png。 - 图标支持 PNG、JPEG、GIF、WebP,最大 5 MiB、4096 × 4096。
- 默认 ZIP 上限为 100 MiB,解压总量为 500 MiB,最多 10000 个条目;以官网实际限制为准。
- 不接受加密包、符号链接和越界路径。官网只校验安装包,不运行插件代码。
插件结构与配置详见 插件开发。
# 2. 申请上传会话
计算本次 ZIP 的文件大小(字节)和 SHA-256,调用 prepare_plugin_update:
{
"operation": "update",
"plugin_code": "example",
"expected_version": "2.0.0",
"file_size": 12345,
"sha256": "<本次 ZIP 的 64 位小写 SHA-256>"
}
创建新插件时将 operation 改为 create。文件大小和校验值必须使用实际计算结果。
# 3. 上传文件并等待校验
返回结果包含 update_id、upload_url、method、headers 和 expires_at。按照返回的地址和请求头发送 multipart 上传,文件字段名为 file:
curl --request POST "$UPLOAD_URL" \
--header "Authorization: $UPLOAD_AUTHORIZATION" \
--form "file=@$PLUGIN_ZIP"
UPLOAD_URL = 返回的 upload_url;UPLOAD_AUTHORIZATION = 返回的 headers.Authorization 完整值(含 Bearer);PLUGIN_ZIP = 本地 ZIP 路径。
上传使用本次会话的短期上传凭据,不要使用长期 MCP Token,不要把 Token 放入 URL,也不要向 MCP 参数传递本地路径或 Base64 文件内容。
随后调用 get_plugin_update_status,参数为 {"update_id":"<本次更新编号>"}。等待状态变为 ready 后,才能提交审核。
# 4. 提交审核
只更新安装包时,调用 update_plugin:
{
"plugin_code": "example",
"update_id": "<本次更新编号>",
"idempotency_key": "example-2.0.0-release-1",
"fields": {}
}
创建新插件时,先获取字段要求,再调用 create_plugin,例如:
{
"plugin_code": "example",
"update_id": "<本次更新编号>",
"idempotency_key": "example-create-1",
"fields": {
"price": 99,
"description": {
"zh_cn": "插件的中文功能说明。",
"en": "Plugin features and usage instructions."
},
"versions": [1]
}
}
此例使用安装包中的名称、类型和图标作为默认值;versions 中的 1 只是示例 ID,请替换为字段规则工具返回的真实 ID,语言也以返回的必填语言为准。
提交成功返回 pending_review。继续通过 get_plugin_update_status 查询结果;approved 表示审核通过,rejected 表示审核拒绝,可查看原因后修订并重新提交。
# 只修改资料
无需准备上传会话或上传安装包,调用 update_plugin 时省略 update_id,只提供要修改的字段:
{
"plugin_code": "example",
"idempotency_key": "example-description-1",
"fields": {
"description": {
"zh_cn": "更新后的中文说明,支持 Markdown。"
}
}
}
兼容版本和服务价格的修改同样需要审核。
# 状态与常见问题
| 状态 | 含义 |
|---|---|
awaiting_upload | 等待上传安装包 |
validating | 文件已接收,正在校验 |
ready | 校验通过,尚未提交审核 |
failed / expired | 处理失败或上传会话已过期 |
pending_review | 已提交,等待管理员审核 |
approved / rejected / ban | 审核通过、审核拒绝或被冻结 |
applied | 独立改价或上下架已直接生效 |
- 认证失败:检查 Token、有效期、撤销状态及开发者资格。
- 无法上传本地文件:检查本地文件处理和 HTTPS 上传能力。
- 校验失败:根据错误检查包结构、编码、版本、大小和 SHA-256,修复后重新申请上传会话。
- 已有待审核提交:不能覆盖已有审核稿,包括网页提交的审核稿;等待审核结果,拒绝后可以修订并重新提交。
- 网络中断或重试:先查询状态。对同一次提交使用相同
idempotency_key;不同提交使用不同键,避免重复创建或重复提交。 - 上传会话过期:默认有效期为一小时,每位开发者最多同时准备 10 个有效安装包会话,过期后重新申请。
← 插件 README.md 说明 数据字典 →