controller

package
v0.0.0-...-f8d2ca8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 23, 2025 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ToolCacheKey = "tool:%s:%d" // mcp_id:updated_at
)

Variables

This section is empty.

Functions

func CacheGetTools

func CacheGetTools(mcpID string, updatedAt int64) ([]mcp.Tool, bool)

func CacheSetTools

func CacheSetTools(mcpID string, updatedAt int64, tools []mcp.Tool) error

func CreateGroupMCP

func CreateGroupMCP(c *gin.Context)

CreateGroupMCP godoc

@Summary		Create Group MCP
@Description	Create a new Group MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string			true	"Group ID"
@Param			mcp		body		model.GroupMCP	true	"Group MCP object"
@Success		200		{object}	middleware.APIResponse{data=GroupMCPResponse}
@Router			/api/mcp/group/{group} [post]

func CreatePublicMCP

func CreatePublicMCP(c *gin.Context)

CreatePublicMCP godoc

@Summary		Create MCP
@Description	Create a new MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			mcp	body		model.PublicMCP	true	"MCP object"
@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
@Router			/api/mcp/public/ [post]

func DeleteGroupMCP

func DeleteGroupMCP(c *gin.Context)

DeleteGroupMCP godoc

@Summary		Delete Group MCP
@Description	Delete a Group MCP by ID and Group ID
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string	true	"MCP ID"
@Param			group	path		string	true	"Group ID"
@Success		200		{object}	middleware.APIResponse
@Router			/api/mcp/group/{group}/{id} [delete]

func DeletePublicMCP

func DeletePublicMCP(c *gin.Context)

DeletePublicMCP godoc

@Summary		Delete MCP
@Description	Delete an MCP by ID
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		string	true	"MCP ID"
@Success		200	{object}	middleware.APIResponse
@Router			/api/mcp/public/{id} [delete]

func GetAllGroupMCPs

func GetAllGroupMCPs(c *gin.Context)

GetAllGroupMCPs godoc

@Summary		Get all Group MCPs
@Description	Get all Group MCPs with filtering
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			status	query		int	false	"MCP status"
@Success		200		{object}	middleware.APIResponse{data=[]GroupMCPResponse}
@Router			/api/mcp/group/all [get]

func GetAllPublicMCPs

func GetAllPublicMCPs(c *gin.Context)

GetAllPublicMCPs godoc

@Summary		Get all MCPs
@Description	Get all MCPs with filtering
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			status	query		int	false	"MCP status"
@Success		200		{object}	middleware.APIResponse{data=[]PublicMCPResponse}
@Router			/api/mcp/publics/all [get]

func GetEmbedConfig

func GetEmbedConfig(
	ct mcpservers.ConfigTemplates,
	initConfig map[string]string,
) (*model.MCPEmbeddingConfig, error)

func GetEmbedMCPs

func GetEmbedMCPs(c *gin.Context)

GetEmbedMCPs godoc

@Summary		Get embed mcp
@Description	Get embed mcp
@Tags			embedmcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Success		200	{array}	EmbedMCP
@Router			/api/embedmcp/ [get]

func GetGroupMCPByID

func GetGroupMCPByID(c *gin.Context)

GetGroupMCPByID godoc

@Summary		Get Group MCP by ID
@Description	Get a specific Group MCP by its ID and Group ID
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string	true	"MCP ID"
@Param			group	path		string	true	"Group ID"
@Success		200		{object}	middleware.APIResponse{data=GroupMCPResponse}
@Router			/api/mcp/group/{group}/{id} [get]

func GetGroupMCPs

func GetGroupMCPs(c *gin.Context)

GetGroupMCPs godoc

@Summary		Get Group MCPs
@Description	Get a list of Group MCPs with pagination and filtering
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			group		path		string	true	"Group ID"
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			id			query		string	false	"MCP id"
@Param			type		query		string	false	"MCP type, mcp_proxy_sse, mcp_proxy_streamable, mcp_openapi"
@Param			keyword		query		string	false	"Search keyword"
@Param			status		query		int		false	"MCP status"
@Success		200			{object}	middleware.APIResponse{data=[]GroupMCPResponse}
@Router			/api/mcp/group/{group} [get]

