Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions dbm-ui/backend/dbm_aiagent/mcp_tools/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ class DBMMcpTools(StrStructuredEnum):
REDIS_QUERY_ALARM = EnumField("redis-query-alarm", "redis-query-alarm")
REDIS_BILL = EnumField("redis-bill", "redis-bill")
REDIS_JOB = EnumField("redis-job", "redis-job")
MONGODB_META = EnumField("mongodb-meta", "mongodb-meta")
MONGODB_METRICS = EnumField("mongodb-metrics", "mongodb-metrics")
MONGODB_LOG = EnumField("mongodb-log", "mongodb-log")
MONGODB_ALARM = EnumField("mongodb-alarm", "mongodb-alarm")
KAFKA_QUERY_META = EnumField("kafka-query-meta", "kafka-query-meta")
KAFKA_BILL = EnumField("kafka-bill", "kafka-bill")

Expand Down
13 changes: 9 additions & 4 deletions dbm-ui/backend/dbm_aiagent/mcp_tools/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ def mcp_tools_api_decorator(
match_subpath: bool = False,
user_verified_required: bool = False,
app_verified_required: bool = True,
none_schema: bool = False,
):
"""
MCP 工具 API 装饰器
Expand All @@ -96,6 +97,7 @@ def mcp_tools_api_decorator(
@params match_subpath: 匹配所有子路径
@params user_verified_required: 是否校验用户身份(考虑 mcp 也有后台调用,默认都已应用态接口开放)
@params app_verified_required: 是否校验应用身份
@params none_schema: 无请求体时设为 True,供 generate_resources_yaml 的 MCP 校验通过
@returns 装饰器函数
"""

Expand All @@ -115,8 +117,10 @@ def decorator(func: Callable) -> Callable:
for mcp_tool in mcp or []:
MCP_TOOLS_REGISTRY[mcp_tool].append(operation_id)

# 自动添加 mcp-tools tag
tags.append("mcp-tools")
# 自动添加 mcp-tools tag(使用副本避免共用 _META_DECORATOR 的视图重复 append 导致 YAML 中 tags 重复)
tags_final = list(tags) if tags else []
if "mcp-tools" not in tags_final:
tags_final.append("mcp-tools")
# 创建 extend_schema 装饰器
schema_decorator = extend_schema(
operation_id=operation_id,
Expand All @@ -125,10 +129,11 @@ def decorator(func: Callable) -> Callable:
request=request_slz,
responses={200: response_slz} if response_slz else None,
methods=methods,
tags=tags,
tags=tags_final,
exclude=False,
extensions=gen_apigateway_resource_config(
enable_mcp=True, # 固定为 True
none_schema=none_schema,
is_public=is_public,
allow_apply_permission=allow_apply_permission,
user_verified_required=user_verified_required,
Expand All @@ -137,7 +142,7 @@ def decorator(func: Callable) -> Callable:
description_en=description,
match_subpath=match_subpath,
plugin_configs=[
build_bk_header_rewrite(set={"X-Bkdbm-Mcp-Tag": ",".join(tags)}, remove=[]),
build_bk_header_rewrite(set={"X-Bkdbm-Mcp-Tag": ",".join(tags_final)}, remove=[]),
],
),
)
Expand Down
Empty file.
Empty file.
Loading