Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[bot] Anthropic Messages API: `container` and `mcp_servers` params not captured in span metadata

Abierto
#195 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
ruby

Línea de trabajo

Comienza en lib/braintrust/contrib/anthropic/instrumentation/messages.rb y beta_messages.rb revisando las constantes de metadatos indicadas y las rutas finalize_metadata, set_output y capture_beta_fields. Sigue cómo se ensamblan los metadatos de las solicitudes y las respuestas, y luego verifica que container y mcp_servers estén representados para los flujos estables, beta y relacionados con batch, sin exponer valores sensibles. La tarea estará terminada cuando los spans relevantes contengan los campos documentados y las comprobaciones de instrumentación existentes pasen.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

The official anthropic Ruby gem's Messages and Beta Messages APIs support two significant, currently-documented fields that this SDK's instrumentation silently drops from span metadata: container (code execution tool sandbox reuse) and mcp_servers (the MCP connector, which lets Claude call tools on remote MCP servers directly during generation). Both directly affect what happens during model execution — which tools were actually available/reused, which sandbox state persisted across turns — yet neither appears in any span this SDK produces.

What is missing

  • mcp_servers (request param, beta Messages API): configures remote MCP servers Claude can call tools on mid-generation. Official Ruby example from Anthropic's own docs:

    client.beta.messages.create(
      model: "claude-opus-4-8",
      max_tokens: 1000,
      messages: [...],
      mcp_servers: [{type: "url", url: "...", name: "example-mcp", authorization_token: "..."}],
      tools: [{type: "mcp_toolset", mcp_server_name: "example-mcp"}],
      betas: ["mcp-client-2025-11-20"]
    )
    

    Also usable inside Message Batches requests.

  • container (request param + response field, both stable and beta Messages APIs): identifies/reuses the sandboxed code-execution container across requests so state (e.g. Python variable bindings) persists. Documented on Anthropic::Models::Message in the official Ruby SDK docs as "Information about the container used in the request (for the code execution tool)."

Neither field is in METADATA_FIELDS (lib/braintrust/contrib/anthropic/instrumentation/messages.rb:25-28) or BETA_METADATA_FIELDS/METADATA_FIELDS (lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb:29-37), and finalize_metadata/set_output in both files never read response.container. So a user running a code-execution or MCP-connector workflow through this SDK gets a Braintrust trace with no record of which container was reused or which MCP servers/tools were actually wired up — a debugging-critical omission for exactly the kind of agentic tool-execution traces Braintrust is meant to surface.

Braintrust docs status

not_found for Ruby — https://www.braintrust.dev/docs/integrations/ai-providers/anthropic does not mention container or mcp_servers anywhere in the Ruby-specific section. Notably, the Go section of the same page explicitly lists both as captured request parameters ("each span captures ... container, mcp_servers ..."), showing Braintrust already treats these as first-class fields for another language SDK — Ruby is the outlier.

Upstream sources

Local repo files inspected

  • lib/braintrust/contrib/anthropic/instrumentation/messages.rb — METADATA_FIELDS (lines 25-28) and finalize_metadata (lines 141-146) omit container; no mcp_servers handling anywhere
  • lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb — METADATA_FIELDS/BETA_METADATA_FIELDS (lines 29-37) and capture_beta_fields (lines 146-166) capture only betas and output_format; no container or mcp_servers
  • lib/braintrust/contrib/anthropic/instrumentation/common.rb — token usage parser only; no incidental capture of container/mcp_servers
  • Grep for container, mcp_servers, mcp_server across lib/braintrust/ returns zero relevant matches (one unrelated hit in lib/braintrust/server/services/list_service.rb)
Lenguaje dominante
Ruby
Estrellas
9
Forks
11
Merge medio
2 d 3 h
PR fusionados (30 d)
5

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de braintrustdata/braintrust-sdk-ruby

Todos los issues de braintrustdata/braintrust-sdk-ruby

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.