registry/mcp_model.go (116 lines of code) (raw):

// Copyright (c) 2022 Alibaba Group Holding Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package registry const ( JsonGoTemplateType = "json-go-template" IstioMcpAutoGeneratedPrefix = "istio-autogenerated-mcp" IstioMcpAutoGeneratedVsName = IstioMcpAutoGeneratedPrefix + "-vs" IstioMcpAutoGeneratedSeName = IstioMcpAutoGeneratedPrefix + "-se" IstioMcpAutoGeneratedDrName = IstioMcpAutoGeneratedPrefix + "-dr" IstioMcpAutoGeneratedHttpRouteName = IstioMcpAutoGeneratedPrefix + "-httproute" DefaultMcpToolsGroup = "mcp-tools" DefaultMcpCredentialsGroup = "credentials" DefaultNacosServiceNamespace = "public" StdioProtocol = "stdio" HttpProtocol = "http" DubboProtocol = "dubbo" McpSSEProtocol = "mcp-sse" McpStreambleProtocol = "mcp-streamble" ) type McpToolArgsType string // WasmPluginConfig Struct for mcp tool wasm plugin marshal type WasmPluginConfig struct { Rules []*McpServerRule `json:"_rules_"` } type McpServerRule struct { MatchRoute []string `json:"_match_route_,omitempty"` Server *ServerConfig `json:"server"` Tools []*McpTool `json:"tools"` } type ServerConfig struct { Name string `json:"name,omitempty"` Config map[string]interface{} `json:"config,omitempty"` AllowTools []string `json:"allowTools,omitempty"` } type McpTool struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Args []*ToolArgs `json:"args,omitempty"` RequestTemplate *RequestTemplate `json:"requestTemplate"` ResponseTemplate *ResponseTemplate `json:"responseTemplate"` } type ToolArgs struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Type string `json:"type,omitempty"` Required bool `json:"required,omitempty"` Default interface{} `json:"default,omitempty"` Enum []interface{} `json:"enum,omitempty"` Items interface{} `json:"items,omitempty"` Properties interface{} `json:"properties,omitempty"` Position string `json:"position,omitempty"` } type RequestTemplate struct { URL string `json:"url"` Method string `json:"method"` Headers []*RequestTemplateHeaders `json:"headers,omitempty"` Body string `json:"body,omitempty"` ArgsToJsonBody bool `json:"argsToJsonBody,omitempty"` ArgsToUrlParam bool `json:"argsToUrlParam,omitempty"` ArgsToFormBody bool `json:"argsToFormBody,omitempty"` } type RequestTemplateHeaders struct { Key string `json:"key"` Value string `json:"value"` } type ResponseTemplate struct { Body string `json:"body,omitempty"` PrependBody string `json:"prependBody,omitempty"` AppendBody string `json:"appendBody,omitempty"` } // McpServer Struct for mcp server json unmarshal type McpServer struct { Protocol string `json:"protocol,omitempty"` Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Version string `json:"version,omitempty"` Enabled bool `json:"enabled,omitempty"` RemoteServerConfig *RemoteServerConfig `json:"remoteServerConfig,omitempty"` Credentials map[string]*CredentialRef `json:"credentials,omitempty"` ToolsDescriptionRef string `json:"toolsDescriptionRef,omitempty"` PromptDescriptionRef string `json:"promptDescriptionRef,omitempty"` ResourceDescriptionRef string `json:"resourceDescriptionRef,omitempty"` } type RemoteServerConfig struct { ServiceRef *ServiceRef `json:"serviceRef,omitempty"` ExportPath string `json:"exportPath,omitempty"` BackendProtocol string `json:"backendProtocol,omitempty"` } type CredentialRef struct { Ref string `json:"ref,omitempty"` } type ServiceRef struct { NamespaceId string `json:"namespaceId,omitempty"` GroupName string `json:"groupName,omitempty"` ServiceName string `json:"serviceName,omitempty"` } // McpToolConfig Struct for mcp tool json unmarshal type McpToolConfig struct { Tools []*ToolDescription `json:"tools,omitempty"` ToolsMeta map[string]*ToolsMeta `json:"toolsMeta,omitempty"` } type ToolDescription struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` InputSchema InputSchema `json:"inputSchema"` } type InputSchema struct { Type string `json:"type,omitempty"` Properties map[string]interface{} `json:"properties,omitempty"` Required []string `json:"required,omitempty"` } type ToolsMeta struct { InvokeContext map[string]string `json:"InvokeContext,omitempty"` Enabled bool `json:"Enabled,omitempty"` Templates map[string]interface{} `json:"Templates,omitempty"` } type JsonGoTemplate struct { RequestTemplate RequestTemplate `json:"requestTemplate"` ResponseTemplate ResponseTemplate `json:"responseTemplate"` ArgsPosition map[string]string `json:"argsPosition,omitempty"` }