MCP transports supports Streamable HTTP

This commit is contained in:
Liujian
2025-10-21 17:52:50 +08:00
parent 6ee1996e6f
commit ea32fb1cd6
11 changed files with 184 additions and 64 deletions
+4
View File
@@ -17,12 +17,16 @@ func (p *plugin) mcpAPIs() []pm3.Api {
globalMessagePath := fmt.Sprintf("/api/v1/%s/message", mcp_server.GlobalBasePath)
appSSEPath := fmt.Sprintf("/api/v1/%s/sse", mcp_server.AppBasePath)
appMessagePath := fmt.Sprintf("/api/v1/%s/message", mcp_server.AppBasePath)
globalMcpPath := fmt.Sprintf("/api/v1/%s/mcp", mcp_server.GlobalBasePath)
appMcpPath := fmt.Sprintf("/api/v1/%s/mcp", mcp_server.AppBasePath)
ignore.IgnorePath("login", http.MethodGet, serviceSSEPath)
ignore.IgnorePath("login", http.MethodPost, serviceMessagePath)
ignore.IgnorePath("login", http.MethodGet, globalSSEPath)
ignore.IgnorePath("login", http.MethodPost, globalMessagePath)
ignore.IgnorePath("login", http.MethodGet, appSSEPath)
ignore.IgnorePath("login", http.MethodPost, appMessagePath)
ignore.IgnorePath("login", http.MethodGet, globalMcpPath)
ignore.IgnorePath("login", http.MethodGet, appMcpPath)
return []pm3.Api{
pm3.CreateApiSimple(http.MethodGet, serviceSSEPath, p.mcpController.MCPHandle),
pm3.CreateApiSimple(http.MethodPost, serviceMessagePath, p.mcpController.MCPHandle),
+1
View File
@@ -60,6 +60,7 @@ func (o *openapiCheck) Handler(ginCtx *gin.Context) {
}
authorization = apikey
}
authorization = strings.TrimPrefix(authorization, "Bearer ")
if authorization == o.apikey {
return
}
+21 -8
View File
@@ -19,17 +19,22 @@ func (p *plugin) mcpAPIs() []pm3.Api {
serviceSSEPath := fmt.Sprintf("/openapi/v1/%s/:serviceId/sse", strings.Trim(mcp_server.ServiceBasePath, "/"))
serviceMessagePath := fmt.Sprintf("/openapi/v1/%s/:serviceId/message", strings.Trim(mcp_server.ServiceBasePath, "/"))
serviceStreamablePath := fmt.Sprintf("/openapi/v1/%s/:serviceId/mcp", strings.Trim(mcp_server.ServiceBasePath, "/"))
//serviceStreamablePath := fmt.Sprintf("/openapi/v1/%s/:serviceId/mcp", strings.Trim(mcp_server.ServiceBasePath, "/"))
ignore.IgnorePath("openapi", http.MethodPost, globalMessagePath)
ignore.IgnorePath("openapi", http.MethodGet, globalSSEPath)
//ignore.IgnorePath("openapi", http.MethodGet, globalSSEPath)
ignore.IgnorePath("openapi", http.MethodPost, appMessagePath)
ignore.IgnorePath("openapi", http.MethodGet, appSSEPath)
ignore.IgnorePath("openapi", http.MethodGet, serviceSSEPath)
ignore.IgnorePath("openapi", http.MethodPost, serviceMessagePath)
ignore.IgnorePath("openapi", http.MethodGet, serviceStreamablePath)
ignore.IgnorePath("openapi", http.MethodPost, serviceStreamablePath)
ignore.IgnorePath("openapi", http.MethodDelete, serviceStreamablePath)
ignore.IgnorePath("openapi", http.MethodGet, mcp_server.OpenAppMCPPath)
ignore.IgnorePath("openapi", http.MethodPost, mcp_server.OpenAppMCPPath)
ignore.IgnorePath("openapi", http.MethodDelete, mcp_server.OpenAppMCPPath)
ignore.IgnorePath("openapi", http.MethodGet, mcp_server.OpenServiceMCPPath)
ignore.IgnorePath("openapi", http.MethodPost, mcp_server.OpenServiceMCPPath)
ignore.IgnorePath("openapi", http.MethodDelete, mcp_server.OpenServiceMCPPath)
return []pm3.Api{
pm3.CreateApiSimple(http.MethodGet, globalSSEPath, p.mcpController.GlobalHandleSSE),
@@ -41,9 +46,17 @@ func (p *plugin) mcpAPIs() []pm3.Api {
pm3.CreateApiSimple(http.MethodGet, serviceSSEPath, p.mcpController.ServiceHandleSSE),
pm3.CreateApiSimple(http.MethodPost, serviceMessagePath, p.mcpController.ServiceHandleMessage),
pm3.CreateApiSimple(http.MethodPost, serviceStreamablePath, p.mcpController.ServiceHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodDelete, serviceStreamablePath, p.mcpController.ServiceHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodGet, serviceStreamablePath, p.mcpController.ServiceHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodGet, mcp_server.OpenGlobalMCPPath, p.mcpController.GlobalHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodPost, mcp_server.OpenGlobalMCPPath, p.mcpController.GlobalHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodDelete, mcp_server.OpenGlobalMCPPath, p.mcpController.GlobalHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodGet, mcp_server.OpenAppMCPPath, p.mcpController.AppHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodPost, mcp_server.OpenAppMCPPath, p.mcpController.AppHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodDelete, mcp_server.OpenAppMCPPath, p.mcpController.AppHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodPost, mcp_server.OpenServiceMCPPath, p.mcpController.ServiceHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodDelete, mcp_server.OpenServiceMCPPath, p.mcpController.ServiceHandleStreamHTTP),
pm3.CreateApiSimple(http.MethodGet, mcp_server.OpenServiceMCPPath, p.mcpController.ServiceHandleStreamHTTP),
}
}