MCPcopy
hub / github.com/apache/answer / callMCPTool

Method callMCPTool

internal/controller/ai_controller.go:712–763  ·  view source on GitHub ↗

callMCPTool

(ctx context.Context, toolName string, arguments map[string]any)

Source from the content-addressed store, hash-verified

710
711// callMCPTool
712func (c *AIController) callMCPTool(ctx context.Context, toolName string, arguments map[string]any) (string, error) {
713 request := mcp.CallToolRequest{
714 Request: mcp.Request{},
715 Params: struct {
716 Name string `json:"name"`
717 Arguments any `json:"arguments,omitempty"`
718 Meta *mcp.Meta `json:"_meta,omitempty"`
719 }{
720 Name: toolName,
721 Arguments: arguments,
722 },
723 }
724
725 var result *mcp.CallToolResult
726 var err error
727
728 log.Debugf("Calling MCP tool: %s with arguments: %v", toolName, arguments)
729
730 switch toolName {
731 case "get_questions":
732 result, err = c.mcpController.MCPQuestionsHandler()(ctx, request)
733 case "get_answers_by_question_id":
734 result, err = c.mcpController.MCPAnswersHandler()(ctx, request)
735 case "get_comments":
736 result, err = c.mcpController.MCPCommentsHandler()(ctx, request)
737 case "get_tags":
738 result, err = c.mcpController.MCPTagsHandler()(ctx, request)
739 case "get_tag_detail":
740 result, err = c.mcpController.MCPTagDetailsHandler()(ctx, request)
741 case "get_user":
742 result, err = c.mcpController.MCPUserDetailsHandler()(ctx, request)
743 case "semantic_search":
744 result, err = c.mcpController.MCPSemanticSearchHandler()(ctx, request)
745 default:
746 return "", fmt.Errorf("unknown tool: %s", toolName)
747 }
748
749 if err != nil {
750 return "", err
751 }
752
753 data, _ := json.Marshal(result)
754 log.Debugf("MCP tool %s called successfully, result: %v", toolName, string(data))
755
756 if result != nil && len(result.Content) > 0 {
757 if textContent, ok := result.Content[0].(mcp.TextContent); ok {
758 return textContent.Text, nil
759 }
760 }
761
762 return "No result found", nil
763}

Callers 1

executeToolCallsMethod · 0.95

Calls 7

MCPQuestionsHandlerMethod · 0.80
MCPAnswersHandlerMethod · 0.80
MCPCommentsHandlerMethod · 0.80
MCPTagsHandlerMethod · 0.80
MCPTagDetailsHandlerMethod · 0.80
MCPUserDetailsHandlerMethod · 0.80

Tested by

no test coverage detected