mcpConnectorsFromRoomServices function
List<Connector>
mcpConnectorsFromRoomServices({
- required Iterable<
ServiceSpec> services, - String? agentName,
- 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;
}