@@ -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