Feature: surface MCP tool result _meta to the model/user

Resolved 💬 2 comments Opened Mar 9, 2026 by DanielPBak Closed Apr 6, 2026

Summary

When using MCP tools that return metadata in the _meta field of CallToolResult, Claude Code currently ignores it. It would be useful to have an option to surface _meta content (e.g., to the model context or displayed to the user).

Use case

When using MCP servers that proxy to backend APIs (e.g., gRPC, REST), it's valuable to include timing/performance metadata in tool results:

{
  "content": [{"type": "text", "text": "{...}"}],
  "_meta": {
    "duration_ms": 142
  }
}

This is already supported by the MCP spec — Result._meta is a reserved field for clients and servers to attach additional metadata. But since Claude Code drops it, there's no way for MCP servers to communicate this information without hacking it into the text content itself.

Proposal

Add an option (e.g., a setting or flag) that controls whether _meta from MCP tool results is:

  1. Included in the model context — so the LLM can reason about metadata like latency, cache hits, etc.
  2. Displayed to the user — so the user can see performance or diagnostic info alongside tool output.

This could be off by default to avoid noise, but opt-in for power users doing performance investigation, debugging, or observability via MCP.

Examples

  • Measuring gRPC/REST endpoint latency through an MCP proxy server
  • Surfacing cache hit/miss info from a database MCP tool
  • Exposing rate limit headers or retry counts from API calls

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