loadPluginMcpConfigs function

Future<List<McpServerConfig>> loadPluginMcpConfigs(
  1. List<LoadedPlugin> plugins
)

Load MCP server configs from all enabled plugins.

Implementation

Future<List<McpServerConfig>> loadPluginMcpConfigs(
  List<LoadedPlugin> plugins,
) async {
  final configs = <McpServerConfig>[];

  for (final plugin in plugins) {
    final mcpFile = File('${plugin.path}/mcp.json');
    if (!await mcpFile.exists()) continue;

    try {
      final json = jsonDecode(await mcpFile.readAsString());
      if (json is Map<String, dynamic>) {
        for (final entry in json.entries) {
          final value = entry.value;
          if (value is! Map<String, dynamic>) continue;
          if (value.containsKey('command')) {
            configs.add(
              McpStdioConfig(
                name: entry.key,
                command: value['command'] as String,
                args:
                    (value['args'] as List?)
                        ?.map((a) => a.toString())
                        .toList() ??
                    [],
              ),
            );
          }
        }
      }
    } catch (_) {
      // Skip invalid MCP configs.
    }
  }

  return configs;
}