Skip to main content
Glama
ALAPI-SDK

mcp-alapi-cn

Official
by ALAPI-SDK
openapi_tool_handler.go1.55 kB
package handler import ( "context" "encoding/json" "fmt" "mcp-alapi-cn/internal/models" "github.com/go-resty/resty/v2" "github.com/mark3labs/mcp-go/mcp" ) type OpenAPIToolHandler struct { baseURL string token string client *resty.Client } func NewOpenAPIToolHandler(baseURL string, token string) *OpenAPIToolHandler { return &OpenAPIToolHandler{ baseURL: baseURL, token: token, client: resty.New(), } } func (h *OpenAPIToolHandler) Handle(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { arguments := request.Params.Arguments uri := request.Params.Name marshal, err := json.Marshal(arguments) if err != nil { return nil, fmt.Errorf("marshal request failed: %w", err) } response, err := h.client.SetBaseURL(h.baseURL).R(). SetHeader("Content-Type", "application/json"). SetHeader("token", h.token). SetHeader("User-Agent", "ALAPI-SDK/MCP-SERVER v1.0.0"). SetBody(marshal). Post(uri) if err != nil { return nil, fmt.Errorf("API request failed: %w", err) } // 解析基础响应 var baseResp models.BaseResponse if err := json.Unmarshal(response.Body(), &baseResp); err != nil { return nil, fmt.Errorf("unmarshal response failed: %w", err) } if baseResp.Code != 200 { return nil, fmt.Errorf("request params error: %s", baseResp.Message) } // 只返回 data 部分的数据 dataJSON, err := json.Marshal(baseResp.Data) if err != nil { return nil, fmt.Errorf("marshal response data failed: %w", err) } return mcp.NewToolResultText(string(dataJSON)), nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ALAPI-SDK/mcp-alapi-cn'

If you have feedback or need assistance with the MCP directory API, please join our Discord server