MCPcopy Create free account
hub / github.com/bytebase/bytebase / resolveChangeTarget

Method resolveChangeTarget

backend/api/mcp/tool_change.go:293–309  ·  view source on GitHub ↗

resolveChangeTarget runs the shared database resolver with elicitation fallback. The project parameter is passed to the server-side filter so it can disambiguate when the same database name exists in multiple projects.

(ctx context.Context, req *mcp.CallToolRequest, input ChangeInput)

Source from the content-addressed store, hash-verified

291// The project parameter is passed to the server-side filter so it can disambiguate
292// when the same database name exists in multiple projects.
293func (s *Server) resolveChangeTarget(ctx context.Context, req *mcp.CallToolRequest, input ChangeInput) (*resolvedDatabase, *mcp.CallToolResult) {
294 resolveCtx, resolveCancel := context.WithTimeout(ctx, resolveTimeout)
295 defer resolveCancel()
296
297 resolved, err := s.resolveDatabase(resolveCtx, input.Database, input.Instance, input.Project)
298 if err != nil {
299 return nil, formatToolError(err)
300 }
301 if !resolved.ambiguous {
302 return resolved, nil
303 }
304 picked, elicitErr := s.elicitDatabaseChoice(ctx, req, resolved)
305 if elicitErr != nil {
306 return nil, formatAmbiguousResult(input.Database, resolved.candidates)
307 }
308 return picked, nil
309}
310
311// createSheet creates a sheet with base64-encoded SQL content.
312func (s *Server) createSheet(ctx context.Context, project, sql string) (string, error) {

Callers 1

handleChangeMethod · 0.95

Calls 4

resolveDatabaseMethod · 0.95
elicitDatabaseChoiceMethod · 0.95
formatToolErrorFunction · 0.85
formatAmbiguousResultFunction · 0.85

Tested by

no test coverage detected