func GetGroupPublicMCPByID

func GetGroupPublicMCPByID(c *gin.Context)

GetGroupPublicMCPByID godoc

@Summary		Get MCP by ID
@Description	Get a specific MCP by its ID
@Tags			mcp
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group	path		string	true	"Group ID"
@Param			id		path		string	true	"MCP ID"
@Success		200		{object}	middleware.APIResponse{data=GroupPublicMCPDetailResponse}
@Router			/api/group/{group}/mcp/{id} [get]

func GetGroupPublicMCPReusingParam

func GetGroupPublicMCPReusingParam(c *gin.Context)

GetGroupPublicMCPReusingParam godoc

@Summary		Get group MCP reusing parameters
@Description	Get reusing parameters for a specific group and MCP
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string	true	"MCP ID"
@Param			group	path		string	true	"Group ID"
@Success		200		{object}	middleware.APIResponse{data=model.PublicMCPReusingParam}
@Router			/api/mcp/public/{id}/group/{group}/params [get]

func GetGroupPublicMCPs

func GetGroupPublicMCPs(c *gin.Context)

GetGroupPublicMCPs godoc

@Summary		Get MCPs by group
@Description	Get MCPs by group
@Tags			mcp
@Tags			group
@Produce		json
@Security		ApiKeyAuth
@Param			group		path		string	true	"Group ID"
@Param			page		query		int		false	"Page"
@Param			per_page	query		int		false	"Per Page"
@Param			id			query		string	false	"MCP ID"
@Param			type		query		string	false	"hosted or local"
@Param			keyword		query		string	false	"Keyword"
@Success		200			{object}	middleware.APIResponse{data=[]GroupPublicMCPResponse}
@Router			/api/group/{group}/mcp [get]

func GetProxyConfig

func GetProxyConfig(
	proxyConfigType mcpservers.ProxyConfigTemplates,
	initConfig map[string]string,
) (*model.PublicMCPProxyConfig, error)

func GetPublicMCPByID

func GetPublicMCPByID(c *gin.Context)

GetPublicMCPByID godoc

@Summary		Get MCP by ID
@Description	Get a specific MCP by its ID
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		string	true	"MCP ID"
@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
@Router			/api/mcp/public/{id} [get]

func GetPublicMCPs

func GetPublicMCPs(c *gin.Context)

GetPublicMCPs godoc

@Summary		Get MCPs
@Description	Get a list of MCPs with pagination and filtering
@Tags			mcp
@Produce		json
@Security		ApiKeyAuth
@Param			page		query		int		false	"Page number"
@Param			per_page	query		int		false	"Items per page"
@Param			type		query		string	false	"hosted or local"
@Param			id			query		string	false	"MCP id"
@Param			keyword		query		string	false	"Search keyword"
@Param			status		query		int		false	"MCP status"
@Success		200			{object}	middleware.APIResponse{data=[]PublicMCPResponse}
@Router			/api/mcp/publics/ [get]

func GroupMCPSSEServer

func GroupMCPSSEServer(c *gin.Context)

GroupMCPSSEServer godoc

@Summary	Group MCP SSE Server
@Security	ApiKeyAuth
@Router		/mcp/group/{id}/sse [get]

func GroupMCPStreamable

func GroupMCPStreamable(c *gin.Context)

GroupMCPStreamable godoc

@Summary	Group MCP Streamable Server
@Security	ApiKeyAuth
@Router		/mcp/group/{id} [get]
@Router		/mcp/group/{id} [post]
@Router		/mcp/group/{id} [delete]

func HostMCPSSEServer

func HostMCPSSEServer(c *gin.Context)

HostMCPSSEServer godoc

@Summary	Public MCP SSE Server
@Security	ApiKeyAuth
@Router		/sse [get]

func HostMCPStreamable

func HostMCPStreamable(c *gin.Context)

HostMCPStreamable godoc

@Summary	Host MCP Streamable Server
@Security	ApiKeyAuth
@Router		/mcp [get]
@Router		/mcp [post]
@Router		/mcp [delete]

func IsHostedMCP

