跳到內容

HTTP 與 MCP

先取得模組:go get github.com/yshengliao/gortexa@v0.27.0。以下片段皆對 v0.27.0 編譯驗證過。

建立 error handler 走 apperr、含 protojson marshaler 與 Authorization header 轉送的 ServeMux。

import (
"github.com/yshengliao/gortexa/apperr"
"github.com/yshengliao/gortexa/httpcompat"
)
gateway := httpcompat.NewServeMux(apperr.Default)
// 把 grpc-gateway handler 註冊到 gateway + loopback conn
handler := httpcompat.MaxBodyBytes(gateway) // body 上限 1 MiB
handler = httpcompat.CORS(handler, cfg.Server)

另有 OpenAPIRoute(next, cfg, specPath) 掛 OpenAPI spec。

把有 gortexa.ai.v1 annotations 的 RPC 暴露成 MCP tools,經 loopback 過同一條攔截器鏈。

import (
"github.com/yshengliao/gortexa/apperr"
"github.com/yshengliao/gortexa/mcp"
)
descs, err := mcp.ServiceDescriptors("resource.v1.ResourceService")
if err != nil {
return err
}
bridge, err := mcp.NewBridge(conn, descs, apperr.Default, cfg.Observ)
if err != nil {
return err
}
bridge.SetAllowedOrigins(cfg.Server.CORSOrigins)
app.SetMCPHandler(bridge.Handler())

離線輸出 tool schema 用 mcp.ExportSchemas(format, descs),format 為 mcpopenaigemini