Skip to content

Commit 62f7bb7

Browse files
authored
Merge pull request #5 from virtuald/upgrade-mcp-go
Fix compilation errors in upgraded mcp-go
2 parents 27b1866 + e8c1c40 commit 62f7bb7

File tree

3 files changed

+39
-66
lines changed

3 files changed

+39
-66
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.24.0
55
require (
66
github.com/davecgh/go-spew v1.1.1
77
github.com/fsnotify/fsnotify v1.9.0
8-
github.com/mark3labs/mcp-go v0.25.0
8+
github.com/mark3labs/mcp-go v0.32.0
99
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06
1010
github.com/stretchr/testify v1.10.0
1111
golang.org/x/text v0.26.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
2424
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
2525
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
2626
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
27-
github.com/mark3labs/mcp-go v0.25.0 h1:UUpcMT3L5hIhuDy7aifj4Bphw4Pfx1Rf8mzMXDe8RQw=
28-
github.com/mark3labs/mcp-go v0.25.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
27+
github.com/mark3labs/mcp-go v0.32.0 h1:fgwmbfL2gbd67obg57OfV2Dnrhs1HtSdlY/i5fn7MU8=
28+
github.com/mark3labs/mcp-go v0.32.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4=
2929
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3030
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3131
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=

tools.go

Lines changed: 36 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ func (s *mcpServer) registerTools() error {
4343

4444
s.mcpServer.AddTool(applyTextEditTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
4545
// Extract arguments
46-
filePath, ok := request.Params.Arguments["filePath"].(string)
47-
if !ok {
48-
return mcp.NewToolResultError("filePath must be a string"), nil
46+
filePath, err := request.RequireString("filePath")
47+
if err != nil {
48+
return mcp.NewToolResultError(err.Error()), nil
4949
}
5050

5151
// Extract edits array
52-
editsArg, ok := request.Params.Arguments["edits"]
52+
editsArg, ok := request.GetArguments()["edits"]
5353
if !ok {
5454
return mcp.NewToolResultError("edits is required"), nil
5555
}
@@ -105,9 +105,9 @@ func (s *mcpServer) registerTools() error {
105105

106106
s.mcpServer.AddTool(readDefinitionTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
107107
// Extract arguments
108-
symbolName, ok := request.Params.Arguments["symbolName"].(string)
109-
if !ok {
110-
return mcp.NewToolResultError("symbolName must be a string"), nil
108+
symbolName, err := request.RequireString("symbolName")
109+
if err != nil {
110+
return mcp.NewToolResultError(err.Error()), nil
111111
}
112112

113113
coreLogger.Debug("Executing definition for symbol: %s", symbolName)
@@ -129,9 +129,9 @@ func (s *mcpServer) registerTools() error {
129129

130130
s.mcpServer.AddTool(findReferencesTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
131131
// Extract arguments
132-
symbolName, ok := request.Params.Arguments["symbolName"].(string)
133-
if !ok {
134-
return mcp.NewToolResultError("symbolName must be a string"), nil
132+
symbolName, err := request.RequireString("symbolName")
133+
if err != nil {
134+
return mcp.NewToolResultError(err.Error()), nil
135135
}
136136

137137
coreLogger.Debug("Executing references for symbol: %s", symbolName)
@@ -161,20 +161,13 @@ func (s *mcpServer) registerTools() error {
161161

162162
s.mcpServer.AddTool(getDiagnosticsTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
163163
// Extract arguments
164-
filePath, ok := request.Params.Arguments["filePath"].(string)
165-
if !ok {
166-
return mcp.NewToolResultError("filePath must be a string"), nil
167-
}
168-
169-
contextLines := 5 // default value
170-
if contextLinesArg, ok := request.Params.Arguments["contextLines"].(int); ok {
171-
contextLines = contextLinesArg
164+
filePath, err := request.RequireString("filePath")
165+
if err != nil {
166+
return mcp.NewToolResultError(err.Error()), nil
172167
}
173168

174-
showLineNumbers := true // default value
175-
if showLineNumbersArg, ok := request.Params.Arguments["showLineNumbers"].(bool); ok {
176-
showLineNumbers = showLineNumbersArg
177-
}
169+
contextLines := request.GetInt("contextLines", 5)
170+
showLineNumbers := request.GetBool("showLineNumbers", true)
178171

179172
coreLogger.Debug("Executing diagnostics for file: %s", filePath)
180173
text, err := tools.GetDiagnosticsForFile(s.ctx, s.lspClient, filePath, contextLines, showLineNumbers)
@@ -268,29 +261,19 @@ func (s *mcpServer) registerTools() error {
268261

269262
s.mcpServer.AddTool(hoverTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
270263
// Extract arguments
271-
filePath, ok := request.Params.Arguments["filePath"].(string)
272-
if !ok {
273-
return mcp.NewToolResultError("filePath must be a string"), nil
264+
filePath, err := request.RequireString("filePath")
265+
if err != nil {
266+
return mcp.NewToolResultError(err.Error()), nil
274267
}
275268

276-
// Handle both float64 and int for line and column due to JSON parsing
277-
var line, column int
278-
switch v := request.Params.Arguments["line"].(type) {
279-
case float64:
280-
line = int(v)
281-
case int:
282-
line = v
283-
default:
284-
return mcp.NewToolResultError("line must be a number"), nil
269+
line, err := request.RequireInt("line")
270+
if err != nil {
271+
return mcp.NewToolResultError(err.Error()), nil
285272
}
286273

287-
switch v := request.Params.Arguments["column"].(type) {
288-
case float64:
289-
column = int(v)
290-
case int:
291-
column = v
292-
default:
293-
return mcp.NewToolResultError("column must be a number"), nil
274+
column, err := request.RequireInt("column")
275+
if err != nil {
276+
return mcp.NewToolResultError(err.Error()), nil
294277
}
295278

296279
coreLogger.Debug("Executing hover for file: %s line: %d column: %d", filePath, line, column)
@@ -324,34 +307,24 @@ func (s *mcpServer) registerTools() error {
324307

325308
s.mcpServer.AddTool(renameSymbolTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
326309
// Extract arguments
327-
filePath, ok := request.Params.Arguments["filePath"].(string)
328-
if !ok {
329-
return mcp.NewToolResultError("filePath must be a string"), nil
310+
filePath, err := request.RequireString("filePath")
311+
if err != nil {
312+
return mcp.NewToolResultError(err.Error()), nil
330313
}
331314

332-
newName, ok := request.Params.Arguments["newName"].(string)
333-
if !ok {
334-
return mcp.NewToolResultError("newName must be a string"), nil
315+
newName, err := request.RequireString("newName")
316+
if err != nil {
317+
return mcp.NewToolResultError(err.Error()), nil
335318
}
336319

337-
// Handle both float64 and int for line and column due to JSON parsing
338-
var line, column int
339-
switch v := request.Params.Arguments["line"].(type) {
340-
case float64:
341-
line = int(v)
342-
case int:
343-
line = v
344-
default:
345-
return mcp.NewToolResultError("line must be a number"), nil
320+
line, err := request.RequireInt("line")
321+
if err != nil {
322+
return mcp.NewToolResultError(err.Error()), nil
346323
}
347324

348-
switch v := request.Params.Arguments["column"].(type) {
349-
case float64:
350-
column = int(v)
351-
case int:
352-
column = v
353-
default:
354-
return mcp.NewToolResultError("column must be a number"), nil
325+
column, err := request.RequireInt("column")
326+
if err != nil {
327+
return mcp.NewToolResultError(err.Error()), nil
355328
}
356329

357330
coreLogger.Debug("Executing rename_symbol for file: %s line: %d column: %d newName: %s", filePath, line, column, newName)

0 commit comments

Comments
 (0)