Skip to main content
Glama

Multi Database MCP Server

MIT License
295
  • Linux
  • Apple
REFACTORING.md4.32 kB
# MCP Server Refactoring Documentation ## Overview This document outlines the refactoring changes made to the MCP server to better support VS Code and Cursor extension integration. The refactoring focused on standardizing tool definitions, improving error handling, and adding editor-specific functionality. ## Key Changes ### 1. Enhanced Tool Structure The `Tool` structure was extended to support: - Context-aware execution with proper cancellation support - Categorization of tools (e.g., "editor" category) - Better schema validation - Progress reporting during execution ```go // Before type Tool struct { Name string Description string InputSchema ToolInputSchema Handler func(params map[string]interface{}) (interface{}, error) } // After type Tool struct { Name string Description string InputSchema ToolInputSchema Category string // New field for grouping tools CreatedAt time.Time // New field for tracking tool registration RawSchema interface{} // Alternative schema representation Handler func(ctx context.Context, params map[string]interface{}) (interface{}, error) // Context-aware } ``` ### 2. Dynamic Tool Registration The tool registry was improved to support: - Runtime tool registration and deregistration - Tool categorization and filtering - Input validation against schemas - Timeouts and context handling New methods added: - `DeregisterTool` - `GetToolsByCategory` - `ExecuteToolWithTimeout` - `ValidateToolInput` ### 3. Editor Integration Support Added support for editor-specific functionality: - New editor context method (`editor/context`) for receiving editor state - Session data storage for maintaining editor context - Editor-specific tools (file info, code completion, code analysis) - Category-based tool organization ### 4. Improved Error Handling Enhanced error handling with: - Structured error responses for both protocol and tool execution errors - New error types with clear error codes - Proper error propagation from tools to clients - Context-based cancellation and timeout handling ### 5. Progress Reporting Added support for reporting progress during tool execution: - Progress token support in tool execution requests - Notification channel for progress events - Integration with the SSE transport for real-time updates ### 6. Client Compatibility Improved compatibility with VS Code and Cursor extensions: - Added alias method `tools/execute` (alternative to `tools/call`) - Standardized response format following MCP specification - Properly formatted tool schemas matching client expectations - Support for client-specific notification formats ## Implementation Details ### Tool Registration Flow 1. Tools are defined with a name, description, input schema, and handler function 2. Tools are registered with the tool registry during server initialization 3. When a client connects, available tools are advertised through the `tools/list` method 4. Clients can execute tools via the `tools/call` or `tools/execute` methods ### Tool Execution Flow 1. Client sends a tool execution request with tool name and arguments 2. Server validates the arguments against the tool's input schema 3. If validation passes, the tool handler is executed with a context 4. Progress updates are sent during execution if requested 5. Results are formatted according to the MCP specification and returned to the client ### Error Handling Flow 1. If input validation fails, a structured error response is returned 2. If tool execution fails, the error is captured and returned in a format visible to LLMs 3. If the tool is not found or the request format is invalid, appropriate error codes are returned ## Testing Strategy 1. Test basic tool execution with the standard tools 2. Test editor-specific tools with mocked editor context 3. Test error handling with invalid inputs 4. Test progress reporting with long-running tools 5. Test timeouts with deliberately slow tools ## Future Improvements 1. Implement full JSON Schema validation for tool inputs 2. Add more editor-specific tools leveraging editor context 3. Implement persistent storage for tool results 4. Add authentication and authorization for tool execution 5. Implement streaming tool results for long-running operations

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FreePeak/db-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server