multica-ai/multica · error
mcp_servers.%s must be a JSON object
Error message
mcp_servers.%s must be a JSON object
What it means
Error "mcp_servers.%s must be a JSON object" thrown in multica-ai/multica.
Source
Thrown at server/internal/daemon/execenv/cursor_mcp.go:230
var cfg struct {
McpServers map[string]json.RawMessage `json:"mcpServers"`
}
if err := json.Unmarshal(raw, &cfg); err != nil {
return nil, fmt.Errorf("parse mcp_config json: %w", err)
}
if cfg.McpServers == nil {
return map[string]json.RawMessage{}, nil
}
for name, server := range cfg.McpServers {
if strings.TrimSpace(name) == "" {
return nil, fmt.Errorf("mcp server name must not be empty")
}
var obj map[string]any
if err := json.Unmarshal(server, &obj); err != nil {
return nil, fmt.Errorf("mcp_servers.%s: %w", name, err)
}
if obj == nil {
return nil, fmt.Errorf("mcp_servers.%s must be a JSON object", name)
}
}
return cfg.McpServers, nil
}
func marshalCursorMcpConfig(servers map[string]json.RawMessage) ([]byte, error) {
if servers == nil {
servers = map[string]json.RawMessage{}
}
data, err := json.MarshalIndent(cursorMcpConfigFile{McpServers: servers}, "", " ")
if err != nil {
return nil, fmt.Errorf("marshal cursor mcp config: %w", err)
}
return append(data, '\n'), nil
}
func cursorMcpApprovalKeys(projectRoot string, servers map[string]json.RawMessage) ([]string, error) {
names := make([]string, 0, len(servers))View on GitHub (pinned to 2c0912b6ec)
Solutions
- Make the indicated MCP server entry a JSON object.
When it happens
Trigger: Thrown at server/internal/daemon/execenv/cursor_mcp.go:230 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/8857f95333b092f1.
Report an issue: GitHub.