Skip to main content
Glama
mock_config.go3.84 kB
// package mock provides a configurable mock server for testing MCP functionality. package mock import ( "time" ) // ResponseScenario defines different response scenarios for mock testing type ResponseScenario string const ( // ScenarioSuccess represents a successful response ScenarioSuccess ResponseScenario = "success" // ScenarioFailure represents a failure response ScenarioFailure ResponseScenario = "failure" // ScenarioTimeout represents a timeout response ScenarioTimeout ResponseScenario = "timeout" // ScenarioNetworkError represents a network error ScenarioNetworkError ResponseScenario = "network_error" // ScenarioMalformedRequest represents an invalid request format ScenarioMalformedRequest ResponseScenario = "malformed_request" // ScenarioServerError represents a server error (500) ScenarioServerError ResponseScenario = "server_error" ) // ToolConfig defines configuration for a specific tool type ToolConfig struct { // Scenario defines the response scenario to use Scenario ResponseScenario // Delay adds artificial delay before responding (for timeout testing) Delay time.Duration // CustomResponse allows overriding the default response for this tool CustomResponse map[string]interface{} // ErrorMessage provides a custom error message when using failure scenarios ErrorMessage string // StatusCode allows overriding the HTTP status code StatusCode int } // ServerConfig provides configuration for the mock server type ServerConfig struct { // DefaultScenario is the fallback scenario for tools without specific config DefaultScenario ResponseScenario // DefaultDelay is the default delay for all responses DefaultDelay time.Duration // ToolConfigs maps tool names to their configurations ToolConfigs map[string]ToolConfig // ValidateJSONRPC determines whether to validate JSON-RPC 2.0 compliance ValidateJSONRPC bool // AllowUnregisteredTools determines behavior for tools without handlers AllowUnregisteredTools bool // DefaultStatusCode is the default HTTP status code for responses DefaultStatusCode int } // NewDefaultConfig creates a new ServerConfig with default values func NewDefaultConfig() *ServerConfig { return &ServerConfig{ DefaultScenario: ScenarioSuccess, DefaultDelay: 0 * time.Millisecond, ToolConfigs: make(map[string]ToolConfig), ValidateJSONRPC: true, AllowUnregisteredTools: false, DefaultStatusCode: 200, } } // NewFailureConfig creates a new ServerConfig with all tools set to fail func NewFailureConfig() *ServerConfig { return &ServerConfig{ DefaultScenario: ScenarioFailure, DefaultDelay: 0 * time.Millisecond, ToolConfigs: make(map[string]ToolConfig), ValidateJSONRPC: true, AllowUnregisteredTools: false, DefaultStatusCode: 200, // Even failures use 200 with error content in MCP } } // NewTimeoutConfig creates a new ServerConfig with all tools set to timeout func NewTimeoutConfig(delay time.Duration) *ServerConfig { return &ServerConfig{ DefaultScenario: ScenarioTimeout, DefaultDelay: delay, ToolConfigs: make(map[string]ToolConfig), ValidateJSONRPC: true, AllowUnregisteredTools: false, DefaultStatusCode: 200, } } // SetToolConfig sets configuration for a specific tool func (c *ServerConfig) SetToolConfig(toolName string, config ToolConfig) { c.ToolConfigs[toolName] = config } // GetToolConfig gets configuration for a specific tool, falling back to defaults func (c *ServerConfig) GetToolConfig(toolName string) ToolConfig { if config, exists := c.ToolConfigs[toolName]; exists { return config } // Return default config for this tool return ToolConfig{ Scenario: c.DefaultScenario, Delay: c.DefaultDelay, StatusCode: c.DefaultStatusCode, } }

Latest Blog Posts

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/MrFixit96/go-dev-mcp'

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