Skip to content

Support for sending GRPC headers to authenticate MCP server with remote OTEL serverΒ #411

@swcollard

Description

@swcollard

does the OTEL PR support sending GRPC headers to authenticate MCP server with the OTEL server. This is a requirement for NewRelic OTEL servers.

Here is an example from the Apollo Router config.yaml for OTEL headers plus tagging to help with the context of my question. This would is fairly generic for a NewRelic Operator running on Kubernetes with Apollo MCP deployment.

telemetry:
  instrumentation:
    spans:
      mode: spec_compliant
  exporters:
    tracing:
      common:
        parent_based_sampler: true
        # (Optional) Set the service name to easily find metrics related to the apollo-router in your metrics dashboards
        service_name: "${env.NEW_RELIC_APP_NAME}"
        resource:
          environment.cluster_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME}"
          environment.container_image_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CONTAINER_IMAGE_NAME}"
          environment.container_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME}"
          environment.namespace: "${env.NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME}"
          environment.node_name: "${env.NEW_RELIC_METADATA_KUBERNETES_NODE_NAME}"
          environment.pod_name: "${env.NEW_RELIC_METADATA_KUBERNETES_POD_NAME}"
          # (Optional) Set the service name to easily find metrics related to the apollo-router in your metrics dashboards
          service.name: "${env.NEW_RELIC_APP_NAME}"
      otlp:
        enabled: true
        # Temporality MUST be set to delta. Failure to do this will result in incorrect metrics.
        temporality: delta
        # Endpoint for your region.
        endpoint: https://otlp.nr-data.net
        protocol: grpc
        grpc:
          metadata:
            "api-key":
              - "${env.NEW_RELIC_API_KEY}"
      propagation:
        trace_context: true
    metrics:
      common:
        # (Optional) Set the service name to easily find metrics related to the apollo-router in your metrics dashboards
        service_name: "${env.NEW_RELIC_APP_NAME}"
        resource:
          environment.cluster_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME}"
          environment.container_image_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CONTAINER_IMAGE_NAME}"
          environment.container_name: "${env.NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME}"
          environment.namespace: "${env.NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME}"
          environment.node_name: "${env.NEW_RELIC_METADATA_KUBERNETES_NODE_NAME}"
          environment.pod_name: "${env.NEW_RELIC_METADATA_KUBERNETES_POD_NAME}"
          # (Optional) Set the service name to easily find metrics related to the apollo-router in your metrics dashboards
          service.name: "${env.NEW_RELIC_APP_NAME}"
      otlp:
        enabled: true
        # Temporality MUST be set to delta. Failure to do this will result in incorrect metrics.
        temporality: delta
        # Endpoint for your region.
        endpoint: https://otlp.nr-data.net:4317/v1/metrics
        protocol: grpc
        grpc:
          metadata:
            "api-key":
              - "${env.NEW_RELIC_API_KEY}"

Originally posted by @JustinMGaiam in #199

Moving this request to it's own issue for tracking independently. The Apollo MCP Server does not support a way to configure static HTTP headers or gRPC metadata but needs to in order to support exporting metrics and traces to a remote OTel Collector such as New Relic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions