Skip to content

Commit 00a647c

Browse files
authored
feat: add sync mcp servers (#240)
1 parent fca6c3b commit 00a647c

17 files changed

Lines changed: 1542 additions & 661 deletions

File tree

sdks/apigw-manager/bin/sync-apigateway.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,10 @@ call_command_or_warning fetch_esb_public_key ${FETCH_ESB_PUBLIC_KEY_ARGS}
2424
title "releasing"
2525
call_definition_command_or_exit create_version_and_release_apigw "${definition_file}" ${CREATE_VERSION_AND_RELEASE_APIGW_ARGS:-"--generate-sdks"}
2626

27+
28+
if [[ "${ENABLE_SYNC_MCP_SERVERS}" = "true" ]]; then
29+
title "syncing stage MCP Servers"
30+
call_definition_command_or_exit sync_apigw_stage_mcp_servers "${definition_file}"
31+
fi
32+
2733
log_info "done"

sdks/apigw-manager/docs/sync-apigateway-with-django.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ python manage.py sync_resource_docs_by_archive --gateway-name=${gateway_name} --
4646
# 指定参数 --no-pub 则只生成版本,不发布
4747
python manage.py create_version_and_release_apigw --gateway-name=${gateway_name} --file="${definition_file}"
4848

49+
# 可选:需要同步 MCP Server 时调用。注意:前提是该 stage 有生效的版本且声明的 mcp tool 在生效版本的资源列表里且确认过请求参数
50+
python manage.py sync_apigw_stage_mcp_servers --gateway-name=${gateway_name} --file="${definition_file}"
51+
4952
# 可选,为应用主动授权
5053
python manage.py grant_apigw_permissions --gateway-name=${gateway_name} --file="${definition_file}"
5154

@@ -80,6 +83,7 @@ class Command(BaseCommand):
8083
call_command("sync_apigw_resources", f"--gateway-name={gateway_name}", "--delete", f"--file={resources_path}")
8184
call_command("sync_resource_docs_by_archive", f"--gateway-name={gateway_name}", f"--file={definition_path}")
8285
call_command("create_version_and_release_apigw", f"--gateway-name={gateway_name}", f"--file={definition_path}")
86+
call_command("sync_apigw_stage_mcp_servers", f"--gateway-name={gateway_name}", f"--file={definition_path}")
8387
call_command("grant_apigw_permissions", f"--gateway-name={gateway_name}", f"--file={definition_path}")
8488
call_command("fetch_apigw_public_key", f"--gateway-name={gateway_name}")
8589
```
@@ -162,6 +166,9 @@ python manage.py apply_apigw_permissions --gateway-name=${gateway_name} --file="
162166
# 指定参数 --no-pub 则只生成版本,不发布
163167
python manage.py create_version_and_release_apigw --gateway-name=${gateway_name} --file="${definition_file}"
164168

169+
# 可选:需要同步 MCP Server 时调用。注意:前提是该 stage 有生效的版本且声明的 mcp tool 在生效版本的资源列表里且确认过请求参数
170+
python manage.py sync_apigw_stage_mcp_servers --gateway-name=${gateway_name} --file="${definition_file}"
171+
165172
# 获取网关公钥
166173
python manage.py fetch_apigw_public_key --gateway-name=${gateway_name}
167174

sdks/apigw-manager/docs/sync-apigateway-with-docker.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
- `SYNC_APIGW_RESOURCES_ARGS`: 默认值:"--delete",用于命令 `sync_apigw_resources`,同步网关资源
3333
- `SYNC_RESOURCE_DOCS_BY_ARCHIVE_ARGS`: 默认值: "--safe-mode",用于命令 `sync_resource_docs_by_archive`,同步网关文档
3434
- `CREATE_VERSION_AND_RELEASE_APIGW_ARGS`: 默认值:"--generate-sdks",用于命令 `create_version_and_release_apigw`,创建资源版本并发布
35+
- `ENABLE_SYNC_MCP_SERVERS`: 用于命令 `sync_apigw_stage_mcp_servers`, 是否开启同步环境 MCP Server
3536

3637
基础镜像提供了一些自定义同步脚本常用的 bash 函数,以及执行 Django Command 指令的辅助脚本:
3738

sdks/apigw-manager/docs/sync_apigateway.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,22 @@ stages:
100100
hosts:
101101
- host: "http://httpbin.org"
102102
weight: 100
103+
# 同步 MCP Server 相关配置
104+
# mcp_servers:
105+
# - name: "mcp_server1",
106+
# description: "mcp-server demo"
107+
# labels:
108+
# - "test"
109+
# # 添加的tool对应的资源名称
110+
# resource_names:
111+
# - resource1
112+
# # 是否公开
113+
# is_public: true
114+
# # 1: 开启,0: 停止; 默认是开启
115+
# status: 1
116+
# # 授权的应用
117+
# target_app_codes:
118+
# - "bk_app_code1"
103119
```
104120

105121
> 📢 注意:如果之前接入过的,建议将 spec_version 改成 2,并将原先 `stage:{}`改成 `stages: []`
@@ -164,6 +180,22 @@ stages:
164180
hosts:
165181
- host: ""
166182
weight: 100
183+
# 同步 MCP Server 相关配置
184+
# mcp_servers:
185+
# - name: "mcp_server1"
186+
# description: "mcp-server demo"
187+
# labels:
188+
# - "test"
189+
# # 添加的tool对应的资源名称
190+
# resource_names:
191+
# - resource1
192+
# # 是否公开
193+
# is_public: true
194+
# # 1: 开启,0: 停止;默认是开启
195+
# status: 1
196+
# # 授权的应用
197+
# target_app_codes:
198+
# - "bk_app_code1"
167199

168200
# 环境插件配置
169201
# plugin_configs:
@@ -251,6 +283,7 @@ x-bk-apigateway-resource:
251283
isPublic: true # 是否公开,公开,则用户可查看资源文档、申请资源权限;不公开,则资源对用户隐藏
252284
allowApplyPermission: false # 是否允许用户申请资源权限,允许,则任何蓝鲸应用可在蓝鲸开发者中心申请资源的访问权限;否则,只能通过网关管理员主动授权为某应用添加权限
253285
matchSubpath: false # 匹配所有子路径
286+
noneSchema: true # 是否有请求参数:对于需要添加的 MCP Server 的资源如果没有请求参数(body,path,header,query)一定要显示配置才行
254287
backend:
255288
type: HTTP
256289
method: get

sdks/apigw-manager/examples/chart/use-configmap/files/support-files/bin/sync-apigateway.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,9 @@ title "releasing"
3030
# 指定参数 --no-pub 则只生成版本,不发布
3131
call_definition_command_or_exit create_version_and_release_apigw "${definition_file}" --gateway-name=${gateway_name}
3232

33-
title "done"
33+
if [[ "${ENABLE_SYNC_MCP_SERVERS}" = "true" ]]; then
34+
title "syncing stage MCP Servers"
35+
call_definition_command_or_exit sync_apigw_stage_mcp_servers "${definition_file}"
36+
fi
37+
38+
log_info "done"

sdks/apigw-manager/examples/chart/use-custom-docker-image/my-apigw-manager/support-files/bin/sync-apigateway.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,10 @@ title "releasing"
3131
call_definition_command_or_exit create_version_and_release_apigw "${definition_file}" --gateway-name=${gateway_name}
3232

3333
title "done"
34+
35+
if [[ "${ENABLE_MCP_SERVER}" = "true" ]]; then
36+
title "syncing stage MCP Servers"
37+
call_definition_command_or_exit sync_apigw_stage_mcp_servers "${definition_file}"
38+
fi
39+
40+
log_info "done"

0 commit comments

Comments
 (0)