func IsHostedMCP(t model.PublicMCPType) bool

func MCPMessage

func MCPMessage(c *gin.Context)

MCPMessage godoc

@Summary	MCP SSE Message
@Router		/message [post]

func PublicMCPSSEServer

func PublicMCPSSEServer(c *gin.Context)

PublicMCPSSEServer godoc

@Summary	Public MCP SSE Server
@Security	ApiKeyAuth
@Router		/mcp/public/{id}/sse [get]

func PublicMCPStreamable

func PublicMCPStreamable(c *gin.Context)

PublicMCPStreamable godoc

@Summary	Public MCP Streamable Server
@Security	ApiKeyAuth
@Router		/mcp/public/{id} [get]
@Router		/mcp/public/{id} [post]
@Router		/mcp/public/{id} [delete]

func SaveEmbedMCP

func SaveEmbedMCP(c *gin.Context)

SaveEmbedMCP godoc

@Summary		Save embed mcp
@Description	Save embed mcp
@Tags			embedmcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			body	body		SaveEmbedMCPRequest	true	"Save embed mcp request"
@Success		200		{object}	nil
@Router			/api/embedmcp/ [post]

func SaveGroupPublicMCPReusingParam

func SaveGroupPublicMCPReusingParam(c *gin.Context)

SaveGroupPublicMCPReusingParam godoc

@Summary		Create or update group MCP reusing parameters
@Description	Create or update reusing parameters for a specific group and MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string						true	"MCP ID"
@Param			group	path		string						true	"Group ID"
@Param			params	body		model.PublicMCPReusingParam	true	"Reusing parameters"
@Success		200		{object}	middleware.APIResponse
@Router			/api/mcp/public/{id}/group/{group}/params [post]

func SavePublicMCP

func SavePublicMCP(c *gin.Context)

SavePublicMCP godoc

@Summary		Save MCP
@Description	Save a MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		string			true	"MCP ID"
@Param			mcp	body		model.PublicMCP	true	"MCP object"
@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
@Router			/api/mcp/public/{id} [put]

func SavePublicMCPs

func SavePublicMCPs(c *gin.Context)

SavePublicMCPs godoc

@Summary		Save MCPs
@Description	Save a list of MCPs
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			mcp	body		[]model.PublicMCP	true	"MCP object"
@Success		200	{object}	middleware.APIResponse
@Router			/api/mcp/publics/ [post]

func TestEmbedMCPSseServer

func TestEmbedMCPSseServer(c *gin.Context)

TestEmbedMCPSseServer godoc

@Summary		Test Embed MCP SSE Server
@Description	Test Embed MCP SSE Server
@Tags			embedmcp
@Security		ApiKeyAuth
@Param			id				path		string	true	"MCP ID"
@Param			config[key]		query		string	false	"Initial configuration parameters (e.g. config[host]=http://localhost:3000)"
@Param			reusing[key]	query		string	false	"Reusing configuration parameters (e.g. reusing[authorization]=apikey)"
@Success		200				{object}	nil
@Failure		400				{object}	nil
@Router			/api/test-embedmcp/{id}/sse [get]

func TestEmbedMCPStreamable

func TestEmbedMCPStreamable(c *gin.Context)

TestEmbedMCPStreamable godoc

@Summary		Test Embed MCP Streamable Server
@Description	Test Embed MCP Streamable Server with various HTTP methods
@Tags			embedmcp
@Security		ApiKeyAuth
@Param			id				path	string	true	"MCP ID"
@Param			config[key]		query	string	false	"Initial configuration parameters (e.g. config[host]=http://localhost:3000)"
@Param			reusing[key]	query	string	false	"Reusing configuration parameters (e.g., reusing[authorization]=apikey)"
@Accept			json
@Produce		json
@Success		200	{object}	nil
@Failure		400	{object}	nil
@Router			/api/test-embedmcp/{id} [get]
@Router			/api/test-embedmcp/{id} [post]
@Router			/api/test-embedmcp/{id} [delete]

func TestPublicMCPSSEServer

func TestPublicMCPSSEServer(c *gin.Context)

TestPublicMCPSSEServer godoc

