Skip to content

Commit 6a245b1

Browse files
authored
Merge pull request #1026 from planetscale/joem/mcp-improve-err-msgs
mcp: improve error messages
2 parents 86fbfa6 + d50704c commit 6a245b1

File tree

2 files changed

+39
-3
lines changed

2 files changed

+39
-3
lines changed

internal/cmd/mcp/server_handlers.go

+29-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ func HandleListOrgs(ctx context.Context, request mcp.CallToolRequest, ch *cmduti
2222
// Get the list of organizations
2323
orgs, err := client.Organizations.List(ctx)
2424
if err != nil {
25+
handledErr := cmdutil.HandleError(err)
26+
if handledErr != err {
27+
return nil, handledErr
28+
}
2529
return nil, fmt.Errorf("failed to list organizations: %w", err)
2630
}
2731

@@ -64,6 +68,10 @@ func HandleListDatabases(ctx context.Context, request mcp.CallToolRequest, ch *c
6468
case planetscale.ErrNotFound:
6569
return nil, fmt.Errorf("organization %s does not exist or your account is not authorized to access it", orgName)
6670
default:
71+
handledErr := cmdutil.HandleError(err)
72+
if handledErr != err {
73+
return nil, handledErr
74+
}
6775
return nil, fmt.Errorf("failed to list databases: %w", err)
6876
}
6977
}
@@ -115,6 +123,10 @@ func HandleListBranches(ctx context.Context, request mcp.CallToolRequest, ch *cm
115123
case planetscale.ErrNotFound:
116124
return nil, fmt.Errorf("database %s does not exist in organization %s", database, orgName)
117125
default:
126+
handledErr := cmdutil.HandleError(err)
127+
if handledErr != err {
128+
return nil, handledErr
129+
}
118130
return nil, fmt.Errorf("failed to list branches: %w", err)
119131
}
120132
}
@@ -174,6 +186,10 @@ func HandleListKeyspaces(ctx context.Context, request mcp.CallToolRequest, ch *c
174186
case planetscale.ErrNotFound:
175187
return nil, fmt.Errorf("database %s or branch %s does not exist in organization %s", database, branch, orgName)
176188
default:
189+
handledErr := cmdutil.HandleError(err)
190+
if handledErr != err {
191+
return nil, handledErr
192+
}
177193
return nil, fmt.Errorf("failed to list keyspaces: %w", err)
178194
}
179195
}
@@ -206,6 +222,10 @@ func HandleRunQuery(ctx context.Context, request mcp.CallToolRequest, ch *cmduti
206222
// Create a database connection
207223
conn, err := createDatabaseConnection(ctx, request, ch)
208224
if err != nil {
225+
handledErr := cmdutil.HandleError(err)
226+
if handledErr != err {
227+
return nil, handledErr
228+
}
209229
return nil, err
210230
}
211231
defer conn.close()
@@ -231,6 +251,10 @@ func HandleListTables(ctx context.Context, request mcp.CallToolRequest, ch *cmdu
231251
// Create a database connection
232252
conn, err := createDatabaseConnection(ctx, request, ch)
233253
if err != nil {
254+
handledErr := cmdutil.HandleError(err)
255+
if handledErr != err {
256+
return nil, handledErr
257+
}
234258
return nil, err
235259
}
236260
defer conn.close()
@@ -275,6 +299,10 @@ func HandleGetSchema(ctx context.Context, request mcp.CallToolRequest, ch *cmdut
275299
// Create a database connection
276300
conn, err := createDatabaseConnection(ctx, request, ch)
277301
if err != nil {
302+
handledErr := cmdutil.HandleError(err)
303+
if handledErr != err {
304+
return nil, handledErr
305+
}
278306
return nil, err
279307
}
280308
defer conn.close()
@@ -342,4 +370,4 @@ func HandleGetSchema(ctx context.Context, request mcp.CallToolRequest, ch *cmdut
342370

343371
// Return the JSON object as text
344372
return mcp.NewToolResultText(string(schemasJSON)), nil
345-
}
373+
}

internal/cmd/mcp/server_helpers.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func getOrganization(request mcp.CallToolRequest, ch *cmdutil.Helper) (string, e
4646
if orgName == "" {
4747
return "", fmt.Errorf("no organization specified and no default organization set")
4848
}
49-
49+
5050
return orgName, nil
5151
}
5252

@@ -98,6 +98,10 @@ func createDatabaseConnection(ctx context.Context, request mcp.CallToolRequest,
9898
return nil, fmt.Errorf("database %s and branch %s does not exist in organization %s",
9999
database, branch, orgName)
100100
default:
101+
handledErr := cmdutil.HandleError(err)
102+
if handledErr != err {
103+
return nil, handledErr
104+
}
101105
return nil, fmt.Errorf("failed to get database branch: %w", err)
102106
}
103107
}
@@ -117,6 +121,10 @@ func createDatabaseConnection(ctx context.Context, request mcp.CallToolRequest,
117121
Replica: true, // Use replica for read-only queries
118122
})
119123
if err != nil {
124+
handledErr := cmdutil.HandleError(err)
125+
if handledErr != err {
126+
return nil, handledErr
127+
}
120128
return nil, fmt.Errorf("failed to create temporary password: %w", err)
121129
}
122130

@@ -242,4 +250,4 @@ func executeQuery(ctx context.Context, conn *DatabaseConnection, query string) (
242250
}
243251

244252
return results, nil
245-
}
253+
}

0 commit comments

Comments
 (0)