Skip to main content
Glama

mcp-1panel

Official
by 1Panel-dev
install_mysql.go2.61 kB
package app import ( "context" "errors" "fmt" "strings" "github.com/modelcontextprotocol/go-sdk/mcp" "github.com/1Panel-dev/mcp-1panel/operations/types" "github.com/1Panel-dev/mcp-1panel/utils" ) const ( InstallMySQL = "install_mysql" ) 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 }, ) 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"` }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1Panel-dev/mcp-1panel'

If you have feedback or need assistance with the MCP directory API, please join our Discord server