mcpConnectorsFromRoomServices function

List<Connector> mcpConnectorsFromRoomServices({
  1. required Iterable<ServiceSpec> services,
  2. String? agentName,
  3. MeshagentProxyConfig? meshagentProxyConfig,
})

Implementation

List<Connector> mcpConnectorsFromRoomServices({
  required Iterable<ServiceSpec> services,
  String? agentName,
  MeshagentProxyConfig? meshagentProxyConfig,
}) {
  final connectors = <Connector>[];

  for (final service in services) {
    final filter = service.metadata.annotations["meshagent.agent.filter"];
    if (filter != null && filter != agentName) {
      continue;
    }

    for (final port in service.ports) {
      for (final endpoint in port.endpoints) {
        final mcp = endpoint.mcp;
        if (mcp == null) {
          continue;
        }
        if (mcp.useProxySecret != null && meshagentProxyConfig == null) {
          continue;
        }
        if (mcp.useProxySecret == null && (mcp.oauth != null || mcp.openaiConnectorId != null)) {
          continue;
        }

        connectors.add(
          Connector(
            name: mcp.label,
            server: MCPServer(
              serverLabel: mcp.label,
              serverUrl: _proxyMcpServerUrl(
                serverUrl: _roomServiceMcpServerUrl(service: service, port: port, endpoint: endpoint),
                useProxySecret: mcp.useProxySecret,
                proxyConfig: meshagentProxyConfig,
              ),
              headers: mcp.useProxySecret != null && meshagentProxyConfig != null
                  ? [
                      ...?_headersFromEndpointSpec(mcp.headers),
                      MCPHeader(name: 'Authorization', value: 'Bearer ${meshagentProxyConfig.apiKey}'),
                    ]
                  : _headersFromEndpointSpec(mcp.headers),
              requireApproval: mcp.requireApproval,
              openaiConnectorId: mcp.openaiConnectorId,
            ),
            oauth: mcp.useProxySecret != null ? null : mcp.oauth,
          ),
        );
      }
    }
  }

  return connectors;
}