Documentation
¶
Index ¶
Constants ¶
View Source
const (
InstallMySQL = "install_mysql"
)
View Source
const (
InstallOpenResty = "install_openresty"
)
View Source
const (
ListInstalledApps = "list_installed_apps"
)
Variables ¶
View Source
var InstallMySQLTool = mcp.NewServerTool[InstallMySQLInput, any]( InstallMySQL, "install mysql, if not set name, default is mysql, if not set version, default is '', if not set root_password, default is '')", func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[InstallMySQLInput]) (*mcp.CallToolResultFor[any], error) { input := params.Arguments name := input.Name if name == "" { name = "mysql" } version := input.Version if version == "latest" { version = "" } appRes := &types.AppRes{} result, err := utils.NewPanelClient("GET", "/apps/mysql").Request(appRes) if err != nil { return result, err } exist := false for _, v := range appRes.Data.Versions { if v == version || strings.Contains(v, version) { version = v exist = true break } } if !exist { err := errors.New("version not found") return &mcp.CallToolResult{ Content: []mcp.Content{ &mcp.TextContent{Text: err.Error()}, }, IsError: true, }, err } if version == "" { version = appRes.Data.Versions[0] } appID := appRes.Data.ID appDetailURL := fmt.Sprintf("/apps/detail/%d/%s/app", appID, version) appDetailRes := &types.AppDetailRes{} result, err = utils.NewPanelClient("GET", appDetailURL).Request(appDetailRes) if err != nil { return result, err } appDetailID := appDetailRes.Data.ID port := input.Port if port == 0 { port = 3306 } rootPassword := input.RootPassword if rootPassword == "" { rootPassword = fmt.Sprintf("mysql_%s", utils.GetRandomStr(6)) } req := &types.AppInstallCreate{ AppDetailID: appDetailID, Name: name, Params: map[string]interface{}{ "PANEL_APP_PORT_HTTP": port, "PANEL_DB_ROOT_PASSWORD": rootPassword, }, } res := &types.Response{} result, err = utils.NewPanelClient("POST", "/apps/install", utils.WithPayload(req)).Request(res) if result != nil { result.StructuredContent = res } return result, err }, )
View Source
var InstallOpenRestyTool = mcp.NewServerTool[InstallOpenRestyInput, any]( InstallOpenResty, "install openresty, if not set name, default is openresty, if not set http_port, default is 80, if not set https_port, default is 443", func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[InstallOpenRestyInput]) (*mcp.CallToolResultFor[any], error) { input := params.Arguments name := input.Name if name == "" { name = "openresty" } httpPort := input.HttpPort if httpPort == 0 { httpPort = 80 } httpsPort := input.HttpsPort if httpsPort == 0 { httpsPort = 443 } appRes := &types.AppRes{} result, err := utils.NewPanelClient("GET", "/apps/openresty").Request(appRes) if err != nil { return result, err } version := appRes.Data.Versions[0] appID := appRes.Data.ID appDetailURL := fmt.Sprintf("/apps/detail/%d/%s/app", appID, version) appDetailRes := &types.AppDetailRes{} result, err = utils.NewPanelClient("GET", appDetailURL).Request(appDetailRes) if err != nil { return result, err } appDetailID := appDetailRes.Data.ID req := &types.AppInstallCreate{ AppDetailID: appDetailID, Name: name, Params: map[string]interface{}{ "PANEL_APP_PORT_HTTP": httpPort, "PANEL_APP_PORT_HTTPS": httpsPort, }, } res := &types.Response{} result, err = utils.NewPanelClient("POST", "/apps/install", utils.WithPayload(req)).Request(res) if result != nil { result.StructuredContent = res } return result, err }, )
View Source
var ListInstalledAppsTool = mcp.NewServerTool[ListInstalledAppsInput, any]( ListInstalledApps, "list installed apps", func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[ListInstalledAppsInput]) (*mcp.CallToolResultFor[any], error) { req := &types.PageRequest{ Page: 1, PageSize: 500, } appListRes := &types.AppInstalledListResponse{} result, err := utils.NewPanelClient("POST", "/apps/installed/search", utils.WithPayload(req)).Request(appListRes) if result != nil { result.StructuredContent = appListRes } return result, err }, )
Functions ¶
This section is empty.
Types ¶
type InstallMySQLInput ¶ added in v0.2.0
type InstallMySQLInput struct {
Name string `json:"name" jsonschema:"mysql name"`
Version string `json:"version,omitempty" jsonschema:"mysql version, not support latest version"`
RootPassword string `json:"root_password,omitempty" jsonschema:"mysql root password"`
Port float64 `json:"port,omitempty" jsonschema:"mysql port"`
}
type InstallOpenRestyInput ¶ added in v0.2.0
type ListInstalledAppsInput ¶ added in v0.2.0
type ListInstalledAppsInput struct {
}
Click to show internal directories.
Click to hide internal directories.