@@ -43,13 +43,14 @@ 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 {
46+ filePath := request .GetString ( "filePath" , "" )
47+ if filePath == "" {
4848 return mcp .NewToolResultError ("filePath must be a string" ), nil
4949 }
5050
5151 // Extract edits array
52- editsArg , ok := request .Params .Arguments ["edits" ]
52+ args := request .GetArguments ()
53+ editsArg , ok := args ["edits" ]
5354 if ! ok {
5455 return mcp .NewToolResultError ("edits is required" ), nil
5556 }
@@ -105,8 +106,8 @@ func (s *mcpServer) registerTools() error {
105106
106107 s .mcpServer .AddTool (readDefinitionTool , func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
107108 // Extract arguments
108- symbolName , ok := request .Params . Arguments [ "symbolName" ].( string )
109- if ! ok {
109+ symbolName := request .GetString ( "symbolName" , "" )
110+ if symbolName == "" {
110111 return mcp .NewToolResultError ("symbolName must be a string" ), nil
111112 }
112113
@@ -129,8 +130,8 @@ func (s *mcpServer) registerTools() error {
129130
130131 s .mcpServer .AddTool (findReferencesTool , func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
131132 // Extract arguments
132- symbolName , ok := request .Params . Arguments [ "symbolName" ].( string )
133- if ! ok {
133+ symbolName := request .GetString ( "symbolName" , "" )
134+ if symbolName == "" {
134135 return mcp .NewToolResultError ("symbolName must be a string" ), nil
135136 }
136137
@@ -161,19 +162,18 @@ func (s *mcpServer) registerTools() error {
161162
162163 s .mcpServer .AddTool (getDiagnosticsTool , func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
163164 // Extract arguments
164- filePath , ok := request .Params . Arguments [ "filePath" ].( string )
165- if ! ok {
165+ filePath := request .GetString ( "filePath" , "" )
166+ if filePath == "" {
166167 return mcp .NewToolResultError ("filePath must be a string" ), nil
167168 }
168169
169- contextLines := 5 // default value
170- if contextLinesArg , ok := request .Params .Arguments ["contextLines" ].(int ); ok {
171- contextLines = contextLinesArg
172- }
170+ contextLines := request .GetInt ("contextLines" , 5 )
173171
174172 showLineNumbers := true // default value
175- if showLineNumbersArg , ok := request .Params .Arguments ["showLineNumbers" ].(bool ); ok {
176- showLineNumbers = showLineNumbersArg
173+ if args := request .GetArguments (); args != nil {
174+ if v , ok := args ["showLineNumbers" ].(bool ); ok {
175+ showLineNumbers = v
176+ }
177177 }
178178
179179 coreLogger .Debug ("Executing diagnostics for file: %s" , filePath )
@@ -268,28 +268,17 @@ func (s *mcpServer) registerTools() error {
268268
269269 s .mcpServer .AddTool (hoverTool , func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
270270 // Extract arguments
271- filePath , ok := request .Params . Arguments [ "filePath" ].( string )
272- if ! ok {
271+ filePath := request .GetString ( "filePath" , "" )
272+ if filePath == "" {
273273 return mcp .NewToolResultError ("filePath must be a string" ), nil
274274 }
275275
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 :
276+ line := request .GetInt ("line" , 0 )
277+ column := request .GetInt ("column" , 0 )
278+ if line <= 0 {
284279 return mcp .NewToolResultError ("line must be a number" ), nil
285280 }
286-
287- switch v := request .Params .Arguments ["column" ].(type ) {
288- case float64 :
289- column = int (v )
290- case int :
291- column = v
292- default :
281+ if column <= 0 {
293282 return mcp .NewToolResultError ("column must be a number" ), nil
294283 }
295284
@@ -324,33 +313,22 @@ func (s *mcpServer) registerTools() error {
324313
325314 s .mcpServer .AddTool (renameSymbolTool , func (ctx context.Context , request mcp.CallToolRequest ) (* mcp.CallToolResult , error ) {
326315 // Extract arguments
327- filePath , ok := request .Params . Arguments [ "filePath" ].( string )
328- if ! ok {
316+ filePath := request .GetString ( "filePath" , "" )
317+ if filePath == "" {
329318 return mcp .NewToolResultError ("filePath must be a string" ), nil
330319 }
331320
332- newName , ok := request .Params . Arguments [ "newName" ].( string )
333- if ! ok {
321+ newName := request .GetString ( "newName" , "" )
322+ if newName == "" {
334323 return mcp .NewToolResultError ("newName must be a string" ), nil
335324 }
336325
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 :
326+ line := request .GetInt ("line" , 0 )
327+ column := request .GetInt ("column" , 0 )
328+ if line <= 0 {
345329 return mcp .NewToolResultError ("line must be a number" ), nil
346330 }
347-
348- switch v := request .Params .Arguments ["column" ].(type ) {
349- case float64 :
350- column = int (v )
351- case int :
352- column = v
353- default :
331+ if column <= 0 {
354332 return mcp .NewToolResultError ("column must be a number" ), nil
355333 }
356334
0 commit comments