@Summary	Test Public MCP SSE Server
@Security	ApiKeyAuth
@Param		group	path	string	true	"Group ID"
@Param		id		path	string	true	"MCP ID"
@Router		/api/test-publicmcp/{group}/{id}/sse [get]

func ToPublicMCP

func ToPublicMCP(
	e mcpservers.McpServer,
	initConfig map[string]string,
	enabled bool,
) (*model.PublicMCP, error)

func UpdateGroupMCP

func UpdateGroupMCP(c *gin.Context)

UpdateGroupMCP godoc

@Summary		Update Group MCP
@Description	Update an existing Group MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string			true	"MCP ID"
@Param			group	path		string			true	"Group ID"
@Param			mcp		body		model.GroupMCP	true	"Group MCP object"
@Success		200		{object}	middleware.APIResponse{data=GroupMCPResponse}
@Router			/api/mcp/group/{group}/{id} [put]

func UpdateGroupMCPStatus

func UpdateGroupMCPStatus(c *gin.Context)

UpdateGroupMCPStatus godoc

@Summary		Update Group MCP status
@Description	Update the status of a Group MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string						true	"MCP ID"
@Param			group	path		string						true	"Group ID"
@Param			status	body		UpdateGroupMCPStatusRequest	true	"MCP status"
@Success		200		{object}	middleware.APIResponse
@Router			/api/mcp/group/{group}/{id}/status [post]

func UpdatePublicMCP

func UpdatePublicMCP(c *gin.Context)

UpdatePublicMCP godoc

@Summary		Update MCP
@Description	Update an existing MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id	path		string			true	"MCP ID"
@Param			mcp	body		model.PublicMCP	true	"MCP object"
@Success		200	{object}	middleware.APIResponse{data=PublicMCPResponse}
@Router			/api/mcp/public/{id} [post]

func UpdatePublicMCPStatus

func UpdatePublicMCPStatus(c *gin.Context)

UpdatePublicMCPStatus godoc

@Summary		Update MCP status
@Description	Update the status of an MCP
@Tags			mcp
@Accept			json
@Produce		json
@Security		ApiKeyAuth
@Param			id		path		string							true	"MCP ID"
@Param			status	body		UpdatePublicMCPStatusRequest	true	"MCP status"
@Success		200		{object}	middleware.APIResponse
@Router			/api/mcp/public/{id}/status [post]

Types

type EmbedMCP

type EmbedMCP struct {
	ID              string                    `json:"id"`
	Enabled         bool                      `json:"enabled"`
	Name            string                    `json:"name"`
	NameCN          string                    `json:"name_cn"`
	Readme          string                    `json:"readme"`
	ReadmeURL       string                    `json:"readme_url"`
	ReadmeCN        string                    `json:"readme_cn"`
	ReadmeCNURL     string                    `json:"readme_cn_url"`
	GitHubURL       string                    `json:"github_url"`
	Tags            []string                  `json:"tags"`
	ConfigTemplates EmbedMCPConfigTemplates   `json:"config_templates"`
	EmbedConfig     *model.MCPEmbeddingConfig `json:"embed_config"`
}

type EmbedMCPConfigTemplate

type EmbedMCPConfigTemplate struct {
	Name        string `json:"name"`
	Required    bool   `json:"required"`
	Example     string `json:"example,omitempty"`
	Description string `json:"description,omitempty"`
}

type EmbedMCPConfigTemplates

type EmbedMCPConfigTemplates = map[string]EmbedMCPConfigTemplate

type EndpointProvider

type EndpointProvider interface {
	NewEndpoint(newSession string) (newEndpoint string)
	LoadEndpoint(endpoint string) (session string)
}

type GroupMCPResponse

type GroupMCPResponse struct {
	model.GroupMCP
	Endpoints MCPEndpoint `json:"endpoints"`
}

func NewGroupMCPResponse

func NewGroupMCPResponse(host string, mcp model.GroupMCP) GroupMCPResponse

func NewGroupMCPResponses

func NewGroupMCPResponses(host string, mcps []model.GroupMCP) []GroupMCPResponse

func (*GroupMCPResponse) MarshalJSON

func (mcp *GroupMCPResponse) MarshalJSON() ([]byte, error)

