loadPluginMcpConfigs function
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;
}