feat: support GET request in MCP SSE (#5363)

This commit is contained in:
DacongDA
2026-04-06 10:35:49 +08:00
committed by GitHub
parent c7ad2052c9
commit 1637ca1dfb
3 changed files with 16 additions and 5 deletions

View File

@@ -32,7 +32,7 @@ import (
// @Param owner path string true "The owner name of the server" // @Param owner path string true "The owner name of the server"
// @Param name path string true "The name of the server" // @Param name path string true "The name of the server"
// @Success 200 {object} mcp.McpResponse The Response object // @Success 200 {object} mcp.McpResponse The Response object
// @router /server/:owner/:name [post] // @router /server/:owner/:name [get,post]
func (c *ApiController) ProxyServer() { func (c *ApiController) ProxyServer() {
owner := c.Ctx.Input.Param(":owner") owner := c.Ctx.Input.Param(":owner")
name := c.Ctx.Input.Param(":name") name := c.Ctx.Input.Param(":name")

View File

@@ -43,11 +43,21 @@ func GetServerTools(owner, name, url, token string) ([]*mcpsdk.Tool, error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10) ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10)
defer cancel() defer cancel()
client := mcpsdk.NewClient(&mcpsdk.Implementation{Name: util.GetId(owner, name), Version: "1.0.0"}, nil) 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})) if strings.HasSuffix(url, "sse") {
session, err = client.Connect(ctx, &mcpsdk.StreamableClientTransport{Endpoint: url, HTTPClient: httpClient}, 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)
}
} else { } 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 { if err != nil {

View File

@@ -140,6 +140,7 @@ func InitAPI() {
web.Router("/api/sync-mcp-tool", &controllers.ApiController{}, "POST:SyncMcpTool") web.Router("/api/sync-mcp-tool", &controllers.ApiController{}, "POST:SyncMcpTool")
web.Router("/api/add-server", &controllers.ApiController{}, "POST:AddServer") web.Router("/api/add-server", &controllers.ApiController{}, "POST:AddServer")
web.Router("/api/delete-server", &controllers.ApiController{}, "POST:DeleteServer") 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/server/:owner/:name", &controllers.ApiController{}, "POST:ProxyServer")
web.Router("/api/get-entries", &controllers.ApiController{}, "GET:GetEntries") web.Router("/api/get-entries", &controllers.ApiController{}, "GET:GetEntries")