Documentation
¶
Index ¶
Constants ¶
View Source
const (
CreateWebsite = "create_website"
)
View Source
const (
ListWebsites = "list_websites"
)
Variables ¶
View Source
var CreateWebsiteTool = mcp.NewServerTool[CreateWebsiteInput, any]( CreateWebsite, "create website", func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[CreateWebsiteInput]) (*mcp.CallToolResultFor[any], error) { input := params.Arguments if input.Domain == "" { err := errors.New("domain is required") return &mcp.CallToolResult{ Content: []mcp.Content{&mcp.TextContent{Text: err.Error()}}, IsError: true, }, err } domain := input.Domain alias := domain var proxyAddress string if input.WebsiteType == "proxy" { if input.ProxyAddress == "" { err := errors.New("proxy_address is required") return &mcp.CallToolResult{ Content: []mcp.Content{&mcp.TextContent{Text: err.Error()}}, IsError: true, }, err } proxyAddress = input.ProxyAddress } groupReq := &types.GroupRequest{ Type: "website", } groupRes := &types.GroupRes{} result, err := utils.NewPanelClient("POST", "/groups/search", utils.WithPayload(groupReq)).Request(groupRes) if err != nil { return result, err } var groupID uint for _, group := range groupRes.Data { if group.IsDefault { groupID = group.ID break } } req := &types.CreateWebsiteRequest{ Domains: []types.WebsiteDomain{ { Domain: domain, Port: 80, SSL: false, }, }, Alias: alias, Type: input.WebsiteType, WebsiteGroupID: groupID, Proxy: proxyAddress, AppType: "new", } res := &types.Response{} result, err = utils.NewPanelClient("POST", "/websites", utils.WithPayload(req)).Request(res) if result != nil { result.StructuredContent = res } return result, err }, )
View Source
var ListWebsitesTool = mcp.NewServerTool[ListWebsitesInput, any]( ListWebsites, "list websites", func(ctx context.Context, _ *mcp.ServerSession, params *mcp.CallToolParamsFor[ListWebsitesInput]) (*mcp.CallToolResultFor[any], error) { input := params.Arguments req := &types.ListWebsiteRequest{ Order: "null", OrderBy: "created_at", PageRequest: types.PageRequest{ Page: 1, PageSize: 500, Name: input.Name, }, } client := utils.NewPanelClient("POST", "/websites/search", utils.WithPayload(req)) listWebsiteRes := &types.ListWebsiteRes{} result, err := client.Request(listWebsiteRes) if result != nil { result.StructuredContent = listWebsiteRes } return result, err }, )
Functions ¶
This section is empty.
Types ¶
type CreateWebsiteInput ¶ added in v0.2.0
type CreateWebsiteInput struct {
Domain string `json:"domain" jsonschema:"domain,required"`
WebsiteType string `json:"website_type" jsonschema:"website type,only support static and proxy,required"`
ProxyAddress string `json:"proxy_address,omitempty" jsonschema:"proxy address,only support for proxy website"`
}
type ListWebsitesInput ¶ added in v0.2.0
type ListWebsitesInput struct {
Name string `json:"name,omitempty" jsonschema:"search by website name"`
}
Click to show internal directories.
Click to hide internal directories.