LoadConfig reads a JSON config file. Missing file returns (nil, nil) — MCP is opt-in; absence is not an error.
(path string)
| 63 | // LoadConfig reads a JSON config file. Missing file returns (nil, nil) — MCP |
| 64 | // is opt-in; absence is not an error. |
| 65 | func LoadConfig(path string) (*Config, error) { |
| 66 | data, err := os.ReadFile(path) |
| 67 | if errors.Is(err, fs.ErrNotExist) { |
| 68 | return nil, nil |
| 69 | } |
| 70 | if err != nil { |
| 71 | return nil, err |
| 72 | } |
| 73 | var c Config |
| 74 | if err := json.Unmarshal(data, &c); err != nil { |
| 75 | return nil, fmt.Errorf("parse mcp config %s: %w", path, err) |
| 76 | } |
| 77 | return &c, nil |
| 78 | } |
| 79 | |
| 80 | // ProgressStatus is one phase of MCP server bring-up. A ProgressFunc gets |
| 81 | // called once per phase per server, plus ProgressBegin/ProgressDone |