智能连接

简要概述

面向 AI 的连接配置(AI Connector)。一期提供 MCP Server 能力:把既有 gRPC 服务的方法暴露为 MCP(Model Context Protocol)Tools,供支持 MCP 的客户端调用。当前源码未提供 LLM Client 配置,不能将未来能力当作已实现。

配置示例

# AI 连接器配置(MCP Server)
aiconnector:
  enable: false
  mcp_server:
    enable: false
    path: /mcp
    transport: streamable_http
    # AutoBridge 仅暴露 openapiv2.yaml 中 tags 命中此白名单的 gRPC 方法为 MCP tool(OR 语义)
    # 默认值 ["mcp"]:仅暴露标注了 tags: [..., "mcp"] 的方法(最小暴露原则)
    # 如需暴露其他 tag 的方法,需在此显式追加,例如 ["mcp", "chat"]
    # 未设 tags 或未命中白名单的方法不会被暴露
    allowed_tags:
      - mcp

数据结构

// AIConnectorConfig 智能连接配置
type AIConnectorConfig struct {
    Enable    bool            `mapstructure:"enable"`
    MCPServer MCPServerConfig `mapstructure:"mcp_server"`
}

// MCPServerConfig MCP 服务端配置
type MCPServerConfig struct {
    Enable      bool     `mapstructure:"enable"`
    Path        string   `mapstructure:"path"`
    Transport   string   `mapstructure:"transport"`
    AllowedTags []string `mapstructure:"allowed_tags"`
}

配置参数

名称类型默认值说明
enableboolfalse顶层配置字段;当前 MCP 注册不检查此字段
mcp_server.enableboolfalseMCP Server 开关
mcp_server.pathstring/mcpMCP 端点挂载路径(HTTP 服务上)
mcp_server.transportstringstreamable_http传输协议,可选 streamable_http、sse
mcp_server.allowed_tags[]string[“mcp”]AutoBridge 暴露方法的 tag 白名单

暴露规则

allowed_tags 控制 AutoBridge 的暴露面,匹配为 OR 语义:openapiv2.yaml 中某方法声明的 tags 只要有一个值命中白名单,该方法即被包装为 MCP tool。

  • 默认仅暴露显式标注 tags: [..., "mcp"] 的方法(最小暴露原则);
  • 未声明 tags 或未命中白名单的方法不会被暴露;
  • 需要扩大暴露面时显式追加,例如 ["mcp", "chat"]。

自定义原生 MCP 资源

业务项目可通过 LocalConfig.MCPServerInstance() 获取 MCP Server,注册自定义 原生资源(Tools / Resources / Prompts)。自定义资源不受 allowed_tags 过滤,与 AutoBridge Tool 共存于同一 Server。注册入口在业务侧 handler/private.go 的 privateMCPHandle() 扩展点。

认证

MCP 入口认证调用 security.VerifyHTTPRequest。AutoBridge 将 Authorization Header 传入 Gateway,由后续 RPC 执行权限策略;原生工具需自行实现业务授权,不能仅凭入口认证认定已执行 RPC OPA 策略。

应用场景

最小启用

aiconnector:
  enable: true
  mcp_server:
    enable: true

使用全部默认值:端点 http://<http_address>/mcp,streamable_http 传输, 仅暴露标注 mcp tag 的方法。

生效条件

当前注册逻辑只检查 mcp_server.enable,顶层 enable: false 不能保证关闭 MCP;停用时明确设置 mcp_server.enable: false。自动桥接依赖 Admin 提供的 Gateway/OpenAPI 元数据;Admin 关闭会跳过桥接,但原生资源仍可用。详见MCP 接入实践。