MCPcopy Index your code
hub / github.com/apache/answer / MCPAnswersHandler

Method MCPAnswersHandler

internal/controller/mcp_controller.go:158–209  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

156}
157
158func (c *MCPController) MCPAnswersHandler() func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
159 return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
160 if err := c.ensureMCPEnabled(ctx); err != nil {
161 return nil, err
162 }
163 cond := schema.NewMCPSearchAnswerCond(request)
164
165 siteGeneral, err := c.siteInfoService.GetSiteGeneral(ctx)
166 if err != nil {
167 log.Errorf("get site general info failed: %v", err)
168 return nil, err
169 }
170
171 if len(cond.QuestionID) > 0 {
172 answerList, err := c.answerRepo.GetAnswerList(ctx, &entity.Answer{QuestionID: cond.QuestionID})
173 if err != nil {
174 log.Errorf("get answers failed: %v", err)
175 return nil, err
176 }
177 resp := make([]*schema.MCPSearchAnswerInfoResp, 0)
178 for _, answer := range answerList {
179 t := &schema.MCPSearchAnswerInfoResp{
180 QuestionID: answer.QuestionID,
181 AnswerID: answer.ID,
182 AnswerContent: answer.OriginalText,
183 Link: fmt.Sprintf("%s/questions/%s/answers/%s", siteGeneral.SiteUrl, answer.QuestionID, answer.ID),
184 }
185 resp = append(resp, t)
186 }
187 data, _ := json.Marshal(resp)
188 return mcp.NewToolResultText(string(data)), nil
189 }
190
191 answerList, err := c.answerRepo.GetAnswerList(ctx, &entity.Answer{QuestionID: cond.QuestionID})
192 if err != nil {
193 log.Errorf("get answers failed: %v", err)
194 return nil, err
195 }
196 resp := make([]*schema.MCPSearchAnswerInfoResp, 0)
197 for _, answer := range answerList {
198 t := &schema.MCPSearchAnswerInfoResp{
199 QuestionID: answer.QuestionID,
200 AnswerID: answer.ID,
201 AnswerContent: answer.OriginalText,
202 Link: fmt.Sprintf("%s/questions/%s/answers/%s", siteGeneral.SiteUrl, answer.QuestionID, answer.ID),
203 }
204 resp = append(resp, t)
205 }
206 data, _ := json.Marshal(resp)
207 return mcp.NewToolResultText(string(data)), nil
208 }
209}
210
211func (c *MCPController) MCPCommentsHandler() func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
212 return func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {

Callers 2

callMCPToolMethod · 0.80
RegisterMCPRouterMethod · 0.80

Calls 4

ensureMCPEnabledMethod · 0.95
NewMCPSearchAnswerCondFunction · 0.92
GetSiteGeneralMethod · 0.65
GetAnswerListMethod · 0.65

Tested by

no test coverage detected