type GroupPublicMCPDetailResponse

type GroupPublicMCPDetailResponse struct {
	model.PublicMCP
	Hosted    bool                          `json:"hosted"`
	Endpoints MCPEndpoint                   `json:"endpoints"`
	Reusing   map[string]model.ReusingParam `json:"reusing"`
	Params    map[string]string             `json:"params"`
	Tools     []mcp.Tool                    `json:"tools"`
}

func NewGroupPublicMCPDetailResponse

func NewGroupPublicMCPDetailResponse(
	ctx *gin.Context,
	host string,
	mcp model.PublicMCP,
	groupID string,
) (GroupPublicMCPDetailResponse, error)

func (*GroupPublicMCPDetailResponse) MarshalJSON

func (r *GroupPublicMCPDetailResponse) MarshalJSON() ([]byte, error)

type GroupPublicMCPResponse

type GroupPublicMCPResponse struct {
	model.PublicMCP
	Hosted bool `json:"hosted"`
}

func NewGroupPublicMCPResponse

func NewGroupPublicMCPResponse(mcp model.PublicMCP) GroupPublicMCPResponse

func NewGroupPublicMCPResponses

func NewGroupPublicMCPResponses(mcps []model.PublicMCP) []GroupPublicMCPResponse

func (*GroupPublicMCPResponse) MarshalJSON

func (r *GroupPublicMCPResponse) MarshalJSON() ([]byte, error)

type MCPEndpoint

type MCPEndpoint struct {
	Host           string `json:"host"`
	SSE            string `json:"sse"`
	StreamableHTTP string `json:"streamable_http"`
}

func NewPublicMCPEndpoint

func NewPublicMCPEndpoint(host string, mcp model.PublicMCP) MCPEndpoint

type ParamsFunc

type ParamsFunc interface {
	GetParams() (map[string]string, error)
}

type PublicMCPResponse

type PublicMCPResponse struct {
	model.PublicMCP
	Endpoints MCPEndpoint `json:"endpoints"`
}

func NewPublicMCPResponse

func NewPublicMCPResponse(host string, mcp model.PublicMCP) PublicMCPResponse

func NewPublicMCPResponses

func NewPublicMCPResponses(host string, mcps []model.PublicMCP) []PublicMCPResponse

func (*PublicMCPResponse) MarshalJSON

func (mcp *PublicMCPResponse) MarshalJSON() ([]byte, error)

type ReusingParamProcessor

type ReusingParamProcessor struct {
	// contains filtered or unexported fields
}

ReusingParamProcessor 统一处理reusing参数

func NewReusingParamProcessor

func NewReusingParamProcessor(mcpID string, paramsFunc ParamsFunc) *ReusingParamProcessor

func (*ReusingParamProcessor) ProcessEmbedReusingParams

func (p *ReusingParamProcessor) ProcessEmbedReusingParams(
	reusingParams map[string]model.ReusingParam,
) (map[string]string, error)

ProcessEmbedReusingParams 处理嵌入类型的reusing参数

func (*ReusingParamProcessor) ProcessProxyReusingParams

func (p *ReusingParamProcessor) ProcessProxyReusingParams(
	reusingParams map[string]model.PublicMCPProxyReusingParam,
	headers map[string]string,
	backendQuery *url.Values,
) error

ProcessProxyReusingParams 处理代理类型的reusing参数

type SaveEmbedMCPRequest

type SaveEmbedMCPRequest struct {
	ID         string            `json:"id"`
	Enabled    bool              `json:"enabled"`
	InitConfig map[string]string `json:"init_config"`
}

type SavePublicMCPRequest

type SavePublicMCPRequest struct {
	model.PublicMCP
	CreatedAt json.RawMessage `json:"created_at"`
	UpdateAt  json.RawMessage `json:"update_at"`
}

type UpdateGroupMCPStatusRequest

type UpdateGroupMCPStatusRequest struct {
	Status model.GroupMCPStatus `json:"status"`
}

type UpdatePublicMCPStatusRequest

type UpdatePublicMCPStatusRequest struct {
	Status model.PublicMCPStatus `json:"status"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL