diff --git a/controllers/mcp_server.go b/controllers/mcp_server.go index 1fd6745b4..1c75f3aa9 100644 --- a/controllers/mcp_server.go +++ b/controllers/mcp_server.go @@ -32,7 +32,7 @@ import ( // @Param owner path string true "The owner name of the server" // @Param name path string true "The name of the server" // @Success 200 {object} mcp.McpResponse The Response object -// @router /server/:owner/:name [post] +// @router /server/:owner/:name [get,post] func (c *ApiController) ProxyServer() { owner := c.Ctx.Input.Param(":owner") name := c.Ctx.Input.Param(":name") diff --git a/mcp/util.go b/mcp/util.go index d0e0a806b..458bdbb50 100644 --- a/mcp/util.go +++ b/mcp/util.go @@ -43,11 +43,21 @@ func GetServerTools(owner, name, url, token string) ([]*mcpsdk.Tool, error) { ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10) defer cancel() client := mcpsdk.NewClient(&mcpsdk.Implementation{Name: util.GetId(owner, name), Version: "1.0.0"}, nil) - if token != "" { - httpClient := oauth2.NewClient(ctx, oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})) - session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url, HTTPClient: httpClient}, nil) + + if strings.HasSuffix(url, "sse") { + if token != "" { + httpClient := oauth2.NewClient(ctx, oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})) + session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url, HTTPClient: httpClient}, nil) + } else { + session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url}, nil) + } } else { - session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url}, nil) + if token != "" { + httpClient := oauth2.NewClient(ctx, oauth2.StaticTokenSource(&oauth2.Token{AccessToken: token})) + session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url, HTTPClient: httpClient}, nil) + } else { + session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url}, nil) + } } if err != nil { diff --git a/routers/router.go b/routers/router.go index 617a16fa1..9198cb372 100644 --- a/routers/router.go +++ b/routers/router.go @@ -140,6 +140,7 @@ func InitAPI() { web.Router("/api/sync-mcp-tool", &controllers.ApiController{}, "POST:SyncMcpTool") web.Router("/api/add-server", &controllers.ApiController{}, "POST:AddServer") web.Router("/api/delete-server", &controllers.ApiController{}, "POST:DeleteServer") + web.Router("/api/server/:owner/:name", &controllers.ApiController{}, "GET:ProxyServer") web.Router("/api/server/:owner/:name", &controllers.ApiController{}, "POST:ProxyServer") web.Router("/api/get-entries", &controllers.ApiController{}, "GET:GetEntries")